--- title: Errors sidebar_label: Errors description: Standard error codes and response format for the Partner APIs. --- # Errors All Partner APIs return errors in a consistent JSON envelope. Every error response includes a machine-readable code, a human-readable message, and a link to this documentation. For examples of catching API and network failures, see [Error Handling][error-handling]. import ErrorReferenceViewer from '_core/components/ErrorReferenceViewer'; ## Response Format ```json { "error": { "status_id": 3, "code": "INVALID_ARGUMENT", "message": "Invalid argument.", "fields": [ { "name": "message", "descriptions": [ "value is not a valid email address: An email address must have an @-sign." ] } ], "doc_url": "https://noon-docs.noonpartners.dev/docs/overview/errors#invalid_argument" } } ``` Per-field detail lives in `fields` — each entry has a `name` (field path) and one or more `descriptions`. For validation errors, `message` is a short summary derived from the error `code`; read `fields` for what went wrong. Errors with no field-level detail (for example an assertion failure) still include an empty `fields` array: ```json { "error": { "status_id": 3, "code": "INVALID_ARGUMENT", "message": "...", "fields": [], "doc_url": "https://noon-docs.noonpartners.dev/docs/overview/errors#invalid_argument" } } ``` ### Fields | Field | Type | Description | |-------|-------|---| | `status_id` | integer | Numeric error code matching the `code` name | | `code` | string | One of the error codes listed below | | `message` | string | Human-readable description of the error | | `fields` | object[] | Affected input fields; empty array when there is no per-field detail. Each entry has `name` (field path) and `descriptions` (one or more issues for that field) | | `doc_url` | string | Link to the relevant section of this page | ### Response Headers Rate-limit headers are returned on **both successful and error** responses when rate limiting applies: | Header | Description | |--------|---| | `X-Request-Id` | Unique identifier for this request — include in support tickets | | `X-Ratelimit-Remaining` | Remaining requests in the current window | | `X-Ratelimit-Burst-Remaining` | Remaining burst requests | | `X-Ratelimit-Retry-After` | Seconds until the rate limit resets (only present when rate limited) | ## Error Codes