POST /v1/repriceTravel,built for AI agents.
Flights, hotels, cars, cruises, tours, dining, eSIMs and more through one API your agent can find, sign up for and use on its own. It plans, prices and holds. A person approves the money.
- 1
- URL to start
- 0
- forms to fill
- 1 tap
- to approve a booking
Your agent plans Lisbon in four seconds.Then it hits a sign-up form.
Captchas. Keys pasted by hand. A different format at every supplier. No safe way to put a machine near a booking. Every agent stops at the same wall and hands you a list of links.
- Formsbuilt for a person with a mouse
- FormatsEDIFACT, XML, SOAP: hundreds, all different
- Fearnobody lets a loop near a booking
Every trip.One API.
From the flight to the eSIM to the table for dinner: 20+ travel products, one request, one error model, one order lifecycle. Learn one, book them all. It runs on Mondee's supplier agreements, so there is nothing to sign.
Travel easy
Know before you go
One URL.No forms. No waiting.
Paste a URL. Your agent reads Fly's signed manifest, signs itself up and holds a sandbox key the moment you approve its code. Every API is already a tool. It certifies itself. You switch it live.
onboardsearchrepriceholdbook — approved by youSign up for Fly and find 5 nights in Lisbon for two, under $2,000.
onboard()0.18ssearch(FLT)0.42ssearch(HTL)0.71shold(3)0.61s
Signed up — you approved code K7QM-2XPA. Flights, a stay in Alfama and a Sintra day trip are repriced and held. Ready for your approval.
Connect APIs.Render one card.
Every product answers in the same shape, so one component renders a flight, a stay and a tour side by side.
Search to order.Six calls.
The same six operations for every product. Pick a step to see the contract's own path and request.
Find offers for an intent. Searches that fan out answer 202 SEARCH_WARMING and fill in as each supplier replies.
{
"context": {
"domain": "FLT",
"currency": "USD"
},
"message": {
"intent": {
"slices": [
{
"origin": "GRU",
"destination": "MIA",
"date": "2026-11-10"
}
],
"travelers": [
{
"type": "ADT"
},
{
"type": "CHD",
"age": 9
}
],
"cabin": "ECONOMY"
}
}
}Full content for one offer: rooms, segments and inclusions. Content, not price.
Body omitted here — see the reference for its fields.
The one firm price. Never cached, and the only figure you can order against.
{
"context": {
"domain": "FLT",
"currency": "USD"
},
"message": {
"intent": {
"offerRef": "OF-3d90aa17",
"travelers": [
{
"type": "ADT"
},
{
"type": "CHD",
"age": 9
}
]
}
}
}Holds the repriced offer without paying, where the supplier supports it.
Body omitted here — see the reference for its fields.
Creates the booking from the reprice ref. A retry with the same Idempotency-Key never books twice.
{
"context": {
"domain": "FLT",
"clientReference": "acme-91827"
},
"message": {
"intent": {
"repriceRef": "RP-6b02c1",
"clientReference": "acme-91827",
"travelers": [
{
"firstName": "Ana",
"lastName": "Souza",
"email": "[email protected]",
"phoneNumber": "+5511998877665"
}
],
"requiredInfoAnswers": {},
"payment": {
"mode": "PSP_TOKEN",
"paymentRef": "pay_int_91aa"
}
}
}
}Quote before you commit. The penalty is the server's figure, held until it expires.
Body omitted here — see the reference for its fields.
Request bodies are the contract's flight quickstart: /v1/search with domain FLT.
Full autonomy.No blank cheques.
Spend, products, speed and expiry, fixed when the key is made. An agent can narrow a key. It can never widen one.
403 SCOPE_WIDENINGTwenty identical calls in a minute and the key freezes. Only a person unfreezes it.
423 LOOP_DETECTEDAgents search, price and hold. A booking is a proposal: you approve the server's price, or nothing happens.
proposal → approveWho asked. Which agent. Which key. On every order, hold and ledger line.
principal · agent · keyYour language.Generated.
Clients are generated from the same contract the API serves, version 1.64.0.
# .npmrc: @mondee-one:registry=<the contracts project's npm registry>
npm install @mondee-one/[email protected]const found = await connect.request( "/v1/search", "post", { "context": { "domain": "FLT", "currency": "USD" }, "message": { "intent": { "slices": [ { "origin": "GRU", "destination": "MIA", "date": "2026-11-10" } ], "travelers": [ { "type": "ADT" }, { "type": "CHD", "age": 9 } ], "cabin": "ECONOMY" } } }, ); // 202 / SEARCH_WARMING is progress, not an error: poll GET /v1/search/{searchRef} after message.retryAfterMs. const offer = found.message.offers[0]; const offerRef: string = offer.offerRef; console.log(offer.price.amount, offer.price.currency); // integer minor units + ISO currency
Start free.Go live when ready.
Every vertical is free to build with in sandbox. Plans add live booking, higher limits and support as you grow.
Sandbox
$0per month
For building and testing your product.
- Test data for every vertical
- 5,000 calls a month
- Community support
Growth
$499per month
For apps taking their first live bookings.
- Live booking on Flights, Stays and Ground
- 250,000 calls a month
- Booking webhooks
- Email support, reply within a business day
Scale
$1,490per month
For high-volume products and multi-brand teams.
- Every vertical live
- 2M calls a month
- 99.95% uptime SLA
- A dedicated integration engineer
Before youbuild.
Do I need my own supplier contracts?
No. Fly runs on Mondee's supplier agreements, so you sell under your own brand from day one.
What does 202 SEARCH_WARMING mean?
Searches that fan out to many suppliers answer 202 straight away. Show what is in, say what is still coming, and poll with the searchRef until the search completes.
How do retries avoid double-booking?
Every order carries an Idempotency-Key. Retrying with the same key replays the original result instead of creating a second booking.
How should my app handle errors?
Branch on the error code and its retryable flag, not on the HTTP status. PRICE_CHANGED is never retried: show the old and new price and ask again.
Can an AI agent book on its own?
Not without you. Agents search, price and hold on their own; a booking is a proposal a person approves at the server's price, with one tap.
How long does an integration take?
Most teams return search results in sandbox within days. Going live needs a short certification, where we check a handful of test orders with you.
The next billion bookingswon't come from a browser.
They'll come from agents. Give yours one URL and let it fly.