Error codes
When a request fails, the Servicing API returns an Error object. The same structure is
also used for Warning objects. A warning does not fail the request — it is returned
alongside an otherwise successful response — but it is not merely informational: some
warnings are significant and require your attention, so always check any warnings returned
with a response. See Warnings below.
Branch on the code, not the message
Themessage field is free text and can change between releases. Always make decisions
based on the code value. Treat message and shortText as display/diagnostic text only.Response structure
| Field | Type | Description |
|---|---|---|
code | string | The error/warning code, for example S4000. Always one of the values listed below. |
shortText | string | Optional brief, human-readable summary. May be omitted. |
message | string | Human-readable detail. May be specific (for example, which field was invalid) or a generic message — see About the message field. |
Example error response body:
{
"code": "S6004",
"shortText": "Price changed",
"message": "The price of your order has changed. Please check the final price and items."
}
Warnings
A Warning has the same structure as an Error (code, shortText, message) and uses
the same code set described below. Warnings are returned alongside an otherwise successful
response, in the response’s warnings. They do not fail the request, but some carry
information the customer needs to see or act on before continuing.
Examples currently returned:
- A price change on a successful reprice/reshop — code
S6004, messageThe price of your order has changed. Please check the final price and items.Review the final price and items before continuing. - Supplier advisories passed straight through — code
S6000, with the supplier’s reference inshortTextand the supplier’s advisory text inmessage. Wording originates from the airline/supplier.
Treat warnings with the same care as errors: read the code, and surface or act on anything
that affects the customer.
Code groups
Every code belongs to one of three groups, identified by the first digit after the S
prefix.
| Group | Meaning | Who should act |
|---|---|---|
| S4xxx | API misuse — the request was invalid, unauthorized, or asked for something unsupported. | You — correct the request and resubmit. |
| S5xxx | System error — something went wrong inside the Servicing platform. | Us — generally not resolved by changing the request. |
| S6xxx | Supplier error — an error returned by the downstream airline/supplier, mapped into our model. | Depends on the case; often not resolvable by retry. |
Code reference
| Code | Group | HTTP status | When you’ll see it |
|---|---|---|---|
S4000 | API misuse | 400 Bad Request | The request failed validation — a required field is missing, malformed, or inconsistent. |
S4001 | API misuse | 401 Unauthorized | You are not authenticated or authorized for the requested resource or account. |
S4004 | API misuse | 404 Not Found | Returned when a referenced resource (for example an order or operation) cannot be found. Uncommon today — many missing-reference cases are currently reported as S4000 — but it may be returned for not-found conditions. |
S4010 | API misuse | 400 Bad Request | The operation is valid in general but not supported for this supplier or in the booking’s current state. |
S5000 | System | 500 Internal Server Error | An unexpected error on our side. Not caused by the request content. |
S5010 | System | 500 Internal Server Error | The order could not be updated because another change was being processed at the same time. Check the order’s current state before taking any further action. |
S6000 | Supplier | 422 Unprocessable Entity | The supplier returned an error that does not map to a more specific code. Supplier detail is passed through in message. |
S6001 | Supplier | 409 Conflict | The underlying booking has been cancelled at the supplier and is no longer actionable. |
S6002 | Supplier | 422 Unprocessable Entity | The supplier rejected an ancillary (extras/add-on) selection — for example, no services are available or the ancillary is already selected. |
S6003 | Supplier | 422 Unprocessable Entity | The supplier rejected a seat selection — for example, seat selection is restricted for the booking. |
S6004 | Supplier | 409 Conflict | The held price is no longer valid and the order must be repriced before proceeding. |
The code list may grow
These are the codes the API returns today. The list is not final and may be extended in future as new conditions are mapped. Build clients to handle unrecognised codes gracefully: rely on the HTTP status and the leading group digit (S4xxx / S5xxx / S6xxx) rather than
on an exact match, and treat any code you don’t recognise as a generic error of its group.About the message field
The message text is not a fixed catalogue — it is generated when the error occurs, so a
single code may carry many different messages. There are two kinds:
- Specific messages describe what went wrong and are safe to display to end users. Most
S4xxxandS6xxxmessages are of this kind. - General messages. For unexpected system errors, a general message is returned rather
than specific detail. Most
S5000responses are of this kind.
Example messages by code
The messages below are taken from the service’s customer-facing error definitions. Dynamic
values are shown in {braces}.
S4000 — Invalid request
Reservation not found! Make sure BookingNumber entered correctly.No booking could be found for the reference details supplied or you do not have the privileges to view this booking.Only full cancellations are allowed. For partial cancellations, please contact the contact centre.Unable to change both the date and the route of your booking at the same time.Missing header value for: {header}
S4001 — Unauthorized access
User provided doesn't have access to this order
S4004 — Not found
No fixed message is published for this code. It may be returned for not-found conditions —
for example, a referenced order or operation that cannot be located. Many such cases are
currently reported as S4000 instead.
S4010 — Unsupported operation
The message is configuration-driven per supplier, so the exact wording varies. Examples:
This booking is not eligible for online change or upgrade. Please contact BA helpdeskReshop not allowed for the requested order. Please contact BA helpdeskAll Flight Segments in Itinerary are flown.
S5000 — Generic error
For unexpected system errors, a general message is returned rather than specific detail. Some supplier-mapped cases return a more specific, customer-friendly message, for example:
We can not change your booking.
S5010 — Transactional error
No customer-facing example is published for this code. It is uncommon. Do not blindly resend the request — check the order’s current state first, as the original operation may already have taken effect.
S6000 — Generic supplier error
Payment failed. Please check the card details.Cannot cancel flight. It is either flown or about to fly.Flight is not available. It is either flown or about to fly.Refund has already been requested for the booking.We couldn't find a valid route for your selection. Please try a different origin or destination.Passenger name cannot be changed for flights that have already departed or are departing within the next two hours.When no specific message applies, a default of
Response contains errors from supplieris used, with any supplier-provided detail inmessage.
S6001 — Supplier booking cancelled
This order has been cancelled and is no longer validBooking is cancelledBooking has been cancelled
S6002 — Ancillary selection error
No services available for this booking
S6003 — Seat selection error
Seat selection is restricted - Please request seat at check-in
S6004 — Price guarantee expired
The price of your order has changed. Please check the final price and items.