Skip to content
A Métropolitain sign in front of a Haussmann façade

For developers and partners

Sell our trips. $100 a booking.

Sign up, put a card on file and get a key — no approval queue, no subscription. The first 1,000 calls each month are free, then a cent a call. You earn $100 when somebody books a trip you sent us.

What it costs

Almost nothing, and nothing at all until you are past the first 1,000 calls in a month. There is no plan to choose and no approval. Every call needs an API key, and a key needs a card on file: you save it with Stripe when you sign up, nothing is charged then, and it is what your monthly usage invoice is charged to. Calls past the first 1,000 cost a cent a call, because a trip planner searches and quotes thousands of times whether or not anybody ever books, and every one of those costs us too.

Access
$0
Sign in, name yourself, save a card with Stripe, get a key. About a minute.
Per call
$0.01
After the first 1,000 a month, which are free. Invoiced to your card after each month ends.
You earn
$100
Per booking, once it is confirmed. Flat — the same whichever tier they pick.

The arithmetic is meant to favour selling. One booking earns you $100, which is 10,000 calls. If you are selling trips the call charge disappears into the commission; if you are not, it is the cost of the searching. We would rather price it that way round than be free to everybody and quietly rate-limit the people using it most.

Billing. After each calendar month (UTC) we invoice the calls past the first 1,000 to the card you saved. If a charge fails, Stripe retries it and your keys keep working for seven days; after that they are suspended until the invoice is paid, and they work again the moment it is. A month within the free allowance is never invoiced.

The $100 is the same on every booking and every tier, and it does not move with the extras a traveler adds: a grandstand seat or a yacht day is sold close to what it costs us, so there is no margin in it to share, and we would rather say that than quietly pay you less than a headline. It is paid after the trip has run, because that is when the money is genuinely ours. The full terms are in the Partner Agreement.

What this is not

It is not a hotel API. There is no endpoint that takes a city and some dates and returns rooms, rates or availability, and there will not be — our room rates come from suppliers whose agreements do not permit us to pass them on, and we would rather tell you that now than after you have built something.

What you get instead is the trip: a real route with four price tiers, an itinerary, a group, and seats you can actually sell — or a custom one we research and price for a customer of yours, sold under your brand and bought from us.

The endpoints

  • GET/api/v1/trips

    Every bookable trip, with the departures on sale, prices and seats remaining.

  • GET/api/v1/departures/:id

    One departure: its four tiers, every add-on, what each costs.

  • POST/api/v1/quote

    Price a configuration — travelers, rooms, tier, extras, a code. The same function the site runs, so your total always matches ours.

  • POST/api/v1/custom-trips

    Describe a trip one of your customers wants. We research real hotels, price it and return a proposal plus the link their traveller opens.

  • GET/api/v1/custom-trips

    Every proposal we have built for you, newest first.

  • GET/api/v1/custom-trips/:id

    One proposal, read back. Ours is the copy that counts, so you never have to be the system of record for our price.

  • POST/api/v1/custom-trips/:id/handoff

    A fresh link for the traveller. It retires the previous one, which is also how you revoke a link you sent by mistake.

Booking through the API is not open yet, and on a custom trip it never will be: the traveller pays us, on our checkout, because that is the arrangement our room rates are licensed under. What you get instead is the handoff link below.

Building an AI assistant? The same endpoints are an MCP server, with the same key: see For AI agents.

Custom trips

Tell us where one of your customers wants to go. We research real hotels on the dates they asked for, price the trip with our own model, and hand back a proposal you can put on your own site as powered by Guideless — your brand, your copy, your price on top of ours. The traveller books with us.

curl -X POST -H "Authorization: Bearer gl_live_…" \
  -H "Content-Type: application/json" \
  -d '{"action":"propose",
       "brief":{"destinations":["Nice","Seville, Spain"],
                "month":"2027-05","nights":7,"travelers":2,
                "budgetBand":"comfort","interests":["food"]}}' \
  https://guidelesstravel.com/api/v1/custom-trips

Either month + nights or startDate + endDate. budgetBand is value | comfort | premium | luxury. Write a city we do not run trips in as “City, Country” — there are two Valencias, and we ask rather than guess.

What comes back, and what never will

Per city: the hotel’s name, its star rating and its area, the nights, whether breakfast is included, and what cancelling it costs. Per trip: the price per traveller and in total, the cancellation terms, the rail, and the limitations.

Never: a rate id, a nightly price, a room type, a supplier name, what the room cost us or what our fee is. Not an oversight to ask us about — our room rates come from suppliers whose agreements let us sell travel to our own customers and nothing more, and that licence does not pass to you. It is the same line the rest of this API is drawn on.

The handoff

The existing bookingUrl field is a one-time handoff to the traveller's Guideless trip plan, with your attribution. It does not open checkout or hold rooms while checkoutAvailable is false. Treat priceStatus of planning_recheck_required as a request for a current room review. Ask for a new link at POST /api/v1/custom-trips/:id/handoff; the old one then stops working.

What you have to show them

Two fields on every proposal are ours to write and yours to pass on as written — summarising either of them into something friendlier is a breach of the Partner Agreement, and the traveller would be buying something we did not sell.

  • cancellation — one statement for the trip, built from the rooms we actually hold and never more generous than the strictest of them. A custom trip can be entirely non-refundable; our catalogue tiers do not apply to one.
  • limitations — what we are not doing, in plain words: a city we have never operated in, no transfer arranged, no local contact, recommendations nobody of ours has walked.
  • rail[].note — we price trains on the routes we run. A leg we cannot price is named, excluded from the total and quoted separately. On a multi-city trip this is the limitation you will meet most often.

The proposal includes a price-validity timestamp, but that is not a room hold or a thirty-day price guarantee. We check current rooms, price and cancellation terms before a traveller can pay. Do not describe a planning proposal as held, booked or confirmed.

Limits

300 proposals an hour per key, and every call counts against your monthly ceiling like any other. Tighter than the reads because each one makes real supplier requests. One brief is capped at four cities and twenty-one nights — a bigger one is refused with a message naming the limit, never quietly trimmed to fit, because a traveller who asked for six cities and was shown four has been sold something else. Cache a proposal for up to an hour; the response says so.

Trying it

Every endpoint needs your key. A call without one — or with a revoked key, or on an account with no card on file — gets a 401 with a reason and a link back here, and is not billed.

curl -H "Authorization: Bearer gl_live_…" \
  https://guidelesstravel.com/api/v1/trips

curl -H "Authorization: Bearer gl_live_…" \
  https://guidelesstravel.com/api/v1/departures/<id>

curl -X POST -H "Authorization: Bearer gl_live_…" \
  -H "Content-Type: application/json" \
  -d '{"departureId":"<id>","roomIndexes":[1,1],"tierId":"<tier>"}' \
  https://guidelesstravel.com/api/v1/quote

Send your key as a bearer token or as X-API-Key. Keep it on your server; it is a credential.

Getting paid

Call us from your server, then send the traveller to us with your key’s prefix on the link. The prefix is the short public half of your key — safe on a URL, useless for calling the API — and it is what the commission follows:

https://guidelesstravel.com/tours/monaco-grand-prix?partner=gl_ab12

It sticks for ninety days, survives them browsing away and coming back, and pays out when the booking confirms.

On a custom trip you do not add anything: the proposal already knows you asked for it, so the handoff link attributes you on its own. Commission is paid after the departure has run, because that is when the money is genuinely ours and when a cancellation can no longer take it back.

Get a key

Keys are tied to an account so we know who to bill and who to pay. Sign in, name yourself, save a card with Stripe, and your key is ready.

Sign in

The rules, in full

  • Show our prices as our prices. You may add your own fee on top; you may not show a lower one and bill the difference.
  • A traveler books with Guideless. We are the organiser, we hold the contract, and we handle the trip.
  • Commission is paid after the departure has run. A cancelled booking pays nobody.
  • Do not cache a quote for longer than an hour. Prices move with live hotel rates.
  • No scraping. If a limit is in your way, ask — it is a conversation, not a policy.

Questions, a higher limit, or a commission conversation if you are sending real volume — talk to us.