Norba · v1

API reference

Everything Norba exposes over HTTPS. JSON in, JSON out. The reference below mirrors the running gateway one-for-one — no XML to handcraft, no SDK required, but a typed TypeScript client is published on npm.

Base URL
api.norba.io
Version
v1
Public endpoints
22

Authentication

Every /v1/* endpoint requires an X-API-Key header — including the health probe, the reference catalogue, the Aviation Data API and the authenticated Shopping / Orders surfaces. Requests without the header (or with an unknown key) are rejected with 401 Unauthorized.

BASH·auth-header.sh
# 1. Export the key issued from the dashboard
export NORBA_KEY="nbr_live_a8b…"

# 2. Send it as X-API-Key on every request — public or authenticated.
curl --request GET \
  --url https://api.norba.io/v1/aviation/airports \
  --header "X-API-Key: $NORBA_KEY"

curl --request POST \
  --url https://api.norba.io/v1/shopping/offers \
  --header "X-API-Key: $NORBA_KEY" \
  --header "Content-Type: application/json" \
  --data '{ "origin": "LHR", "destination": "JFK", "depart_date": "2026-06-15" }'

Errors & rate limits

Every error has a consistent JSON shape: a machine-readable error code, a human message and a request_id you can quote when contacting support.

CodeMeaning
unauthenticatedMissing or invalid API key.
forbiddenAPI key valid but agency lacks permission.
not_foundOrder, offer or subscription does not exist.
validation_failedRequest body fails schema validation.
offer_expiredOffer TTL passed — issue a new search.
inventory_lostSeat sold to another booking before pricing.
payment_declinedCard authorization rejected.
airline_unavailableConnector down or circuit breaker open.
rate_limitedToo many requests — back off and respect Retry-After.
internalServer bug; includes a trace ID for support.

Rate limits are sliding-window per agency. On 429 the response carries a Retry-After header in seconds.

All endpoints