Sandbox: real offers, real PNRs, no 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 orders are never ticketed. A paid order comes back confirmed with an empty tickets[] and a warning saying why. Read status and tickets[], not the HTTP code — that is the check production relies on too.
Servicing

List extras for an order

What the airline still sells against an existing booking — bags, meals, lounge, assistance.

GET/v1/orders/{orderID}/servicesRequires X-API-Key
The ancillaries the airline will sell against this booking, priced for the passengers and flights it holds, normalised into canonical Service objects.**This is the catalogue POST /v1/orders/{orderID}/services buys from.** What this call shows is remembered as the order's catalogue; an extra it never showed cannot be bought, and any price the client writes on one is ignored in favour of the airline's — the same rule as at booking.?ssr=WCHR,UMNR asks for offers on the named special service requests; ?loyalty=AA:1234567 prices status entitlements in. Carriers whose connector cannot qualify the list answer 501 rather than dropping the qualifier silently.Tenancy-scoped like everything under /v1/orders/{orderID}: another account's order id is 404 and the airline is not asked. A closed (cancelled, refunded, failed) order answers an empty list without asking either. The older GET /v1/offers/{offerID}/services still accepts an order id, but checks nothing about who is asking.

Request example

curl --request GET \
  --url https://api.norba.io/v1/orders/{orderID}/services \
  --header "X-API-Key: $NORBA_KEY"

Response example

Response example
{
  "order_id": "AA001Y1XD7ZA6",
  "services": [
    {
      "service_id": "AA-SVC…|ITEM…",
      "type": "bag_checked",
      "name": "1st checked bag",
      "price": {
        "amount": 45,
        "currency": "EUR"
      },
      "segment_refs": [
        "SEG-1"
      ],
      "pax_refs": [
        "PAX96101"
      ]
    }
  ]
}

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

ssrstring
Comma-separated SSR codes to ask offers for (WCHR,UMNR).
Example: WCHR
loyaltystring
Frequent-flyer accounts, AA:1234567[,BA:…].
Example: AA:1234567

Response fields

order_idstringRequired
The order the catalogue is for.
services[]array<Service>Required
service_id (pass it back as ancillary_offer_id), type, name, description, price, segment_refs, pax_refs.

Error codes

404
order_not_found — not this account's order.
501
The airline does not support ssr/loyalty qualifiers.
502
The airline could not list its services.
GET /v1/orders/{orderID}/services — List extras for an order