Trekko Hotel API (Partner / Client) (2026-06-18)

Download OpenAPI specification:

URL: https://trekko.co License: LicenseRef-Trekko-Proprietary

B2B partner API for booking accommodation through Trekko using an API key (instead of the interactive web login). Every booking you confirm is attributed to your agency in Trekko's CRM, and prices already include your configured markup (applied at egress on the Trekko side).

Status / what's live (2026-06-18)

The endpoints under Search, Availability and Bookings (search, availability, checkout, the booking-payment step, confirm, cancel, list_bookings, get_booking) are live in production and exercised by the first partner (StayTick = agency 50). The Sandbox (test mode) surface (/core/sandbox/...) is live for self-serve testing. The Account (balance/savings) and Webhooks endpoints back Trekko's automated rebooking (SBPO) money-flow, which is described in detail in REBOOKING_FOR_PARTNERS.md; treat the savings/webhook payloads there as the forward-looking design.

Published client SDKs (pip install trekko, npm i @staytick/trekko-client) and the admin provisioning endpoint /admin/agencies/<id>/api_credentials are not yet published / deployed — contact Trekko for credentials rather than relying on them.

Authentication / Getting started

Send credentials with either header form (the first is preferred):

  • Single header: Authorization: ApiKey key:secret
  • Split headers: X-Api-Key: key and X-Api-Secret: secret

Keys are prefixed trk_live_ (production, admin-provisioned) or trk_test_ (sandbox, issued instantly by POST /core/sandbox/signup). The secret is shown only once and is stored hashed server-side — store it on receipt. Rotation = Trekko re-issues the pair; revocation = the key is deactivated (is_active=false). A bad/inactive key or wrong secret returns 401 invalid_api_key.

Conventions

  • All requests and responses are application/json.
  • Accept-Language is OPTIONAL and defaults to en. It is only rejected when explicitly set to an unsupported value (allowed: en, es, fr, de, it, pt); omitting it is fine.
  • Base path is /core/... (there is no /api/ prefix on the public host).
  • Errors use a stable envelope (error.code is machine-readable and stable; error.message is human-readable and may change). X-Request-Id is currently returned on error responses — quote it to support.

Search

Resolve cities, areas, landmarks and accommodations.

List known cities (optional helper)

Returns the platform's known cities to help resolve a city for searching. No API-key auth is required (public/AllowAny). Pass an optional country_id to filter to one country.

query Parameters
country_id
integer

Restrict the list to a single country.

header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

Text search for cities, areas, landmarks and accommodations

Free-text search. search_by_type indicates the entity type: 0 Accommodation · 1 City · 2 Area · 3 Landmark. Use the returned search_by_id / search_by_type to drive availability.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
query Parameters
query
required
string
Example: query=Barcelona

Free-text search term, e.g. Barcelona.

header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Availability

Live bookable rate plans for a stay.

Live availability + bookable rate plans for a stay

Returns bookable rate plans (prices include your markup) for a hotel over a date range. Carry every field you receive (vendor, booking_code, the price fields, cancellation_policy, cancellation_policy_rules, room_codes, board_plan_text) forward into checkout and confirm. 204 means no availability for that query.

Guest rules (enforced server-side): guests is a flat list of {id, age}; guest ids must be unique; the booking needs at least one adult (age ≥ 18). guests_room_distribution assigns every guest id to exactly one room, and each room must contain at least one adult. nationality is OPTIONAL.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
accommodation_id
required
integer
start_date
required
string <date>
end_date
required
string <date>
required
Array of objects (Guest)
required
Array of objects (GuestRoomDistribution)
nationality
string

OPTIONAL. 2-letter ISO-3166-1 alpha-2 country code.

currency_code
string

ISO-4217. Defaults to EUR.

Responses

Request samples

Content type
application/json
{
  • "accommodation_id": 1376114,
  • "start_date": "2026-09-01",
  • "end_date": "2026-09-04",
  • "guests": [
    ],
  • "guests_room_distribution": [
    ],
  • "nationality": "ES",
  • "currency_code": "EUR"
}

Response samples

Content type
application/json
{
  • "accommodation_id": 0,
  • "name": "string",
  • "options": [
    ]
}

Bookings

Checkout, pay, confirm, cancel, list and look up bookings.

Re-validate the chosen option's price

Re-validates the selected option and returns the locked price plus the booking_code / room_codes / cancellation policy you carry into the payment + confirm steps. Send the guest list and room distribution again (same validation rules as availability). Checkout does NOT return an invoice_id — that comes from the payment step (see the lifecycle below).

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
accommodation_id
required
integer
vendor
required
string
rate_plan_code
required
string
start_date
required
string <date>
end_date
required
string <date>
required
Array of objects (Guest)
required
Array of objects (GuestRoomDistribution)
currency_code
string
Default: "EUR"

Responses

Request samples

Content type
application/json
{
  • "accommodation_id": 1376114,
  • "vendor": "src_3f9a2b",
  • "rate_plan_code": "RP-ABC-123",
  • "start_date": "2026-09-01",
  • "end_date": "2026-09-04",
  • "guests": [
    ],
  • "guests_room_distribution": [
    ],
  • "currency_code": "EUR"
}

Response samples

Content type
application/json
{
  • "vendor": "src_3f9a2b",
  • "booking_code": "string",
  • "room_codes": [
    ],
  • "minimum_price": 30.02,
  • "maximum_price": 33.19,
  • "nett_price": 31.6,
  • "currency_code": "EUR",
  • "currency_symbol": "€",
  • "start_date": "2026-02-12",
  • "end_date": "2026-02-13",
  • "board_plan_text": "Room Only",
  • "cancellation_policy": "string",
  • "cancellation_policy_rules": [
    ],
  • "hotel_comments": "string"
}

Pay for the booking from your agency balance (issues the invoice)

The payment step that produces the invoice_id confirm_booking requires. Partners on a credit/prepaid account use this funds path: Trekko charges your virtual wallet / credit balance and returns an invoice_id plus the matching payment_type ("Booking Payment by Funds"). Pass that same invoice_id and payment_type into confirm.

Other payment paths exist for web/card flows (/accommodation/bookings/pay_by_own_card, /accommodation/bookings/pay_by_clients_card, /accommodation/bookings/pay_later); each likewise yields an invoice_id + payment_type. Insufficient funds returns 400.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
amount
required
number

Amount to charge (the price you will confirm).

currency_code
string
Default: "EUR"

Responses

Request samples

Content type
application/json
{
  • "amount": 360,
  • "currency_code": "EUR"
}

Response samples

Content type
application/json
{
  • "invoice_id": 24881,
  • "payment_type": "Booking Payment by Funds"
}

Confirm the booking (attributes it to your agency)

Creates the booking and attributes it to your agency in the CRM. Requires a paid invoice_id (from the payment step) and its matching payment_type; an unpaid/invalid invoice returns 402 payment_required.

Guests: guests_information is a SINGLE OBJECT carrying the lead guest plus an optional guests array of extra occupants. The lead guest is treated as id == 1 and must be at least 18. rooms_data and guests_room_distribution are required. room_codes is required when the vendor is a specific source.

Send a stable idempotency_key in the body and the Idempotency-Key header (same value): a retry/timeout then replays the original response instead of double-booking. The replayed response carries Idempotency-Replayed: true.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Idempotency-Key
string

Stable unique value (e.g. a UUID) per booking attempt. Remembered for 24h.

Request Body schema: application/json
required
accommodation_id
required
integer
vendor
required
string non-empty
booking_code
required
string
room_codes
Array of strings

Required when vendor is a specific source.

invoice_id
required
integer

From the payment step (e.g. pay_by_funds).

payment_type
required
string
Enum: "Booking Payment by Own Card" "Booking Payment by Funds" "Booking Payment (Pay Later)" "Booking Payment by Clients Card"

Must match the invoice. One of the long invoice-type strings.

minimum_price
required
number
maximum_price
required
number
nett_price
required
number
base_price
required
number
base_currency
required
string
Default: "EUR"
currency_code
string
Default: "EUR"
required
object (GuestsInformation)

Single object carrying the lead guest plus any extra occupants.

required
Array of objects (GuestRoomDistribution)
object
cancellation_policy
required
string non-empty
required
Array of objects (CancellationPolicyRule)
board_plan_text
required
string
required
Array of objects (RoomData)
start_date
required
string <date>
end_date
required
string <date>
agencies_internal_booking_ref
required
string

Your own reference, surfaced in the Trekko CRM. Use an STK- prefix.

idempotency_key
string

Optional stable per-attempt key; a duplicate submit returns the original booking. If omitted, the server derives one from invoice_id.

Responses

Request samples

Content type
application/json
{
  • "accommodation_id": 0,
  • "vendor": "string",
  • "booking_code": "string",
  • "room_codes": [
    ],
  • "invoice_id": 0,
  • "payment_type": "Booking Payment by Funds",
  • "minimum_price": 0,
  • "maximum_price": 0,
  • "nett_price": 0,
  • "base_price": 0,
  • "base_currency": "EUR",
  • "currency_code": "EUR",
  • "guests_information": {
    },
  • "guests_room_distribution": [
    ],
  • "special_requests": {
    },
  • "cancellation_policy": "string",
  • "cancellation_policy_rules": [
    ],
  • "board_plan_text": "string",
  • "rooms_data": [
    ],
  • "start_date": "2019-08-24",
  • "end_date": "2019-08-24",
  • "agencies_internal_booking_ref": "string",
  • "idempotency_key": "string"
}

Response samples

Content type
application/json
{
  • "booking_number": 1045,
  • "booking_id": "TRK-1045"
}

Cancel a booking

Cancels a booking, subject to the rate's cancellation policy / fees. booking_number is the integer booking number and cancellation_reason (non-empty) is required.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
booking_number
required
integer
cancellation_reason
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "booking_number": 1045,
  • "cancellation_reason": "Guest requested cancellation"
}

Response samples

Content type
application/json
{
  • "message": "string"
}

List your agency's bookings (paginated)

Reads all filters from the query string. Returns the agency's bookings, newest first.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
query Parameters
page_no
integer >= 1
Default: 1
items_per_page
integer >= 1
Default: 5
status
string
Enum: "upcoming" "completed" "cancelled"
check_in
string <date>
check_out
string <date>
booking_date
string <date>
booking_id
string
guest_name
string
country
string
city
string
currency_code
string
travel_agency_ref
integer
booking_type
string
Enum: "Rebooked" "Original"
search_query
string
agencies_internal_booking_ref
string
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Responses

Response samples

Content type
application/json
{
  • "total_pages": 0,
  • "current_page": 0,
  • "items_per_page": 0,
  • "data": [
    ]
}

Resolve a stable booking_id (or booking_number) to its current state

Returns the CURRENT active booking for a stable booking_id (which survives SBPO rebooking) or an integer booking_number, including a rebooking block when the booking was rebooked to a cheaper rate. The partner stores booking_id and uses this to map it to the live booking_number (e.g. before cancelling). See REBOOKING_FOR_PARTNERS.md.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
booking_id
string
booking_number
integer

Responses

Request samples

Content type
application/json
{
  • "booking_id": "TRK-1045"
}

Response samples

Content type
application/json
{
  • "booking_id": "TRK-1045",
  • "booking_number": 1045,
  • "accommodation_name": "string",
  • "start_date": "2019-08-24",
  • "end_date": "2019-08-24",
  • "is_confirmed": true,
  • "is_cancelled": true,
  • "total_price": 0,
  • "currency_code": "string",
  • "agencies_internal_booking_ref": "string",
  • "rebooking": {
    }
}

Account

Partner balance and rebooking-savings ledger.

Partner account balance (virtual wallet or credit balance)

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Responses

Response samples

Content type
application/json
{
  • "currency_code": "EUR",
  • "funding_type": "prepaid",
  • "virtual_wallet": 0,
  • "credit_balance": 0,
  • "credit_limit": 0
}

Rebooking savings ledger (paginated, + lifetime totals)

One row per SBPO rebooking — the "we saved you €X after booking" data.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
optional
page_no
integer
Default: 1
items_per_page
integer
Default: 20

Responses

Request samples

Content type
application/json
{
  • "page_no": 1,
  • "items_per_page": 20
}

Response samples

Content type
application/json
{
  • "current_page": 0,
  • "total_pages": 0,
  • "total_partner_savings": 0,
  • "total_trekko_fee": 0,
  • "currency_code": "string",
  • "data": [
    ]
}

Webhooks

Register signed outbound webhooks (e.g. booking.rebooked).

Register an outbound webhook endpoint (returns the signing secret once)

Register an HTTPS URL to receive signed events (e.g. booking.rebooked). The signing_secret is returned ONCE. Each delivery carries a Trekko-Signature: t=<unix>,v1=<hex> header where v1 = HMAC_SHA256(secret, "<t>.<raw_body>"). URLs resolving to private/loopback/metadata addresses are rejected.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
url
required
string <uri>
events
string

Comma-separated event types, or '*'.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "id": 0,
  • "url": "string",
  • "events": "string",
  • "signing_secret": "whsec_..."
}

List your webhook endpoints (never returns the secret)

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Sandbox (test mode)

Self-serve test surface under /core/sandbox; trk_test_ keys, no real vendors/money.

Create a sandbox account + test API key (shown once)

Public, no-auth self-serve signup. Returns a trk_test_* key/secret pair (secret shown ONCE) plus the sandbox base URL. Use the returned key to call any /sandbox/... endpoint and run the full search→availability→checkout→confirm→(trigger_rebooking)→cancel loop with no real vendors, money or production data.

Request Body schema: application/json
required
email
string <email>
company_name
string

Responses

Request samples

Content type
application/json
{
  • "email": "dev@example.com",
  • "company_name": "Example Travel"
}

Response samples

Content type
application/json
{
  • "sandbox_account_id": 0,
  • "api_key": "trk_test_abcdef0123456789",
  • "api_secret": "string",
  • "mode": "test",
  • "auth_header_example": "string",
  • "note": "string"
}

Sandbox text search (test mode)

Mirrors the live search contract; backed by the isolated sandbox engine. Accepts query as a query param or in the body.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
query Parameters
query
string
Example: query=Barcelona
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Sandbox availability (test mode)

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
accommodation_id
required
integer
start_date
required
string <date>
end_date
required
string <date>
required
Array of objects (Guest)
required
Array of objects (GuestRoomDistribution)
nationality
string

OPTIONAL. 2-letter ISO-3166-1 alpha-2 country code.

currency_code
string

ISO-4217. Defaults to EUR.

Responses

Request samples

Content type
application/json
{
  • "accommodation_id": 1376114,
  • "start_date": "2026-09-01",
  • "end_date": "2026-09-04",
  • "guests": [
    ],
  • "guests_room_distribution": [
    ],
  • "nationality": "ES",
  • "currency_code": "EUR"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Sandbox checkout (test mode)

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
accommodation_id
required
integer
vendor
required
string
rate_plan_code
required
string
start_date
required
string <date>
end_date
required
string <date>
required
Array of objects (Guest)
required
Array of objects (GuestRoomDistribution)
currency_code
string
Default: "EUR"

Responses

Request samples

Content type
application/json
{
  • "accommodation_id": 0,
  • "vendor": "string",
  • "rate_plan_code": "string",
  • "start_date": "2019-08-24",
  • "end_date": "2019-08-24",
  • "guests": [
    ],
  • "guests_room_distribution": [
    ],
  • "currency_code": "EUR"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Sandbox confirm (test mode)

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
accommodation_id
required
integer
vendor
required
string non-empty
booking_code
required
string
room_codes
Array of strings

Required when vendor is a specific source.

invoice_id
required
integer

From the payment step (e.g. pay_by_funds).

payment_type
required
string
Enum: "Booking Payment by Own Card" "Booking Payment by Funds" "Booking Payment (Pay Later)" "Booking Payment by Clients Card"

Must match the invoice. One of the long invoice-type strings.

minimum_price
required
number
maximum_price
required
number
nett_price
required
number
base_price
required
number
base_currency
required
string
Default: "EUR"
currency_code
string
Default: "EUR"
required
object (GuestsInformation)

Single object carrying the lead guest plus any extra occupants.

required
Array of objects (GuestRoomDistribution)
object
cancellation_policy
required
string non-empty
required
Array of objects (CancellationPolicyRule)
board_plan_text
required
string
required
Array of objects (RoomData)
start_date
required
string <date>
end_date
required
string <date>
agencies_internal_booking_ref
required
string

Your own reference, surfaced in the Trekko CRM. Use an STK- prefix.

idempotency_key
string

Optional stable per-attempt key; a duplicate submit returns the original booking. If omitted, the server derives one from invoice_id.

Responses

Request samples

Content type
application/json
{
  • "accommodation_id": 0,
  • "vendor": "string",
  • "booking_code": "string",
  • "room_codes": [
    ],
  • "invoice_id": 0,
  • "payment_type": "Booking Payment by Funds",
  • "minimum_price": 0,
  • "maximum_price": 0,
  • "nett_price": 0,
  • "base_price": 0,
  • "base_currency": "EUR",
  • "currency_code": "EUR",
  • "guests_information": {
    },
  • "guests_room_distribution": [
    ],
  • "special_requests": {
    },
  • "cancellation_policy": "string",
  • "cancellation_policy_rules": [
    ],
  • "board_plan_text": "string",
  • "rooms_data": [
    ],
  • "start_date": "2019-08-24",
  • "end_date": "2019-08-24",
  • "agencies_internal_booking_ref": "string",
  • "idempotency_key": "string"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Sandbox cancel (test mode)

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
booking_number
integer
booking_id
string

Responses

Request samples

Content type
application/json
{
  • "booking_number": 0,
  • "booking_id": "string"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Sandbox list bookings (test mode)

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
optional
page_no
integer
Default: 1
items_per_page
integer
Default: 20

Responses

Request samples

Content type
application/json
{
  • "page_no": 1,
  • "items_per_page": 20
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Sandbox get booking (test mode)

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
booking_id
string
booking_number
integer

Responses

Request samples

Content type
application/json
{
  • "booking_id": "string",
  • "booking_number": 0
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Simulate an SBPO rebooking (test only)

Simulate SBPO rebooking a confirmed sandbox booking to a cheaper rate — applies the real money model, credits savings, and fires booking.rebooked.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
booking_id
string
booking_number
integer

Responses

Request samples

Content type
application/json
{
  • "booking_id": "string",
  • "booking_number": 0
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Sandbox account balance (test mode)

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Sandbox savings ledger (test mode)

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
optional
page_no
integer
Default: 1
items_per_page
integer
Default: 20

Responses

Request samples

Content type
application/json
{
  • "page_no": 1,
  • "items_per_page": 20
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Register the sandbox webhook (signing secret shown once)

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
header Parameters
Accept-Language
string
Default: en
Enum: "en" "es" "fr" "de" "it" "pt"

Response language. OPTIONAL — defaults to en. Only rejected if explicitly set to a value outside en, es, fr, de, it, pt.

Request Body schema: application/json
required
url
required
string <uri>

Responses

Request samples

Content type
application/json

Response samples

Content type
application/json
{
  • "error": {
    }
}

Production onboarding

Production onboarding & funding status

Read-only. Authenticate with your test key (trk_test_*). Returns whether your account is promoted/live, the required minimum deposit, and your current funding (wallet deposit + credit line). See SELF_SERVE_PRODUCTION.md.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)

Responses

Response samples

Content type
application/json
{
  • "mode": "test",
  • "production_active": true,
  • "deposit_required": 3000,
  • "available_balance": 0,
  • "gap": 0,
  • "currency": "EUR"
}

Activate production (mint live key once funded)

Authenticate with your test key. Promotes your account to a real agency and mints your trk_live_ key (secret shown ONCE) — only once your wallet deposit + credit line reach the minimum (€3,000 by default). There is no payment in this call: fund your wallet first via the normal channels (card top-up or bank transfer). Until funded it returns pending_deposit with how much is left.

Authorizations:
ApiKeyAuthorization(ApiKeyIdApiKeySecret)
Request Body schema: application/json
optional
email
string <email>

Required only if not set at signup.

company_name
string

Responses

Request samples

Content type
application/json
{
  • "email": "dev@yourcompany.com"
}

Response samples

Content type
application/json
{
  • "mode": "live",
  • "production_active": true,
  • "agency_id": 0,
  • "api_key": "trk_live_…",
  • "api_secret": "string",
  • "deposit_required": 3000,
  • "available_balance": 0,
  • "gap": 0,
  • "currency": "EUR"
}