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
confirmedwith an emptytickets[]and a warning saying why. Readstatusandtickets[], not the HTTP code — that is the check production relies on too.
Orders
List orders
Every order stored for your agency, newest first.
GET
/v1/ordersRequires X-API-KeyLists the orders persisted against the agency behind your API key, newest first.Requires a key with an agency behind it — a developer-portal key or an agency key. A static key returns
401 unauthorized here, because there is no agency to scope the query to.Keyset pagination, not page numbers. limit sets the page size (1–100, default 20); cursor is the next_cursor from the previous page, and an empty next_cursor in the response means you have the last page. There is no page parameter. Filter with status, airline and pnr.Only orders Norba stored appear. A booking made with a static key exists at the airline but not here.Request example
curl --request GET \
--url https://api.norba.io/v1/orders \
--header "X-API-Key: $NORBA_KEY"Response example
Response example
{
"orders": [
{
"order_id": "AA001Y1XD7ZA6",
"pnr": "JBQGEY",
"airline": "AA",
"status": "confirmed",
"currency": "EUR",
"total_amount": 380.62,
"created_at": "2026-08-14T09:15:00Z"
}
],
"next_cursor": ""
}Query parameters
statusstringpending, confirmed, ticketed, cancelled, partially_cancelled, disrupted, refunded, failed.Example:
confirmedairlinestringIATA airline code.
Example:
AApnrstringExact record locator.
Example:
JBQGEYlimitintegerPage size. 1–100, default 20. Out of range returns
400 limit must be between 1 and 100.Example:
20cursorstringOpaque pagination token from the previous page's
next_cursor. Omit for the first page. An invalid value returns 400 invalid cursor.Response fields
orders[]arrayRequiredOrder summaries for this page.
next_cursorstringRequiredPass as
cursor to fetch the next page. Empty string means this was the last page.Error codes
400limit must be between 1 and 100, or invalid cursor.