Hotels · Rebooking · Sandbox · v2026-06-12

Travel infrastructure,
in one REST API.

Search live hotel availability and book with idempotent confirms. Then let Trekko's engine quietly rebook your customer at a cheaper rate after they've booked — and credit the savings back to you. Get test keys in 60 seconds, no call required.

JSON in, JSON out
Test mode self-serve
2 SDKs (TS, Python)
Signed webhooks
Idempotent bookings

Get started — test mode

1
Sign up → get a trk_test_ key + secret instantly. No sales call.
2
Point any SDK (or curl) at the sandbox base URL with your test key.
3
Run the whole loop — search → book → simulate a rebooking → see the savings — against isolated test data. No real vendors or charges.
4
Ready for production? Activate and swap to a trk_live_ key — same code.
# 1) self-serve signup → test key (secret shown once)
curl -sS -X POST https://api.trekko.co/core/sandbox/signup \
  -H "Content-Type: application/json" \
  -d '{"email":"dev@acme.com","company_name":"Acme"}'

# 2) first call (sandbox base URL + test key)
B=https://api.trekko.co/core/sandbox
curl -sS -X POST "$B/accommodation/search?query=Barcelona" \
  -H "Authorization: ApiKey trk_test_xxx:secret" \
  -H "Accept-Language: en"

Test vs Live keys

trk_test_

Test mode (self-serve)

Instant at signup. Hits the isolated sandbox — deterministic catalog, no real vendors, money or production data. Build and verify your entire integration here, including the booking.rebooked flow via the rebooking simulator.

trk_live_

Live mode (activation)

Real availability and bookings, attributed to your agency in Trekko's CRM with your markup. Activated once your wallet deposit reaches the minimum (€3,000). The contract is byte-identical to test — just swap the base URL and key.

What you can build

Endpoints

Same paths in live (/core) and sandbox (/core/sandbox). Full schemas in the reference.

AreaMethod & path
Signup (sandbox)POST /sandbox/signup
SearchPOST /accommodation/search
AvailabilityPOST /accommodations/get_accommodation_availability
Checkout → ConfirmPOST /accommodation/bookings/{checkout,confirm_booking}
Cancel · List · GetPOST /accommodation/bookings/{cancel_booking,list_bookings,get_booking}
AccountPOST /accommodation/account/{balance,savings}
WebhooksPOST·GET·DELETE /accommodation/webhooks
Rebooking simulator (sandbox)POST /accommodation/bookings/trigger_rebooking

SDKs

TypeScript / JavaScript

Zero-dependency, typed, auto-retry + idempotency built in.

import { TrekkoClient } from '@staytick/trekko-client';
const trekko = new TrekkoClient({ apiKey, apiSecret, language:'es' });
const { data } = await trekko.search('Barcelona');

Python

Standard-library only, typed, same retry + idempotency semantics.

from trekko import TrekkoClient
trekko = TrekkoClient(api_key=key, api_secret=secret, language="es")
res = trekko.search("Barcelona")

Both SDKs target the live base URL by default; pass the sandbox base URL to run in test mode. PHP, Ruby, Java and Go can be generated from the OpenAPI spec on this page via openapi-generator until the official packages publish.

Webhooks

Know the moment a booking is rebooked

Register an HTTPS endpoint and Trekko POSTs signed events. Verify Trekko-Signature: t=<unix>,v1=<hex> where v1 = HMAC_SHA256(secret, "<t>.<raw_body>"); reject if it doesn't match or |now − t| is too large. Dedupe on event_id (at-least-once).

{
  "event": "booking.rebooked",
  "event_id": "evt_9f2c…",
  "created_at": "2026-06-20T14:03:11Z",
  "data": {
    "booking_id": "TRK-AB12CD34",
    "partner_savings": 50.00,
    "credited_to": "virtual_wallet"
  }
}

Go live

1 · Build in test

Integrate against the sandbox with your trk_test_ key until the full loop + webhook verification pass.

2 · Fund your wallet

Top up your Trekko wallet (card or bank transfer) with a deposit of at least €3,000 — the funds you spend on real bookings. Bank transfers are confirmed by Trekko.

3 · Activate

Once your balance reaches the minimum, production is enabled and your trk_live_ key is issued, attributed to your agency with your markup.

4 · Switch

Swap the base URL to /core and the key to trk_live_. Same code, same shapes.

Heads-up: live search and bookings need a funded wallet. Calls made before the €3,000 minimum deposit clears return a clear error telling you to top up.

Open the console — get a key & go live →

Reference: OpenAPI reference · Going to production · Integration guide · Rebooking & savings · Sandbox · Postman collection