Live and bookable — pre-production, and no payment
These endpoints work against real American Airlines inventory: a search returns real offers and you can create a real booking with a carrier PNR. Two limits are worth knowing before you build against them.
- Orders are pre-production. They are genuine reservations in the airline's pre-production system, not commercial tickets — nobody flies on them. Cancel what you create; anything left over expires on its own payment time limit.
- Payment and ticketing cannot complete. An order is created as an unpaid hold, which is the normal agency flow, but ticketing is inhibited on this IATA number, so
POST /v1/orders/{orderID}/commitreturns502. Everything up to and including the reservation works.
Servicing
Quote a cancellation
What the traveller gets back, and what the airline keeps, before you cancel.
POST
/v1/orders/{orderID}/cancelRequires X-API-KeyReturns a
CancellationQuote — refund amount, penalty amount, and a 30-minute validity window — so you can show the financial consequence before acting.**Note this is a POST that changes nothing.** The order is untouched; only POST /v1/orders/{orderID}/cancel/confirm (or DELETE /v1/orders/{orderID}) actually cancels.> The quote is derived, not quoted by the airline as a cancellation: the handler calls the airline's order reprice and maps original_fare to refund_amount and the reprice penalty to penalty_amount. On a non-refundable fare this can overstate what will actually be returned. The body (passenger_ids, segment_ids, reason) is decoded and discarded — partial cancellation pricing is not implemented.?airline= is required.Request example
curl --request POST \
--url https://api.norba.io/v1/orders/{orderID}/cancel \
--header "X-API-Key: $NORBA_KEY" \
--header "Content-Type: application/json" \
--data '{}'Response example
Response example
{
"quote_id": "qte_01K2M8ZC3AC5N8",
"order_id": "AA001Y1XD7ZA6",
"refund_amount": {
"amount": 380.62,
"currency": "EUR"
},
"penalty_amount": {
"amount": 0,
"currency": "EUR"
},
"valid_until": "2026-08-14T10:15:00Z"
}Path parameters
orderIDstringRequiredCanonical order ID.
Example:
AA001Y1XD7ZA6Query parameters
airlinestringRequiredIATA code. Required.
Example:
AARequest body
passenger_idsarray<string>Accepted but not acted on.
segment_idsarray<string>Accepted but not acted on.
reasonstringAccepted but not acted on.
Error codes
400invalid json, or unknown airline.502The airline rejected the reprice the quote is derived from.