Errors
The API uses standard HTTP status codes and returns structured error responses.
Error Response Format
All error responses follow a consistent format with a code and a human-readable message.
{
"error": {
"code": "not_found",
"message": "The requested resource was not found."
}
}Error Codes
| Status | Code | Description |
|---|---|---|
| 400 | bad_request | The request body is invalid or missing required fields. |
| 401 | unauthorized | Missing or invalid API key. |
| 403 | forbidden | Your plan does not include API access, or the key lacks the required permission. |
| 404 | not_found | The requested resource does not exist. |
| 429 | rate_limited | You have exceeded the rate limit. Wait and retry. |
| 500 | internal_error | An unexpected error occurred on our end. Please retry or contact support. |
Example Responses
400 Bad Request
400 Bad Request
{
"error": {
"code": "bad_request",
"message": "The 'title' field is required."
}
}401 Unauthorized
401 Unauthorized
{
"error": {
"code": "unauthorized",
"message": "Missing or invalid Authorization header."
}
}403 Forbidden
403 Forbidden
{
"error": {
"code": "forbidden",
"message": "Your current plan does not include API access. Upgrade to Pro to use the API."
}
}404 Not Found
404 Not Found
{
"error": {
"code": "not_found",
"message": "The requested resource was not found."
}
}429 Rate Limited
429 Too Many Requests
{
"error": {
"code": "rate_limited",
"message": "Too many requests. Please wait before retrying.",
"retry_after": 32
}
}500 Internal Error
500 Internal Server Error
{
"error": {
"code": "internal_error",
"message": "An unexpected error occurred. Please try again later."
}
}