Order ancillaries
Seat availability and the ancillary service list for an existing booking:
POST /json/{version}/orders/{orderId}/seats: seat maps with per-seat pricing.POST /json/{version}/orders/{orderId}/services: purchasable services with per-passenger pricing.
For the same lookups against a cached offer before booking, see offer ancillaries. Purchased items are added to the order with change order AcceptOffer instructions.
Read-only API keys can use these endpoints; full transaction permissions are not required.
Request
Section titled “Request”orderId in the path is the order ID or record locator (PNR). The body is optional; when omitted, availability covers the whole order:
| Field | Description |
|---|---|
orderItemIds | Optional order items (from order retrieve order.items[].itemId) to scope the lookup. |
passengers | Optional passenger scope: paxId (from the retrieved order, required per entry) and type. Lap infants (INF) are excluded from seat and service scoping and may be omitted; sending only infant passengers returns ERR-1004. |
POST /json/v0/orders/ABC123/seatsAuthorization: <bearer token from /auth/token>Content-Type: application/json
{ "orderItemIds": [ "OOI-FL-eyJ2IjoxfQ" ], "passengers": [ { "paxId": "PX1", "type": "ADT" } ]}For the service list, replace /seats with /services; the body is identical.
Seats response
Section titled “Seats response”Same shape as offer ancillaries: data.legSeatMaps → decks[] → compartments[] → units[] with availability states and passengerPricing.
{ "data": { "legSeatMaps": [ { "departureStation": "SLC", "arrivalStation": "CHS", "equipmentType": "220", "segmentRefId": "SEG1", "decks": [ { "number": 1, "compartments": [ { "designator": "Y", "units": [ { "designator": "10A", "assignable": true, "availability": "Open", "group": "3", "properties": [ "WINDOW" ], "passengerPricing": [ { "offerItemId": "OOI-FL-eyJ2IjoxfQ", "paxRefId": "PX1", "passengerType": "ADT", "amount": 25, "currency": "USD", "taxAmount": 0 } ] }, { "designator": "10B", "assignable": false, "availability": "Reserved", "group": "3", "properties": [ "MIDDLE" ] } ] } ] } ] } ] }, "error": null}Services response
Section titled “Services response”{ "data": { "services": [ { "ssrCode": "BAG1", "name": "First checked bag", "type": "Baggage", "feeCode": "BAG", "segmentAvailability": [ { "scope": "journey", "journeyRefId": "JK1", "passengerPricing": [ { "offerItemId": "OOI-FL-eyJ2IjoxfQ", "paxRefId": "PX1", "passengerType": "ADT", "amount": 35, "currency": "USD", "taxAmount": 0 } ] } ] } ] }, "error": null}Order ancillaries errors
Section titled “Order ancillaries errors”| Code | HTTP status | Cause |
|---|---|---|
ERR-1002 | 404 | Unsupported version segment in the path. |
ERR-1004 | 400 | Invalid field value: passenger ID contains the pipe delimiter, or all named passengers are lap infants. |
ERR-1005 | 422 | Request validation failed. |
ERR-4000 | 404 | Order not found. |
ERR-8000 | 401 | Missing or invalid API key or bearer token. |
ERR-8001 | 403 | API key not authorized for this request. |
ERR-8002 | 503 | Authentication store unavailable. |
ERR-9003 | 500 | Ancillary lookup failed upstream. |