Overview
Use this page when you are ready to start integrating. It covers the protocol-level rules that apply before you move into the walkthrough and endpoint reference: authentication, versioning, payload shape, pagination, and date handling.Security and authentication
Headout APIs are server-to-server APIs. Keep the API key on your backend, send every request over HTTPS, and do not call the APIs directly from a browser. Browsers are not supported for direct API calls because the platform does not support CORS for client-side access.- Authentication: send the
Headout-Authheader on every request. - Obtaining keys: your sandbox key is available on the Headout partner portal. Production keys are issued by Headout and cannot be generated from the portal. To request one, email partnerships@headout.com and copy your Headout SPOC if you have one.
- Testing keys: use the sandbox key while you build and test.
- Production keys: use the production key only after your integration is ready to launch.
Environments
Headout APIs use separate hosts for sandbox and production. Build and validate in sandbox first, then switch to production when you are ready to launch.- Sandbox base URL:
https://www.sandbox-headout.com - Production base URL:
https://www.headout.com
The previous sandbox host
https://sandbox.api.dev-headout.com will continue to work, so existing integrations are unaffected. We recommend migrating to https://www.sandbox-headout.com at your convenience.The sandbox environment has an expected daily downtime of up to 5 minutes between 2:00 AM and 3:00 AM IST for database maintenance. API requests during this window may fail. Plan any automated testing or scheduled jobs accordingly.Versioning and environments
Headout APIs are versioned. The version is part of the URL, and it tells the API which contract to use.- Versioning: use the versioned route for the endpoint family you are integrating with.
- Sandbox: start in the sandbox and validate the full flow there first.
- Production: move to production only after you have confirmed the integration in sandbox.
Payload format
Most Headout endpoints accept and return JSON. Keep the request payloads small and predictable, and always send the content headers that tell the API how to parse the body.- Request body: send JSON only.
- Response body: expect JSON objects or JSON lists depending on the endpoint.
- Headers: set
AcceptandContent-Typeexplicitly so the request and response format are unambiguous.
Pagination and responses
List endpoints return paginated responses. Use the pagination parameters to request the next slice of data instead of trying to fetch everything in one call.- Pagination: call the next page using the continuation data returned by the list response.
- Response: use the response envelope to tell whether more pages are available.
itemscarries the current page,nextUrlandnextOffsettell you how to fetch more, andprevUrllets you move backwards if the API supports it. - Caching: do not treat inventory or other live list responses as static data.
Date formats
Headout APIs use two date formats:- ISO 8601: use this for fields such as
startTime,endTime,dateCreated, anddateUpdated. - Localized format: use
yyyy-MM-dd HH:mm:ssfor timestamps that should be read in the supplier’s timezone, such as local-context tour start times.
startTime in ISO 8601 takes precedence over startTimeLocal. Use the ISO value as the canonical timestamp when you parse, store, or compare dates, and use the localized value only when you need the supplier-local representation.
Rate limits
Some endpoints cap how many requests you can send within a time window. When you go over a limit, the API responds with429 Too Many Requests and a retry-after header telling you how many seconds to wait before retrying.
- Create Booking is limited to 100 requests per rolling 30-minute window per API key (sliding window), on both v1 and v2. The limit counts every request that reaches the endpoint — successful (
200) and failed (e.g.400,5xx) alike. Requests already rejected with429do not count toward the window. - On a
429, read theretry-afterheader (the number of seconds to wait) and schedule your retry instead of polling blindly. The error body (error.code=E_RATE_LIMIT_EXCEEDED) repeats the wait time in a human-readable form.
See Create a new booking for the full 429 response shape and the
retry-after header.Postman collection
There is no maintained Postman collection today. Treat thecurl examples on each endpoint page as the source of truth for request shape, headers, and query parameters.
To work with these endpoints in Postman or another API client, import the curl commands directly — most tools (including Postman) support pasting a curl command to generate a request. You can also convert a curl command or an OpenAPI spec into a Postman collection using AI-assisted tools such as Claude, or by connecting an MCP-based workflow to your API client.