Quote order
POST /json/{version}/orders/{orderId}/quote prices a reshop offer selected from reshop order and returns the change amounts plus the priced offer. It is the JSON counterpart of the NDC IATA_OrderQuoteRQ.
Offers returned by offer search must be priced with price offer instead. To commit the quoted change, call change order with AcceptReshopOffer.
Authorization
Quote order requires full transaction (book) permissions on the API key.
Request
| Field | Description |
|---|---|
offerId | Reshop offer ID from reshop order. |
offerItemIds | Offer items to quote. Must be unique. |
passengers | Passengers in scope: paxId (required) and type. |
POST /json/v0/orders/ABC123/quote
Authorization: <bearer token from /auth/token>
Content-Type: application/json
{
"offerId": "OF-8c1e2f04-9d21-4b7a-b3c2-77c101f1a001",
"offerItemIds": [
"OFI-8c1e2f04-9d21-4b7a-b3c2-77c101f1a001-0"
],
"passengers": [
{
"paxId": "PAX-eyJ2IjoxfQ",
"type": "ADT"
}
]
}
Response
data.priceDifferential summarizes the balance change, and itemChangeQuotes breaks it down per offer item: oldTotal, newTotal, balanceDelta, and differentialTypeCode (AddCol — additional collection due, Refund, or EvenExchange). data.offer is the priced replacement offer with journeyRefIds into top-level journeys.
{
"data": {
"orderId": "ABC123",
"recordLocator": "ABC123",
"pax": [
{
"paxId": "PAX-eyJ2IjoxfQ",
"ptc": "ADT"
}
],
"priceDifferential": {
"offerItemId": "OFI-test-0",
"oldTotal": {
"amount": 200,
"currency": "USD"
},
"newTotal": {
"amount": 180,
"currency": "USD"
},
"balanceDelta": {
"amount": -20,
"currency": "USD"
},
"differentialTypeCode": "Refund"
},
"itemChangeQuotes": [
{
"offerItemId": "OFI-test-0",
"oldTotal": {
"amount": 200,
"currency": "USD"
},
"newTotal": {
"amount": 180,
"currency": "USD"
},
"balanceDelta": {
"amount": -20,
"currency": "USD"
},
"differentialTypeCode": "Refund"
}
],
"offer": {
"offerId": "OF-test",
"ownerCode": "MX",
"totalPrice": {
"total": {
"amount": 180,
"currency": "USD"
},
"base": {
"amount": 150,
"currency": "USD"
},
"taxes": [],
"fees": []
},
"items": [
{
"offerItemId": "OFI-test-0",
"journeyRefIds": [
"JK1"
],
"totalPrice": {
"total": {
"amount": 180,
"currency": "USD"
},
"base": {
"amount": 150,
"currency": "USD"
},
"taxes": [],
"fees": []
},
"fare": {}
}
]
},
"journeys": [
{
"journeyId": "JK1",
"origin": "SLC",
"destination": "CHS",
"departureDateTime": "2026-09-20T08:00:00",
"arrivalDateTime": "2026-09-20T12:00:00",
"duration": "PT4H",
"stops": 0,
"segments": [
{
"marketingCarrier": "MX",
"marketingFlightNumber": "101",
"origin": "SLC",
"destination": "CHS",
"departureDateTime": "2026-09-20T08:00:00",
"arrivalDateTime": "2026-09-20T12:00:00",
"cabinTypeCode": "Y",
"rbd": "Y"
}
]
}
]
},
"error": null
}
Quote order errors
| Code | HTTP status | Cause |
|---|---|---|
ERR-1002 | 404 | Unsupported version segment in the path. |
ERR-1005 | 422 | Request validation failed: duplicate IDs. |
ERR-3000 | 404 | Referenced offer could not be found. |
ERR-3001 | 404 | Referenced offer has expired. |
ERR-3005 | 400 | Offer came from offer search and must be priced with price offer. |
ERR-4000 | 404 | Order not found. |
ERR-4002 | 400 | Requested change could not be quoted. |
ERR-8000 | 401 | Missing or invalid API key or bearer token. |
ERR-8001 | 403 | API key lacks full transaction permissions. |
ERR-8002 | 503 | Authentication store unavailable. |
ERR-9003 | 500 | Quote failed upstream. |