Errors
Response format
All errors return a JSON body:
{
"error": {
"code": "validation_failed",
"message": "The given data was invalid.",
"details": {
"email": ["The email has already been taken."]
}
},
"request_id": "req_01HXXXXXX"
}
Always include the request_id when contacting support about an error.
HTTP Status Codes
| Status | Meaning |
|---|---|
200 OK | Success |
201 Created | Resource created |
400 Bad Request | Malformed request |
401 Unauthorized | Missing or invalid token |
403 Forbidden | Valid token but insufficient permissions |
404 Not Found | Resource not found |
409 Conflict | Conflict (e.g. email already taken) |
422 Unprocessable Entity | Validation failed |
429 Too Many Requests | Rate limit exceeded |
500 Internal Server Error | Server-side error |
Error codes
| Code | Description |
|---|---|
validation_failed | Request body failed validation |
unauthorized | Token missing or expired |
forbidden | Token lacks required scope |
not_found | Resource does not exist |
conflict | Unique constraint violation |
rate_limited | Too many requests |
internal_error | Unexpected server error |