In the sandbox these endpoints work against real carrier test inventory: a search returns real offers and you can create a real booking with a carrier PNR. Two things are worth knowing before you build against them.
- Sandbox orders are test reservations. Nobody flies on them, and they raise no fee. Cancel what you create; anything left over expires on its own payment time limit.
- Sandbox tickets are test documents. A paid order comes back
ticketedwith test ticket and EMD numbers intickets[]; a hold comes backconfirmedwith none. Readstatusandtickets[], not the HTTP code — that is the check production relies on too.
Quote order
Reprice an existing order — what it would cost to change it now.
/v1/orders/{orderID}/quoteRequires X-API-KeyAsks the airline to reprice the order and returns a ChangeQuote: original fare, new fare, penalty and the difference to pay.
An order whose price has not moved returns an even quote: difference 0.00, no penalty.
?airline= is optional: the airline comes from your stored order, not from this parameter. A value that disagrees with the persisted carrier is refused with 400 airline does not match the order. Takes no request body.
Request example
curl --request POST \
--url https://api.norba.io/v1/orders/{orderID}/quote \
--header "X-API-Key: $NORBA_KEY"Response example
{
"quote_id": "qte_01K2M8ZC3AC5N8",
"order_id": "AA001Y1XD7ZA6",
"original_fare": {
"amount": 380.62,
"currency": "EUR"
},
"new_fare": {
"amount": 380.62,
"currency": "EUR"
},
"penalty": {
"amount": 0,
"currency": "EUR"
},
"difference": {
"amount": 0,
"currency": "EUR"
},
"valid_until": "2026-08-14T10:15:00Z"
}Path parameters
orderIDstringRequiredCanonical order ID.
AA001Y1XD7ZA6Query parameters
airlinestringIATA code. Optional — inferred from your stored order. A value that disagrees with the persisted carrier is refused with 400 airline does not match the order.
AAResponse fields
quote_idstringRequiredQuote identifier.
order_idstringRequiredThe order quoted.
original_fareobject{amount, currency} paid for the original booking.
new_fareobject{amount, currency} of the repriced itinerary.
penaltyobject{amount, currency} change fee.
differenceobject{amount, currency} additional amount to pay.
valid_untilstring (RFC 3339)When the quote expires.
Error codes
400airline does not match the order — only returned when a supplied ?airline= disagrees with the persisted carrier; omitting it is fine.
502The airline rejected the quote.