Errors
The travel API uses two error shapes. The flight, hotel, and common endpoints report failures in the response body. The activity endpoints use standard HTTP status codes.
Session API errors
Flight, hotel, common, and authentication endpoints usually return HTTP 200 even when the operation fails. Read the Success field, not the status code. On failure, Success is false and Error holds an id and a message.
{
"Success": false,
"Error": {
"Id": "Err0102005",
"Message": "Fare has expired or is no longer available. Please search again."
}
}
Authentication
| Code | Meaning | Fix |
Err0101001 | Missing or invalid session. | Create a new session. |
Err0101002 | Session expired. | Create a new session. |
Err0101003 | Wrong username or password. | Check the credentials for that office. |
Err0101004 | The user cannot access that office. | Use an office the user belongs to. |
Err0101005 | The account is not verified. | Contact your account manager. |
Err0101006 | The office lacks permission for the endpoint. | Ask to enable that permission. |
Requests and validation
| Code | Meaning | Fix |
Err0106001 | Bad request. A field is missing or invalid. The message names it. | Fix the field named in the message. |
Err0106002 | A required field or one-of pair is missing, for example UniqueId or ClientUniqueId. | Send at least one of the required fields. |
Err0201001 | Invalid hotel request. | Follow the message. |
Err0201003 | Invalid hotel request, for example not exactly one of CityId or HotelId. | Send exactly one of the two. |
Fares and search
| Code | Meaning | Fix |
Err0102002 | Invalid FareSourceCode. | Use a code from the latest search. |
Err0102003 | The fare is no longer available. | Search again and pick a fresh fare. |
Err0102004 | Revalidation is required before booking. | Call revalidate first, then book. |
Err0102005 | The fare has expired. | Search again. |
Err0102010 | SearchId is required. | Send the SearchId from the search response. |
Err0102011 | Search not found or access denied. | Re-run the search. |
Bookings
| Code | Meaning | Fix |
Err0103003 | Flight booking not found. | Check the UniqueId. |
Err0103004 | The booking cannot be cancelled in its current state. | For a ticketed booking, use refund instead. |
Err0103005 | The booking is already cancelled. | No action needed. |
Err0103006 | The booking is not in the required state for this action. | Read the booking status first. |
Err0103007 | This user may not perform the action. | Only the booking owner or an admin can do it. |
Err0103008 | The booking was already processed. | No action needed. |
Err0103009 | The booking is not in an actionable state. | Re-check status, or search again. |
Err0103010 | The inventory source rejected the booking, or it is not refundable. | Retry, or search again. |
Err0103011 | The source did not return a booking reference. | Retry the request. |
Err0103012 | Wrong booking type for this endpoint. | Use the endpoint that matches the booking. |
Err0103013 | The activity booking was already submitted. | No action needed. |
Err0104002 | Hotel booking not found. | Check the UniqueId. |
Err0104003 | The payment deadline cannot be extended for this booking. | The booking is not in an extendable state. |
Upstream
| Code | Meaning | Fix |
Err0500001 | An upstream data source is not configured. | Contact support. |
Err0500002 | The upstream request failed. | Retry. |
Err0500003 | The upstream source returned no data. | Retry, or adjust your inputs. |
Err0000 | Generic upstream or gateway failure. | Retry. If it persists, contact support. |
Activity errors
Activity endpoints under Activity/v2/ use the real HTTP status code and return an error object.
{
"error": {
"code": "not_found",
"message": "Listing was not found or expired, provided UUID: d3bfa3e1-e",
"http_code": 404
},
"timestamp": "2026-10-15T16:43:33.184+08:00"
}
| Status | Meaning |
200 | Success. The body holds the resource or list. |
400 | Malformed request or invalid parameters. |
401 | Missing or expired SessionId. |
403 | Your office lacks permission for the operation. |
404 | The resource or UUID does not exist. |
422 | Validation failed, for example an unavailable date. |
5xx | Gateway or inventory source error. |
Handle errors well
Two rules cover most cases. On the session API, branch on Success before you read the payload. When a session error appears (Err0101001 or Err0101002), re-authenticate and retry once.
Fares are short lived. If booking returns Err0102003 or Err0102005, the price moved. Search again, revalidate, and show the traveller the new fare before you charge them.