success first. If it is false, read error for a description of what went wrong. The HTTP status code tells you the category of the problem.
Status codes
200 OK — Success
200 OK — Success
The request was processed successfully. The response body contains the requested data or a confirmation message.No action required.
400 Bad Request — Invalid parameters
400 Bad Request — Invalid parameters
The request was malformed. This usually means a required field is missing, a value is the wrong type, or a parameter is out of the accepted range.What to do: Check your request body and query parameters against the endpoint documentation. Ensure required fields are present and that values match the expected types (e.g., integers for IDs, valid ISO dates for date fields).
401 Unauthorized — Not authenticated
401 Unauthorized — Not authenticated
403 Forbidden — Insufficient permissions
403 Forbidden — Insufficient permissions
The request was authenticated, but your account does not have the permission required to access this endpoint.What to do: Call
GET /api/users/permissions to see which permissions are assigned to your account. Ask your PropOps administrator to grant the missing permission to your role. Each endpoint requires a specific permission key in dot-notation (e.g., api.jobs.manage.manage).404 Not Found — Resource does not exist
404 Not Found — Resource does not exist
The requested resource could not be found. This means the record with the given ID does not exist, has been deleted, or belongs to a different tenant.What to do: Verify the ID or identifier you are using is correct. If you received the ID from a previous API call, the record may have been deleted since then.
429 Too Many Requests — Rate limit exceeded
429 Too Many Requests — Rate limit exceeded
You have sent too many requests in a short period. The API enforces per-IP and per-account rate limits on all endpoints.What to do: Read the
If your integration legitimately requires a higher rate limit, contact your PropOps administrator — per-endpoint limits are configurable in Admin → Rate Limiting.
Retry-After header to find out how many seconds to wait before retrying. Implement exponential backoff in your client to avoid repeated 429 responses. Monitor X-RateLimit-Remaining on each response to slow down before the limit is reached.| Header | Value |
|---|---|
Retry-After | Seconds until you can retry |
X-RateLimit-Limit | Total requests allowed per window |
X-RateLimit-Remaining | Requests remaining in the current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
500 Internal Server Error — Server-side error
500 Internal Server Error — Server-side error
An unexpected error occurred on the server. This is not caused by your request.What to do: Retry the request after a short delay. If the error persists, check the PropOps system status at
GET /api/system/status or contact PropOps support at support@propops.co.uk.Quick reference
| Status | Meaning | Action |
|---|---|---|
200 | Success | Read data |
400 | Bad request | Fix request parameters |
401 | Not authenticated | Re-authenticate |
403 | No permission | Request permission from administrator |
404 | Not found | Check the resource ID |
429 | Rate limited | Wait for Retry-After seconds |
500 | Server error | Retry; contact support if persistent |