> ## Documentation Index
> Fetch the complete documentation index at: https://docs.quoindata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Errors

Errors use the standard envelope with `status: "error"` and `data: null`. `error.retryable` tells you whether the same request may succeed later.

| HTTP | `error.code`                                                               | Meaning                                                                                      |
| ---- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| 400  | `invalid_request`                                                          | Request failed validation; `error.details.fieldErrors` names the fields                      |
| 400  | `malformed_input`, `malformed_request`                                     | Body or query could not be interpreted                                                       |
| 400  | `invalid_cursor`, `cursor_mismatch`, `cursor_expired`                      | Cursor is not usable with this request                                                       |
| 401  | `unauthorized`, `invalid_key`                                              | Missing, malformed or revoked key                                                            |
| 402  | `insufficient_balance`                                                     | Save a payment method in the portal to continue                                              |
| 403  | `wrong_scope`, `not_entitled`, `no_active_tenant`, `organization_required` | Key or account cannot use this operation                                                     |
| 404  | `not_found`                                                                | Reference does not exist in the current publication                                          |
| 404  | `unknown_resource`                                                         | Path is not one of the eight operations                                                      |
| 409  | `request_replayed`                                                         | Request completed, but its saved response expired or was never retained; no second charge    |
| 409  | `request_id_mismatch`                                                      | Same key reused for a different operation or caller                                          |
| 409  | `cursor_generation_changed`                                                | Data was republished between pages; restart                                                  |
| 413  | `request_too_large`                                                        | Body over 256 KiB                                                                            |
| 422  | `unsupported_filter`                                                       | Filter not allowed on this facet or operation                                                |
| 422  | `unavailable`                                                              | Reserved control used, for example `projection: "fact_summary"`                              |
| 429  | `rate_limited`                                                             | Over 6,000 requests per 60 s; honor `retry_after_seconds`                                    |
| 503  | `query_timeout`                                                            | Exceeded the 12 s deadline; not charged; retryable                                           |
| 503  | `database_unavailable`, `service_unavailable`, `contract_unavailable`      | Transient Quoin failure; not charged; retryable                                              |
| 503  | `usage_accounting_unavailable`                                             | Billing could not be recorded, so the request was declined rather than miscounted; retryable |

Example validation error:

```json theme={null}
{
  "status": "error",
  "error": {
    "code": "invalid_request",
    "message": "Check the supplied values.",
    "retryable": false,
    "details": { "formErrors": [], "fieldErrors": { "sort": ["address sort requires an address filter"] } }
  }
}
```
