Skip to main content

Base URL

All API requests should be made to:
The API is delivered via a global edge network for low-latency access worldwide.

API version

The current API version is v1. All endpoints are prefixed with /v1:

Request format

Headers

Include these headers in every request:
Workspace context is automatically determined from your API key. You don’t need to pass a workspace ID.

Request body

For POST and PATCH requests, send data as JSON:

Resource identifiers

All resources use prefixed IDs that indicate the entity type:
Common prefixes: prod (product), dept (departure), book (booking), ppl (person), inv (invoice). The API validates that IDs have the correct prefix for each field. See Identifiers for the full list.

Response format

Success responses

Successful requests return JSON with appropriate HTTP status codes:
  • 200 OK - Request succeeded
  • 201 Created - Resource created successfully
  • 204 No Content - Request succeeded with no response body

Response headers

Every response includes helpful headers: Example response headers:

Error responses

Errors return standard HTTP status codes with JSON error objects:
See Error handling for complete error reference.

Pagination

List endpoints support pagination using query parameters:
Use has_more to determine if more pages are available without calculating page numbers.

Filtering

Many list endpoints support filtering via query parameters:
Available filters vary by endpoint. Check individual endpoint documentation for supported filters.

Sorting

List endpoints support sorting with the sort parameter:
Prefix with - for descending order, omit for ascending.

Idempotency

POST requests support idempotency using the Idempotency-Key header:
Use UUIDs or unique request identifiers as idempotency keys to safely retry requests without duplicates.

Rate limiting

API requests are rate-limited per workspace: Live workspaces:
  • 3,000 requests per minute
  • 30 requests per second burst
Sandbox workspaces:
  • 100 requests per minute
  • 5 requests per second burst
Pricing is usage-based—no plan tiers or upgrades required. Rate limit information is included in response headers:
When you exceed rate limits, you’ll receive a 429 Too Many Requests response:
Implement exponential backoff when receiving 429 responses. Excessive rate limit violations may result in temporary API access suspension.

API endpoints

Products

Manage your travel product catalog:

List products

GET /v1/products

Get product

GET /v1/products/:id

Pricing options

GET /v1/products/:id/pricing/options

Extensions

GET /v1/products/:id/extensions

Bookings

Create and manage travel bookings:

Create booking

POST /v1/bookings

Get booking

GET /v1/bookings/:id

Wizard session

POST /v1/bookings/wizard/session

Departures

Manage departure dates and pricing:

Get departure

GET /v1/departures/:id

Calculate price

POST /v1/departures/:id/price

Webhooks

Receive real-time notifications for events in your workspace:
  • Booking created, updated, cancelled
  • Payment succeeded, failed, refunded
  • Product created, updated, published
  • Customer created, updated
See the Webhooks guide for event types, signature verification, and setup instructions.

Support

Need help with the API?

Documentation

You’re reading it!

Next steps

1

Authentication

Learn how to authenticate your requests with API keys
2

Quickstart

Follow the quickstart guide to make your first request
3

Explore endpoints

Browse endpoint documentation starting with Products