Skip to content

Developers

TravelCore API documentation

Written for the person who will actually integrate this, including the parts that will go wrong. The hotel surface is in design-partner preview; the rest is documented so you can design against it before it exists.

Errors

A stable machine code, a human message, and a request id worth quoting.

Every error carries a stable code you can branch on, a message written for a human reading a log, and a requestId. The message text may change; the code will not.

422 Unprocessable Entity
{
"error": {
"code": "rate_no_longer_available",
"message": "The supplier withdrew this rate between search and booking.",
"requestId": "req_01JQ8YC7T1V4",
"supplierId": "sup_alpha",
"retryable": false,
"details": {
"rateId": "rt_01JQ8Y3M9F",
"suggestedAction": "re_search"
}
}
}
StatusCodeWhat it means
400invalid_requestThe body failed validation. details names the fields.
401invalid_tokenToken missing, malformed or expired. Get a new one.
403insufficient_scopeThe token is valid but not authorised for this call.
404not_foundThe resource does not exist for this tenant.
409booking_conflictA conflicting operation is in flight for this booking.
422rate_no_longer_availableThe supplier withdrew the rate. Re-search.
422price_changedThe supplier repriced. The new price is in details.
422idempotency_key_reuseThe key was used with a different body.
429rate_limitedToo many requests. Retry-After tells you when.
502supplier_errorThe supplier returned an error we could not interpret.
504supplier_timeoutThe supplier missed its budget. On writes, treat as unknown and retry with the same key.
Note:supplier_timeout on a write is the one error you must not treat as a failure. The reservation may exist. Retry with the same idempotency key, and if that still does not resolve, query by your clientReference.