Skip to main content

Providers Overview

Nexa talks to the outside world through adapters. Every external system — a hotel GDS, a booking engine, an email provider, a PSP, an LLM — is hidden behind a thin, interface-typed adapter. As a customer, the orchestration layer never changes when you switch providers (or run two in parallel) — it's tenant configuration, not a code release.

What this gives you​

  • Vendor-independence — swap Amadeus for Hotelbeds without changing how cases or policies behave.
  • Sandbox parity — sandbox tenants run against limited sandbox providers, so you exercise the entire pipeline with no live credentials.
  • Graceful degradation — a failing provider is disabled per tenant; traffic shifts to the surviving providers without operator action.

Provider categories​

CategoryDefault providersSandbox
Hotel inventoryAmadeus, Hotelbeds, Direct contractsLimited GDS (synthetic inventory)
Hotel bookingAmadeus, Hotelbeds, Direct contractsLimited GDS
Email / vouchersSendGrid (per-tenant sub-user)Limited delivery channel — captures sends in audit
PaymentPer-tenant PSPLimited PSP — deterministic tokens
Ground transportPer-tenant transport partnerLimited transport
AI agents (exception agent, policy synthesizer)Nexa Trained Models on GoogleDisabled — toggle on per tenant
Flight disruption predictorNexa Trained Model on GoogleDeterministic baseline used as fallback

Enabling / disabling providers​

Tenant admins toggle providers in the operations console under Settings → Providers. Each toggle picks both the search strategy and the failover order:

  • merge-all — every provider runs in parallel, results are deduplicated (default).
  • first-success — providers run in priority order; stop after the first non-empty result.

Booking is always single-provider per reservation (the provider that surfaced the selected offer), so there is no booking strategy flag.

Provider selection at allocation time​

The allocator selects the cheapest offer per deduplicated hotel. With direct contracts in the mix, the tiebreaker prefers contracts because:

  • Rate is locked (no surprise at check-in).
  • Inventory update is instantaneous (Nexa decrements its own count).
  • The savings-vs-market field gives finance a clean report.

Rate limits and backoff​

Every provider adapter honors the vendor's rate limit and retries on transient errors:

ProviderRate limit handlingRetry on
Amadeus1 req/sec soft, OAuth token refresh before expiry401, 429, 5xx
HotelbedsHMAC-signed per request; per-minute caps429, 5xx
SendGridper-second/per-day quotas429, 5xx

Retries are bounded (default: 3 attempts, exponential backoff 1s→4s). Permanent errors bubble up immediately.

Observability​

Every provider call is logged with:

  • Correlation ID (traces through the queue)
  • Provider name + endpoint
  • Duration + status
  • Idempotency key

Per-tenant Grafana dashboards (provider call volume, latency, error rate) are available on request.

Where to go next​

Hotel GDS, booking, and email integrations (Amadeus, Hotelbeds, SendGrid) are configured by the Nexa team during tenant onboarding. Talk to support@nexa.ai when you're ready to wire production credentials.

Was this helpful?