Sandbox keys reach the airlines’ test systems: nobody flies on these orders and no booking fee is charged. Check status and tickets[], not the HTTP code.
Basket quote
The whole checkout total — fare plus seats and ancillaries, at the price you will actually be charged.
/v1/offers/quoteRequires X-API-KeyThe checkout total for a priced offer plus the seats and extras you plan to buy, your commission included, exactly as the order will carry it. Show it instead of adding line items yourself.
- Reserves nothing and calls no airline.
- Seat and extra prices come from the seat map and service list this API served for the offer (
GET /v1/offers/{offerID}/seatsand/services), never from the request.
Request example
curl --request POST \
--url https://api.norba.io/v1/offers/quote \
--header "X-API-Key: $NORBA_KEY" \
--header "Content-Type: application/json" \
--data '{ "offer_id": "AA-P2E80EC16-51FD-48AD-924B-1|P2E80EC16-51FD-48AD-924B-1-1", "seats": [{ "segment_id": "SGM010012275a20c", "row": 17, "column": "A" }], "ancillaries": [{ "ancillary_offer_id": "SRVDEF08001b075a14f" }] }'Response example
{
"currency": "EUR",
"base_fare": 193,
"taxes_fees": 187.62,
"fare_total": 380.62,
"extras": 128.93,
"service_fee": 12.74,
"service_fee_components": [
{
"label": "Booking service fee",
"amount": 9.52
},
{
"label": "Seat handling",
"amount": 3.22
}
],
"total": 522.29
}Request body
ancillariesarray<Ancillary>Ancillaries you intend to buy, from GET /v1/offers/{offerID}/services. Same rule: priced from the catalogue this API served.
offer_idstringRequiredThe priced offer ID, from POST /v1/offers/price. Required — an empty value returns 400 offer_id is required.
AA-P2E80EC16-51FD-48AD-924B-1|P2E80EC16-51FD-48AD-924B-1-1seatsarray<Seat>Seats you intend to buy, from GET /v1/offers/{offerID}/seats. Priced from that catalogue, not from any price you send here.
Response fields
base_farenumberRequiredThe airline's base fare, unchanged.
currencystringRequiredISO 4217 code.
extrasnumberRequiredWhat the seats and ancillaries cost at the airline's own prices.
fare_totalnumberRequiredbase_fare + taxes_fees.
service_feenumberRequiredYour commission on the whole basket, from your rules on Dashboard → Commissions. Norba's own fees are billed separately.
service_fee_componentsarray{label, amount} per commission rule that fired. Omitted when none fired.
taxes_feesnumberRequiredThe airline's taxes and carrier fees, unchanged.
totalnumberRequiredfare_total + extras + service_fee: what the order will carry.
Error codes
400offer_id is required.
404The offer was never priced through this API, or the price has expired. Price it again.
422extra_not_priced, with kind (seat, ancillary or extras) and ref: the item is not in the catalogue served for this offer. Fetch the seat map or service list first.