Table of Contents

Operational notes

Practical guidance for integrating against the V2 API.

Bearer token caching

The Auth0 token endpoint returns an expires_in value (seconds). Cache the token and re-use it until close to expiry — typically the token is valid for 24 hours. Re-issue before it expires; a 401 from the V2 API most often indicates an expired token.

Inventory polling cadence

Inventory is produced on a periodic cadence — typically once per day. Polling more frequently does not yield fresher data. See Identifier stability for which identifiers persist across refreshes and which do not.

Image URLs

Image URLs in media fields are protocol-relative — they begin with // (for example, //images.ctfassets.net/...). Prepend https: when fetching, embedding, or storing the URL.

Date and time precision

Dates without a time component use YYYY-MM-DD (for example, 2026-01-10).

Timestamps come in two forms across the API:

  • ISO 8601 without timezone: 2026-01-10T20:30:00. Used for voyage departure / arrival timestamps. Treat these as local to the voyage's port.
  • ISO 8601 with offset: 2025-10-01T06:00:00+02:00. Used for promotion validity windows.

Send timestamps in the form shown by the response sample for the relevant endpoint.

Currency precision

Prices are numeric and may include a fractional component (106.0, 13618, 2500.50). The number of decimals is currency-specific — render prices in your own UI using the locale conventions for the response's currency.

priceBreakdown.totalPrice always equals the sum of its component price arrays. Trust the components if you ever see a mismatch.

Rate limiting

There is no rate limiting on the V2 API today. This is subject to change; respect any Retry-After header surfaced on a 429 response if you encounter one in the future.