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
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. |
POST /json/v0/orders/ABC123/seats
Authorization: <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
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
{
"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
| 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. |
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. |