Sandbox: real offers, real PNRs, test tickets

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 ticketed with test ticket and EMD numbers in tickets[]; a hold comes back confirmed with none. Read status and tickets[], not the HTTP code — that is the check production relies on too.
Orders

Quote order

Reprice an existing order — what it would cost to change it now.

POST/v1/orders/{orderID}/quoteRequires X-API-Key

Asks 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

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"
}

Authorization

X-API-KeystringRequired

Opaque API key issued from the Norba dashboard. Sent on every request as the X-API-Key HTTP header. Missing or invalid keys are rejected with 401 Unauthorized.

Path parameters

orderIDstringRequired

Canonical order ID.

Example: AA001Y1XD7ZA6

Query parameters

airlinestring

IATA 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.

Example: AA

Response fields

quote_idstringRequired

Quote identifier.

order_idstringRequired

The 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

400

airline does not match the order — only returned when a supplied ?airline= disagrees with the persisted carrier; omitting it is fine.

502

The airline rejected the quote.

POST /v1/orders/{orderID}/quote — Quote order | Norba API