Skip to main content

Public API Reference

Nexa exposes three distinct API surfaces, each tailored to its audience and load shape. They share the same platform behind them but have different authentication, rate limits, and contracts. Pick the one that matches your integration.

SurfaceAudienceAuthRead this if you are
Operator APIAirline operators (ops console)OIDC JWT, role-basedBuilding or extending the operations console for an airline's IROPs team.
Passenger APIPassengers (mobile webapp)Magic-link / PNR-login session tokensBuilding a passenger-facing client (PWA, native app, partner check-in flow).
Partner APIB2B integratorsOAuth2 client credentials, scopedIntegrating an external system: airline DCS, corporate travel desk, OTA, regulator.
WebhooksInbound from vendors / outbound to partnersHMAC-signedReceiving Pomelo / Amadeus events, or registering a partner endpoint to receive Nexa events.
AuthenticationAll surfacesUnderstanding the identity model end-to-end.

Common conventions

Every Nexa API surface shares a small set of conventions. Follow them once and they apply everywhere.

Base URLs

Nexa is deployed regionally. Pick the region closest to your operations:

RegionBase URL
North America (default)https://na.api.nexastudio.io
Europehttps://eu.api.nexastudio.io
South Americahttps://sa.api.nexastudio.io

Multi-region tenants get a single virtual host (https://api.nexastudio.io) that routes to the closest healthy region. Passenger surfaces use per-tenant subdomains: https://<airline>.passengers.nexastudio.io. Partner surfaces use the same hostname as the operator API with /partner/v1/* path versioning.

Versioning

URL prefix versioning: /v1/*. Breaking changes mint a new prefix (/v2/*); the old version is deprecated with 6 months' notice and removed after 12 months. Header-based versioning is not used.

Identifiers (URNs)

Every identifier on the wire is a URN. URNs are URL-encoded in path components:

GET /v1/cases/urn%3Acase%3Ac-7f8e1

URNs carry vendor and status structurally — urn:reservation:r-8842:vendor:amadeus:status:confirmed. See Data Model for the full registry.

Pagination

Cursor-based, opaque cursor token:

GET /v1/cases?limit=50&cursor=eyJzdGFydCI6Mn0%3D

Response:

{
"items": [],
"nextCursor": "eyJzdGFydCI6NTJ9",
"hasMore": true
}

Offset / page-number pagination is not supported. Sort order is fixed per endpoint.

Errors

RFC 7807 Problem Details:

{
"type": "https://errors.nexastudio.io/conflict/sub-case-locked",
"title": "Sub-case is locked by another operator",
"status": 409,
"detail": "urn:sub-case:sc-91a4 is held by urn:user:auth0|6510abc, expires in 12s",
"instance": "urn:correlation:abc123…",
"lockedBy": "urn:user:auth0|6510abc",
"expiresInSeconds": 12
}

The instance field is the W3C trace correlation URN — paste it into the platform dashboard to follow the full request trace.

Idempotency

Every write endpoint accepts an Idempotency-Key header. Replays with the same key return the same response (and status code) without re-executing the side effect.

For disruption ingest (POST /partner/v1/disruptions), the idempotency key is the airline's externalEventId field; you can omit the header. Replays are deduplicated server-side and return the same caseUrn.

Rate limits

Per-tenant per-route. Defaults:

SurfaceRead RPMWrite RPMBurst
Operator6001201.5×
Passenger30030
Partnerper-partner-tier (Tier-1: 1200/240, Tier-2: 600/120, Tier-3: 60/10)

Responses include X-RateLimit-Remaining and (on 429) Retry-After. Idempotency-keyed retries within the rate-limit window are exempt from quota.

Observability

Every request carries a W3C traceparent header. If you don't supply one, Nexa mints one and returns it in the response. Include it in your client logs and in any support requests — it's the fastest way for support to find the corresponding event chain.

Tenant isolation

A token issued for urn:airline:latam cannot read a case owned by another airline. Cross-tenant reads return 403 Forbidden. Multi-tenant integrations (e.g., a corporate travel desk serving multiple airlines) hold one registration per airline.

OpenAPI

A live OpenAPI 3.1 specification for every surface is published at:

  • Operator: https://na.api.nexastudio.io/openapi/operator/v1.json
  • Passenger: https://na.api.nexastudio.io/openapi/passenger/v1.json
  • Partner: https://na.api.nexastudio.io/openapi/partner/v1.json

See OpenAPI for SDK generation guides and the rendered explorer.

Where to next

  • Authentication — token shapes, audiences, refresh, and revocation.
  • Operator API — the operator console surface end-to-end.
  • Passenger API — magic-link auth and the snapshot read path.
  • Partner API — OAuth2 client-credentials, scopes, webhook-out.
  • Webhooks — inbound vendor webhooks and outbound partner deliveries.
Was this helpful?