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

# Error codes

> Every errorCode, its HTTP status, and whether to retry.

The HTTP status and `errorCode` are the contract. Messages are for humans and may change. "Retry" means an automatic retry after a short back-off may succeed. The envelope itself is described in [Conventions](https://developers.ttool.travel/reference/conventions.md#responses).

| `errorCode` | HTTP | Category | Retry | Meaning |
| - | - | - | - | - |
| `INVALID_REQUEST_FORMAT` | 400 | Validation | No | Request failed validation. See `errorDetails`. |
| `INVALID_COUNTRY_CODE` | 400 | Validation | No | Unknown country code in contact or passengers (`errorDetails.unknownCountryCodes`) |
| `HOLD_NOT_SUPPORTED` | 400 | Validation | No | `holdOnly` sent for an offer that can't be held |
| `INVALID_CREDENTIALS` | 401 | Authentication | No | Wrong username or password |
| `AUTHENTICATION_FAILED` | 401 | Authentication | No | Identity provider rejected the login |
| `USER_TOKEN_NOT_FOUND` | 401 | Authentication | No | Missing or unreadable bearer token |
| `WALLET_INSUFFICIENT_BALANCE` | 402 | Payment | No | Fund the wallet and call issue again |
| `WALLET_OPERATION_FAILED` | 402 | Payment | No | Payment couldn't be confirmed |
| `PAYMENT_CONFIRMATION_FAILED` | 402 | Payment | No | The wallet refused the payment after the seats were booked (`errorDetails.walletMessage` says why). Check the order status and contact support. |
| `ACCOUNT_DISABLED` | 403 | Authentication | No | API user disabled |
| `UNAUTHORIZED_ACCESS` | 403 | Authentication | No | API user not linked to an agency, or lacks permission |
| `FLIGHT_PROPOSAL_NOT_FOUND` | 404 | NotFound | No | Offer or search expired or unknown. Search again. |
| `FARE_BRANDS_NOT_AVAILABLE` | 404 | NotFound | No | No fare families for this offer |
| `ORDER_NOT_FOUND` | 404 | NotFound | No | Unknown order, or not owned by your agency |
| `FLIGHT_NO_LONGER_AVAILABLE` | 409 | Conflict | No | Offer couldn't be submitted. Search again. |
| `FLIGHT_PRICE_CHANGED` | 409 | Conflict | No | Price changed at hold or issue time; nothing charged. Search again and confirm the new price. |
| `CHANGE_PROPOSAL_OPTIONS_FAILED` | 409 | Conflict | No | Fare brand couldn't be applied; the offer expired |
| `HOLD_EXPIRED` | 409 | Conflict | No | The hold ended (expired or released). Search and book again. |
| `ORDER_NOT_ON_HOLD` | 409 | Conflict | No | cancel-hold on an order that isn't on hold |
| `BOOKING_CONFLICT` | 409 | Conflict | No | Generic conflict from a provider |
| `RATE_LIMIT_EXCEEDED` | 429 | RateLimit | Yes | Slow down. See [Rate limits](https://developers.ttool.travel/reference/rate-limits.md). |
| `INTERNAL_SERVER_ERROR` | 500 | System | No | Unexpected failure. Contact support with the correlation id. |
| `CONFIGURATION_ERROR` | 500 | System | No | Platform misconfiguration. Contact support. |
| `SUBMIT_ORDER_FAILED`, `RESERVATION_FAILED` | 502 | Provider | No | Provider refused the booking. The message says why. |
| `HOLD_FAILED` | 502 | Provider | No | The airline refused to hold the booking; no PNR exists |
| `HOLD_CANCEL_FAILED` | 502 | Provider | Yes | The airline didn't confirm the release of the hold |
| `FLIGHT_SEARCH_SERVICE_UNAVAILABLE`, `FLIGHT_DETAILS_SERVICE_UNAVAILABLE`, `FARE_BRANDS_SERVICE_UNAVAILABLE`, `CONFIGURATION_SERVICE_UNAVAILABLE` | 502 | Provider | Yes | A platform service failed the call |
| `SERVICE_UNAVAILABLE` | 503 / 502 | System | Yes | A platform service is temporarily unavailable |
| `FLIGHT_SEARCH_TIMEOUT`, `PROVIDER_TIMEOUT` | 504 | Timeout | Yes | The operation timed out |
| `ISSUANCE_TIMEOUT` | 504 | Timeout | Yes | Payment confirmed, ticketing still running. Call issue again. |

> [!WARNING]
>
> Never retry create order automatically, even for retryable codes: each call makes a new order. Check the [order status](https://developers.ttool.travel/api-reference/get-order.md) first. See [Booking and ticketing](https://developers.ttool.travel/guides/booking-and-ticketing.md#money-safety).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.