Quickstart

Get started with the Norba API — authenticate, search flights across all connected airlines, and create your first booking in minutes.

Open

Norba is a production-grade NDC aggregation platform that normalizes multi-airline NDC responses into a single canonical JSON schema. Whether you're building a travel agency, an OTA, or automating corporate travel — Norba gives you one API to access every connected airline.

Base URL: https://api.norba.io/v1


No SDK Required

The Norba API is plain JSON over HTTPS — no SDK, no dependencies. Use any HTTP client in any language:

# No SDK required — use any HTTP client
# The Norba API is plain JSON over HTTPS
# Base URL: https://api.norba.io/v1

Authentication

All API requests require an API key. Pass it as the X-API-Key header on every request.

Getting Your API Key

  1. Sign up at norba.io
  2. Go to Dashboard → API Keys
  3. Click Create API Key
  4. Copy the key immediately — you won't be able to see it again

Set Up the Client

curl --request GET \
  --url https://api.norba.io/v1/health \
  --header "X-API-Key: $NORBA_KEY"

Key format: nbr_live_ prefix + 64 hex characters (74 total). Keys are stored as SHA-256 hashes — they're only shown once at creation.

Security tips: Use environment variables, create separate keys per app, and rotate periodically. You can also manage keys via the API.


Key Concepts

  • Shopping — Stateless search that returns transient flight offers. Nothing is reserved until you create an order.
  • Orders — Stateful bookings that persist at the airline. Includes passenger data, payment, and ticketing.
  • Servicing — Post-booking operations: seat assignment, baggage, ancillaries, SSRs, APIS data.
  • Aviation Data — Reference catalog: airports, airlines, aircraft types, and runway data — all accessible via the API.

Step 1: Get Your API Key

Sign up for a Norba account in under a minute. No credit card required. Your API key is available instantly from the dashboard.

Step 2: Search for Flights

Send a single JSON request and get back ranked offers from every connected airline. Filter by cabin, airline, or max stops.

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",
    "departure_date": "2026-07-15",
    "adults": 1
  }'

Save the offer_id value — you'll need it for the next step.

Searching Multiple Airlines

Target specific carriers with the airlines array. Omit it to search all connected airlines simultaneously.

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",
    "departure_date": "2026-07-15",
    "adults": 1,
    "airlines": ["AA", "LH", "DL"]
  }'

Supported Airlines

Replace the airline codes with any of these:

AirlineCodeStatus
American AirlinesAALive
LufthansaLHComing soon
Air France-KLMAFComing soon
EmiratesEKComing soon
Delta Air LinesDLComing soon
United AirlinesUAComing soon
Singapore AirlinesSQComing soon
Qatar AirwaysQRComing soon
IberiaIBComing soon
Virgin AtlanticVSComing soon
QantasQFComing soon

Step 3: Create Your First Order

Pick an offer, add passenger details, and create a booking. You'll receive a canonical PNR and OrderID in one response.

curl --request POST \
  --url https://api.norba.io/v1/orders \
  --header "X-API-Key: $NORBA_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "offer_id": "AA_offer_abc123",
    "passengers": [
      {
        "type": "ADT",
        "title": "MR",
        "first_name": "John",
        "last_name": "Doe",
        "gender": "M"
      }
    ]
  }'

Your booking is now created. Save the order_id — you'll need it for servicing operations like seat assignment, adding baggage, and cancellations.

Paying Immediately

To pay for an order right away instead of holding it, use the POST /orders/{order_id}/pay endpoint:

cURL
curl --request POST \
  --url https://api.norba.io/v1/orders/ord_abc123/pay \
  --header "X-API-Key: $NORBA_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "payment_method": "card",
    "card_token": "tok_visa_4242"
  }'

Creating a Hold

To hold an order without immediate payment, omit the payment_method field. You can pay later before the hold expires:

cURL
curl --request POST \
  --url https://api.norba.io/v1/orders \
  --header "X-API-Key: $NORBA_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "offer_id": "AA_offer_abc123",
    "passengers": [
      {
        "type": "ADT",
        "title": "MR",
        "first_name": "John",
        "last_name": "Doe"
      }
    ]
  }'

What's Next?

API Documentation — Norba | Norba — NDC Aggregation API