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

StatusCodeDescription
400bad_requestThe request body is invalid or missing required fields.
401unauthorizedMissing or invalid API key.
403forbiddenYour plan does not include API access, or the key lacks the required permission.
404not_foundThe requested resource does not exist.
429rate_limitedYou have exceeded the rate limit. Wait and retry.
500internal_errorAn 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."
  }
}