Error codes

Error and warning codes returned by the Servicing API, when you’ll see them, and example messages

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.

Response structure

FieldTypeDescription
codestringThe error/warning code, for example S4000. Always one of the values listed below.
shortTextstringOptional brief, human-readable summary. May be omitted.
messagestringHuman-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, message The 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 in shortText and the supplier’s advisory text in message. 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.

GroupMeaningWho should act
S4xxxAPI misuse — the request was invalid, unauthorized, or asked for something unsupported.You — correct the request and resubmit.
S5xxxSystem error — something went wrong inside the Servicing platform.Us — generally not resolved by changing the request.
S6xxxSupplier error — an error returned by the downstream airline/supplier, mapped into our model.Depends on the case; often not resolvable by retry.

Code reference

CodeGroupHTTP statusWhen you’ll see it
S4000API misuse400 Bad RequestThe request failed validation — a required field is missing, malformed, or inconsistent.
S4001API misuse401 UnauthorizedYou are not authenticated or authorized for the requested resource or account.
S4004API misuse404 Not FoundReturned 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.
S4010API misuse400 Bad RequestThe operation is valid in general but not supported for this supplier or in the booking’s current state.
S5000System500 Internal Server ErrorAn unexpected error on our side. Not caused by the request content.
S5010System500 Internal Server ErrorThe 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.
S6000Supplier422 Unprocessable EntityThe supplier returned an error that does not map to a more specific code. Supplier detail is passed through in message.
S6001Supplier409 ConflictThe underlying booking has been cancelled at the supplier and is no longer actionable.
S6002Supplier422 Unprocessable EntityThe supplier rejected an ancillary (extras/add-on) selection — for example, no services are available or the ancillary is already selected.
S6003Supplier422 Unprocessable EntityThe supplier rejected a seat selection — for example, seat selection is restricted for the booking.
S6004Supplier409 ConflictThe held price is no longer valid and the order must be repriced before proceeding.

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 S4xxx and S6xxx messages are of this kind.
  • General messages. For unexpected system errors, a general message is returned rather than specific detail. Most S5000 responses 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 helpdesk
  • Reshop not allowed for the requested order. Please contact BA helpdesk
  • All 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 supplier is used, with any supplier-provided detail in message.

S6001 — Supplier booking cancelled

  • This order has been cancelled and is no longer valid
  • Booking is cancelled
  • Booking 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.