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-KeyThis 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 → TicketedNorba 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:
-
-
-
- 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
- Search offers → Price-lock → Create order → Pay → TicketedNorba 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-KeystringRequiredOpaque 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_idstringRequiredPriced offer ID returned by
POST /v1/shopping/offers/price. This locks in the current fare.travelersarray<Traveler>RequiredPassenger details. Each traveler must include
type (ADT/CHD/INF), given_name, family_name, date_of_birth, and optionally document (passport/ID).contactobjectRequiredLead traveler contact:
email and phone (E.164 format). Used for airline notifications and emergency contact.paymentobjectPayment instructions.
method can be card_token, iata_bsp, bank_transfer, or wallet. Include token for card payments.Error codes
offer_expiredOffer expired before order creation.
payment_declinedPayment processor rejected the charge.
airline_unavailableConnector down or circuit breaker open.