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.
Response Format
{
"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:
{
"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
| code | status_id | HTTP Status | Description |
|---|---|---|---|
OK | 0 | 200 | Not an error; returned on success. |
CANCELLED | 1 | 499 | The operation was cancelled, typically by the caller. |
UNKNOWN | 2 | 500 | Unknown error. |
INVALID_ARGUMENT | 3 | 400 | The client specified an invalid argument. |
DEADLINE_EXCEEDED | 4 | 504 | The deadline expired before the operation could complete. |
NOT_FOUND | 5 | 404 | Some requested entity was not found. |
ALREADY_EXISTS | 6 | 409 | The entity that a client attempted to create already exists. |
PERMISSION_DENIED | 7 | 403 | The caller does not have permission to execute the specified operation. |
RESOURCE_EXHAUSTED | 8 | 429 | Some resource has been exhausted, perhaps a per-user quota. |
FAILED_PRECONDITION | 9 | 400 | The system is not in a state required for the operation's execution. |
ABORTED | 10 | 409 | The operation was aborted, typically due to a concurrency issue. |
OUT_OF_RANGE | 11 | 400 | The operation was attempted past the valid range. |
UNIMPLEMENTED | 12 | 501 | The operation is not implemented or not supported. |
INTERNAL | 13 | 500 | Internal error. |
UNAVAILABLE | 14 | 503 | The service is currently unavailable. |
DATA_LOSS | 15 | 500 | Unrecoverable data loss or corruption. |
UNAUTHENTICATED | 16 | 401 | The request does not have valid authentication credentials. |