## HTTP Status Codes | Status | Meaning | Common recovery | | --- | --- | --- | | `400` | Bad request | Check the request body and required fields | | `401` | Unauthorized | Add or rotate the bearer token/API key | | `403` | Forbidden | Use a key with the right scope | | `404` | Not found | Confirm the route and resource ID | | `409` | Conflict | Check for duplicate names or already-bound resources | | `429` | Rate limited | Back off and retry later | | `500` | Server error | Retry with backoff; report persistent failures | ## Error Body Most Django REST Framework errors include a `detail` field: ```json { "detail": "Authentication credentials were not provided." } ``` Validation errors may be field-shaped: ```json { "name": ["This field is required."] } ``` ## Route Checks If a request returns `404`, confirm the endpoint in [API Endpoints](/api/endpoints/) or the generated OpenAPI document: ```text https://docs.ravi.app/openapi.json ``` API calls should use `https://api.ravi.app`. Documentation and machine-readable reference files are served from `https://docs.ravi.app`. ## See Also - [Troubleshooting](/getting-started/troubleshooting/) - [API Overview](/api/overview/) - [API Endpoints](/api/endpoints/)