Changelog

What's new

Stay up to date with the latest Norba API updates, new features, and improvements.

The sandbox is open, and its contract is production's

  • The sandbox is open and unrestricted: a search returns real offers and an order is a real airline-held PNR. Sandbox orders are never ticketed and raise no booking or servicing fee.
  • The API contract is identical to production: same endpoints, same canonical schema, same error shapes, same billing model. The integration you build today is the one that goes live — nothing about it has to be rewritten. Production availability is announced per airline on this page and on /docs/airlines.
  • If you hold your own IATA accreditation, there is a faster route: we can register with the airlines you choose as your technology provider, under your code, which takes your carriers out of the general queue. Write to hello@norba.io and we will send the agreement.

The booking fee starts at 1.99% and falls to 1.29%

  • A confirmed booking now costs 1.99% of the base fare, down from 2.5%. The floor stays at €2.00 and the ceiling at €25.00, and the floor's own cap comes down with the rate: the fee is never more than 2.5% of the fare, whatever the fare. Seats and ancillaries move with it — 1.99% each, still capped at €5.00 an item, still €35.00 across a whole order.
  • What you are charged forBeforeNow
    Completed booking2.50% of the base fare1.99% of the base fare
    Minimum per booking€2.00 · max 3% of the fare€2.00 · max 2.5% of the fare
    Maximum per booking€25.00unchanged
    Seat selection2.50%, max €5.001.99%, max €5.00
    Ancillary sold2.50%, max €5.001.99%, max €5.00
    Ceiling per order€35.00unchanged
    Servicing operation€2.00unchanged
    Volume — 1–250 orders2.50%1.99%
    Volume — 251–1,000 orders2.20%1.79%
    Volume — 1,001–5,000 orders1.90%1.59%
    Volume — 5,001+ orders1.50%1.29%
    Enterprise reference rate1.50%1.29%
    Airline call / data call€0.005 / €0.0025unchanged
    Free allowance500 requests, onceunchanged
  • The volume ladder starts lower and ends lower: 1.99% on your first 250 orders of the month, 1.79% from 251, 1.59% from 1,001 and 1.29% above 5,000. It is still marginal and still arrives as a credit line at month end, so your bill never rises faster than your volume.
  • Enterprise is now 1.29% — the ladder's bottom rung from your first order, without having to reach it — alongside the dedicated SLA, self-hosted option and your own IATA accreditation.
  • Nothing changes on your side. The new rates are live in the billing engine and on every invoice from here on; orders already priced keep the rate they were charged at, because a fee that is rewritten after the fact is a fee nobody can reconcile.
  • This lands the day after the per-request cut, and it is the same decision twice: the call should be cheap enough not to ration, and the booking should be priced against what an agency actually earns on it.

Per-request prices cut in half — and we are not finished

  • A call that reaches an airline now costs €0.005 and a call we answer from our own data €0.0025 — half of yesterday's €0.01 and €0.005. The new prices are live, they apply to Pay as you go and Enterprise alike, and there is nothing to do on your side: the rate card, your usage page and every invoice from here on already use them.
  • Booking fees are unchanged, and that is the point. A request should cost little enough that nobody rations searches, retries or regression runs around it. What we sell is a booking — 2.5% of the base fare, minimum €2.00, never more than 3% of the fare and capped at €25.00 — not the traffic it took to find one.
  • The free allowance is untouched: 500 requests, granted once for the life of the account, shared by every endpoint. At the new prices it stretches twice as far, and so does any credit sitting on your account.
  • We are working on bringing the per-request prices down further. Serving a search cheaply is an engineering problem on our side, not a commercial one on yours, and every time we make it cheaper to serve we intend to pass that on rather than keep it. Expect this line to move again.

No more platform rate limit, no more shared allowance

  • The per-agency capacity rate limit is gone outright, not raised. Every metered request is already billed, so throttling ordinary traffic against our own server capacity cost agencies money for no protective reason on our side. Aviation and reference data (/v1/aviation/*, /v1/reference/*) now carry zero rate limiting of any kind. What remains on shopping and booking — the per-minute search rate, daily/monthly search and order ceilings, and the look-to-book policy — exists only because airlines contractually require it.
  • Duplicate-account detection is removed. An earlier system tried to spot accounts belonging to the same customer and pool their free allowance; it flagged legitimate multi-account testing more often than real abuse, so it is gone. Every account now has its own 500-request lifetime allowance, full stop — nothing shared with any other account.
  • An agency can now save the legal name, tax ID and address that should appear on its Stripe invoices (GET/PUT /v1/dev/billing/details), restricted — like every other billing route — to the agency's owner and admins.
  • An agency's first login now asks for its IATA/BSP accreditation number, optional. Only an accredited agency can issue in production for now.

A 404 on an order id now says which one you probably meant

  • GET /v1/orders/{orderID} and every servicing call now answer an unrecognised order id with code: "order_not_found" and a message naming the field to copy (order_id) instead of retyping it.
  • When your agency holds an order id exactly one character away from the one you sent, the 404 also carries did_you_mean — airline order ids interleave letters and digits (AA001HKO571A3), and O/0 or I/1 typos are the overwhelming cause of this error. Two equally-close candidates, or a real difference of more than one character, get no suggestion.

Order lookups tightened: no more airline fallback, cursor pagination, airline inferred from the order

  • GET /v1/orders/{orderID} no longer falls back to asking the airline for an id it does not recognise. An unknown id is 404, whatever ?airline= you send — retrieving an unknown id from the carrier would have turned the id itself into a bearer credential.
  • GET /v1/orders moved from page/limit (page size fixed at 20) to keyset pagination: limit (1-100, default 20) and cursor, with next_cursor in the response.
  • Every order-id servicing endpoint (change, cancel, quote, commit, reshop, and the structured change/cancel/refund routes) now infers the airline from your stored order instead of requiring ?airline=. The parameter is still accepted for compatibility, but a value that disagrees with the persisted carrier is refused with 400 airline does not match the order.

American Airlines integrated — all 11 NDC operations

  • AirlineCodeHubNetworkCapabilities
    American AirlinesAADFW350+ destinations globallyShopping, Pricing, Ancillaries, Seats, Orders, Servicing
  • American Airlines supports all 11 NDC operations: AirShopping, OfferPrice, ServiceList, SeatAvailability, OrderCreate, OrderRetrieve, OrderChange, OrderCancel, OrderReShop, OrderQuote, and OrderCommit. Available in the sandbox: searches return real offers and an order is a real airline-held PNR; sandbox orders are never ticketed.

Orders API — initial release

  • Create order endpoint (`POST /v1/orders`) now available for American Airlines.
  • Retrieve, pay, change, reshop, refund, and cancel order endpoints operational.
  • Order history and list endpoints added for agency-level audit.
  • Full audit trail with `order_events` for every state transition.

Shopping API — seat maps & services

  • Seat availability endpoint (`GET /v1/offers/{offerID}/seats`) returns per-segment seat maps with pricing and features.
  • Service list endpoint (`GET /v1/offers/{offerID}/services`) returns full ancillary catalogue — bags, meals, lounges, Wi‑Fi, priority boarding, fast track, upgrades.
  • Price offer endpoint (`POST /v1/offers/price`) confirms the price and mints the bookable offer ID.

Shopping API — search & aggregation

  • Search offers endpoint (`POST /v1/shopping/offers`) fans out to all connected airlines in parallel.
  • Supports one-way and round-trip, multi-passenger (ADT/CHD/INF), cabin class, currency, and airline filtering.
  • Results aggregated, deduplicated by OfferID, ranked cheapest-first.

Aviation Data API — full catalogue

  • Airport endpoints: list, get, full unified profile, runways.
  • Airline endpoints: list with fleet summary.
  • Aircraft types endpoint with IATA/ICAO lookup, manufacturer, model, engine class.
  • Upstream sources catalog for transparency on data provenance.

Norba API — public beta

  • Public REST API launched at `api.norba.io/v1`.
  • Auth via `X-API-Key` header with dashboard-issued keys.
  • Health check, airport autocomplete, and airline listing live.
  • Documentation site and API explorer deployed.

Be the first to know when the API is ready for testing.

API Changelog: Releases & Breaking Changes | Norba Docs