Build your travel integration with the OnArrival API.
See code samples, booking flows and how errors are handled. Request sandbox access to try the integration, then confirm what your production setup needs.
Four steps to a working integration.
Every OnArrival integration does the same four things, in this order.
- 01Get test keysRequest sandbox access. You test against test inventory, so nothing real is booked.Request access
- 02SearchOne call asks every connected supplier and returns offers in one format.See the quickstart
- 03BookPrice the offer, add extras like trip cover, and take one payment.See the recipes
- 04Handle changesWebhooks tell your system when a booking changes. Safe retries mean a repeat never books twice.See errors and retries
Search a flight in ~12 lines.
Stays, ground, activities and Travel Fintech work the same way. Learn how to authenticate and how an offer looks once. Neither changes between products.
Build something real.
Use these examples to plan your integration. Confirm the supported calls and supplier conditions in the API reference.
Sell a flight + insurance bundle in one checkout
Search live flights, price cancel-for-any-reason (CFAR) cover for the exact flight, and take one payment for both. One booking comes back.
Rebook a disrupted passenger automatically
Listen for schedule changes and cancellations, then swap the affected flight for the best protected alternative within your own service commitment (SLA). No human agent in the loop.
Settle multi-currency payouts to suppliers
Charge the traveller in their own currency, lock the exchange rate at booking, and reconcile each supplier payment to the cent in a double-entry ledger you can export nightly.
Embed a full trip: air, stay and ground
Flights, stays and transfers share one offer format, so you can search all three at once and build the trip. The themed React checkout drops straight in.
How the SDK handles the hard parts.
Sometimes a supplier drops the connection in the middle of a booking. What happens next matters most. You get one error format, safe retries on every change, and failures you can rehearse in the sandbox.
Idempotency keys
Every call that changes something takes a unique key. Retry after a timeout and you get the original result back: never a second booking, never a double charge. Keys are kept for 24 hours.
Typed errors
One error format across flights, stays, ground, activities and fintech. Same fields, same codes, same retryable flag, so you write your error handling once.
Webhook replay
Missed an update during a deploy? Resend any event, or a range, from the dashboard or API. Events are signed, in order and deduplicated by ID, so each is processed exactly once.
Sandbox parity
Trigger failures on demand with special test inputs: dropped sessions, slow suppliers, declined cards, schedule changes. The errors you handle in sandbox are the ones you get in production.
Think of the idempotency key as a receipt number for a request.
If a connection drops and you send the same request again with the same idempotency_key, the capture resolves once. The second request returns the first result, not a second booking. The fields are the same on every product.
What's in the docs.
These are the sections the full API reference covers. Request sandbox credentials to test the examples.
