Orders endpoints in development

The Orders API endpoints are currently under active development. Request/response shapes may change.

Orders

Create order

Book a priced offer — the moment a search becomes a real reservation.

POST/v1/ordersRequires X-API-Key
This is where the purchase happens. After the traveler has reviewed their flight, selected seats and ancillaries, and is ready to pay, call this endpoint with the priced offer ID, passenger details, contact information, and payment instructions.Booking flow:
- Search offers → Price-lock → Create order → Pay → Ticketed
Norba transmits the order to the airline via NDC and returns a unified canonical order with the airline-issued PNR (6-character code used at check-in) and OrderID.Passenger types:
- ADT — Adult (12+ years)

- CHD — Child (2–11 years)

- INF — Infant under 2 (lap child, no seat)
Requirements:
- Each traveler needs at least name and date of birth

- Passport/ID document data is required for international flights

- Contact email and phone are mandatory (used for airline notifications)
The response status confirmed means the airline accepted the booking. Payment is handled separately via POST /v1/orders/{orderID}/pay.

Request example

curl --request POST \
  --url https://api.norba.io/v1/orders \
  --header "X-API-Key: $NORBA_KEY" \
  --header "Content-Type: application/json" \
  --data '{ "offer_id": "aa_offer-1234", "travelers": [ { "type": "ADT", "given_name": "Ada", "family_name": "Lovelace", "date_of_birth": "1990-04-12", "document": { "type": "passport", "number": "PA1234567", "country": "GB" } } ], "contact": { "email": "ada@example.com", "phone": "+44 20 7946 0123" }, "payment": { "method": "card_token", "token": "tok_3K..." } }'

Response example

Response example
{
  "order_id": "ord_01HVN9M5K...",
  "airline_order_id": "ABC123",
  "pnr": "X7Y8Z9",
  "status": "confirmed",
  "total_price": {
    "amount": 542.1,
    "currency": "GBP"
  },
  "created_at": "2026-05-15T10:31:42Z"
}

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.

Request body

offer_idstringRequired
Priced offer ID returned by POST /v1/shopping/offers/price. This locks in the current fare.
travelersarray<Traveler>Required
Passenger details. Each traveler must include type (ADT/CHD/INF), given_name, family_name, date_of_birth, and optionally document (passport/ID).
contactobjectRequired
Lead traveler contact: email and phone (E.164 format). Used for airline notifications and emergency contact.
paymentobject
Payment instructions. method can be card_token, iata_bsp, bank_transfer, or wallet. Include token for card payments.

Error codes

offer_expired
Offer expired before order creation.
payment_declined
Payment processor rejected the charge.
airline_unavailable
Connector down or circuit breaker open.
Create order · Norba API