# Errors A failed request returns an HTTP status and an error object. Handle it by error.code, not by message. ```json { "error": { "code": "invalid_request", "message": "The request contains an invalid field.", "retryable": false, "request_id": "request_example", "param": "query" } } ``` param names the invalid field. Quote request_id when you contact us. When retryable is true, wait for Retry-After and send the request again. ## Error codes | Code | Status | Retryable | Meaning | | --- | --- | --- | --- | | `invalid_request` | 400 | false | Invalid input or unknown field. | | `content_blocked` | 400 | false | Moderation rejected the content. | | `unauthorized` | 401 | false | Missing or invalid API key. | | `registration_required` | 403 | false | Complete registration first. | | `account_deletion_pending` | 403 | false | Account deletion is pending. | | `not_found` | 404 | false | Unknown resource or public API path. | | `method_not_allowed` | 405 | false | Unsupported HTTP method. | | `run_not_cancellable` | 409 | false | The Run cannot be cancelled. | | `source_not_available` | 422 | false | The source is unavailable. | | `page_not_found` | 422 | false | The page's site answered 404 or 410. | | `rate_limit_exceeded` | 429 | true | Request rate limit exceeded. | | `daily_credits_exhausted` | 429 | false | The daily credit allowance cannot admit this operation. | | `weekly_credits_exhausted` | 429 | false | The weekly credit allowance cannot admit this operation. | | `outstanding_run_limit` | 429 | false | Too many outstanding Runs. | | `request_cancelled` | 499 | false | The caller cancelled the request or disconnected. | | `internal_error` | 500 | true | Unexpected server failure. | | `temporarily_unavailable` | 503 | true | Service temporarily unavailable. |