LUNA CONTRACTING
LIVE
Everything you load, sellable through one API.
49 documented endpoints, all eight product families, one authentication model, one error format. An integrator writes the checkout once: quote, hold, confirm, cancel. Published and public, with no login wall.
Request to result
POST /v1/coach/quote
REQUEST
POST /v1/coach/quote
{ route: sou-feeder-out, date: 2026-10-11,
boarding: cardiff, party: { adult: 2, child: 1 } }
RESULT · price locked for 30 minutes
Cardiff to Southampton · Sat 11 Oct
2 adults, 1 child · 18 seats left
£91.00
Feeds
return coach 18 Oct
Iona · P426
Rate reference
re-quote it weeks later
does not expire
One booking flow for all eight.
Quote locks the price
For 30 minutes, and reserves nothing, so it never blocks a room or a seat.
Hold re-prices from live data
Refused if the total has moved by a penny, so a stale price can never be booked. Holds last 30 minutes and release themselves.
Bulk priced search
One call returns options, prices, extras and full product detail for every family, with a partial flag when something was dropped.
Two idempotency layers
A dropped connection or a retried request returns the booking you already made, never a second one.
Rate references that do not expire
Cache one, put it in a basket or an email, and re-quote it weeks later. The price resolves live at quote time.
Sell prices only
Cost, margin, markup and commission never leave the engine.
One key per client account
It reaches every engine that account has loaded and picks up new ones automatically.
Booking state by polling
There are no webhooks or callbacks. Your integration asks, and gets a consistent answer.
Test it honestly.
Build and verify your whole read and pricing integration with a read-only test key that cannot touch real inventory, then swap in a live key. A test key is refused at the first booking call, by design. There is no separate test environment to keep in sync.
Read-only test key for search, quote and product detail
Swap in a live key when you are ready to hold and confirm
Three key states: active, disabled, revoked. Both off states fail closed
API keys
Seaside Travel
sk_test_7f3a… · read-only
Search, quote and detail work. The first hold is refused.
sk_live_c91d… · active
Full booking flow. Only the SHA-256 hash is stored.
sk_live_20b4… · revoked
Permanent. Fails closed.
The raw key is shown once at creation and cannot be recovered afterwards, by anyone.
Published and public. No login wall.
A developer landing page, a hosted interactive reference, a full OpenAPI 3.1 spec you can generate a typed client from, and a written guide with a worked example from search to confirmed booking.
No SDK is shipped in any language. Generate a typed client from the spec instead.
Developer landing page at contracts.travelify.io/connect
Hosted interactive reference and OpenAPI 3.1 spec
A written guide with a worked example
contracts.travelify.io
developer pages
Questions people ask
Do we need a developer to use Luna Contracting?
No. Everything is loaded in the browser. The API is there for when your own website or systems want in.
Is there a separate test environment?
No. You test with a read-only key that cannot touch real inventory, then swap in a live key for holds and confirmations.
Is there an SDK?
No. The OpenAPI 3.1 spec is public, so generate a typed client in your language from it.
Do you push booking updates to us?
No webhooks or callbacks. Your integration polls for booking state and gets a consistent answer, with idempotent retries.
Sell it through your own systems.
Luna Contracting is live for Travelgenix customers. Contact your account manager to switch it on, or book a demo if you are new to Travelgenix.
More about Luna Contracting