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}/commit returns 502. 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-Key
Returns 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"
}

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

airlinestringRequired
IATA code. Required.
Example: AA

Request body

passenger_idsarray<string>
Accepted but not acted on.
segment_idsarray<string>
Accepted but not acted on.
reasonstring
Accepted but not acted on.

Error codes

400
invalid json, or unknown airline.
502
The airline rejected the reprice the quote is derived from.
POST /v1/orders/{orderID}/cancel — Quote a cancellation