Getting started · Errors

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.

Error response format

All errors follow the same JSON structure regardless of which endpoint returned them:

FieldTypeDescription
errorstringMachine-readable error code (see table below).
messagestringHuman-readable explanation of what went wrong.
request_idstringULID you can provide to Norba support for tracing.
{
  "error": "unauthenticated",
  "message": "Missing or invalid API key.",
  "request_id": "01J3K…Z9"
}

Error codes

Every error returned by the API uses one of the following codes:

HTTPError codeMeaning
400invalid_requestMissing or malformed field in the request body.
401unauthorizedMissing or invalid Bearer token.
403forbiddenToken valid but lacks permission for this resource.
404not_foundThe requested resource does not exist.
409offer_expiredThe OfferID is no longer valid — re-shop and try again.
422order_validation_failedPassenger data or payment data failed airline-side validation.
429rate_limitedYou have exceeded the rate limit. Retry-After header indicates when to retry.
502airline_errorThe upstream airline returned an error. The request_id is logged for diagnosis.
503circuit_openThe adapter for this airline is in open-circuit state. Retry after 30 s.
504airline_timeoutThe upstream airline did not respond within the aggregator timeout window.

Rate limits

Rate limits are sliding-window per agency. On `429` the response carries a `Retry-After` header indicating how many seconds to wait before retrying.

LimitScopeDetails
60 req/minPer API keyGeneral‑purpose endpoints (aviation data, health check).
30 req/minPer API keyShopping & Orders endpoints.
10 req/minPer airline connectorPer‑airline rate limit when fanning out searches.
API Documentation — Norba | Norba — NDC Aggregation API