Adrasis™

API reference

Interactive OpenAPI specification and client-generation quickstart for the Distribution Partner API.

The interactive reference renders the machine-readable OpenAPI contract with a built-in "Try it" console. It covers every operation, request and response schema, status code, and authentication requirement.

Base URL: https://ari.console.adrasis.com/api/v1. Authentication uses OAuth 2.0 client credentials to obtain a Bearer token; see Authentication.

Profile-scoped operations use the stable Default profile when X-Adrasis-Partner-Profile-Id is omitted and return the exact resolved identity in X-Adrasis-Resolved-Partner-Profile-Id. Opaque cursors and proofs restore the profile they sealed. GET /bookings is account-wide instead and uses the optional profile_public_id query parameter only as an originating-profile reporting filter.

Authentication

POST/oauth/tokenExchange client credentials for an access token

Availability & rates

On an initial availability request, a client-supplied request_time may be at most 30 days behind or 60 seconds ahead of the server clock; both boundaries are inclusive. A value outside the inclusive [server_time - 30 days, server_time + 60 seconds] window returns a top-level 400 INVALID_REQUEST with field=request_time. It never appears as an inline per-property error_code.

For the first POST /places/availability page, omit request_time to use the server clock. Its opaque cursor preserves that resolved instant, so a continuation may omit request_time as well; if it is supplied, it must equal the first response. A valid cursor-carried fixed instant remains usable until the cursor expires, even if the server clock crosses the initial 30-day lower boundary during the walk. Do not derive it from the HTTP Date header.

POST /properties/availability takes 1..200 properties. Its optional max_offers_per_property (1, 10 or any count up to 250, or "all" for every offer) adds offers to each result, the cheapest first, each one room type and one rate plan for every requested room; a request without it is answered exactly as before. See Offers per property. Its optional include adds each slot's cancellation_quote, each allocation's selectable_quantity (rooms left) or both, and a request without it is answered exactly as before as well. See Cancellation terms and rooms left.

POST/properties/availabilityGet the exact best availability, and optionally the cheapest offers, for up to 200 properties

POST/places/availabilityGet availability for a place or around a point, in catalogue order or sorted and filtered

POST/properties/{property_public_id}/offers/searchSearch the best allocation and all room products for one property

POST/availability/checkCheck availability for a single room/rate/date tuple

Property content

GET/propertiesPrice-free Channel Portfolio lookup with an optional place filter

GET/properties/{public_id}Full property content document

Reference & discovery

GET/countriesList canonical country identities and localized names

GET/reference/categoriesList property, room, or bed type references

GET/reference/attributesList stable amenity and feature definitions

GET/reference/place-typesDescribe canonical place kinds for one country

GET/reference/currenciesList the currencies a search can be priced in

GET/placesDiscover the canonical destination hierarchy

GET/places/{place_id}Resolve one canonical place identity

GET/service-zonesDiscover tenant service-zone identities

GET/service-zones/{public_id}Resolve one tenant service zone

GET/transfer-vehicle-typesDiscover private-transfer vehicle identities

GET/transfer-vehicle-types/{public_id}Resolve one tenant transfer vehicle type

GET/toursDiscover tenant tour and modality identities

GET/tours/{public_id}Get one tenant tour catalog document

GET/flightsDiscover tenant charter flight identities

GET/flights/{public_id}Get one tenant flight catalog document

GET/catalog/changesIncrementally synchronize a profile's Channel Portfolio

Booking

POST/prebookPin an allocation into a short-lived prebook token

POST/bookFinalize a prebook into a stored booking

GET/bookingsReconcile bookings by partner reference or bounded time window

GET/bookings/{public_id}Fetch a booking by public_id

PATCH/bookings/{public_id}Safely amend booking contact details

POST/bookings/{public_id}/cancellation-quotePreview the cancellation penalty for a booking

POST/bookings/{public_id}/cancelCancel a booking

Booking webhooks

See Booking webhooks before enabling delivery.

GET/webhook-endpointsList account-owned webhook endpoints

POST/webhook-endpointsRegister an endpoint and disclose its signing secret once

GET/webhook-endpoints/{public_id}Read one account-owned endpoint

PATCH/webhook-endpoints/{public_id}Change URL, description, or disabled state

DELETE/webhook-endpoints/{public_id}Soft-delete an endpoint and stop pending delivery

PUT/webhook-endpoints/{public_id}/subscriptionsReplace the complete endpoint subscription set

POST/webhook-endpoints/{public_id}/rotate-secretMint and disclose the next signing secret once

POST/webhook-endpoints/{public_id}/verifyEnqueue a signed endpoint verification probe

POST/webhook-endpoints/{public_id}/testEnqueue a signed non-booking test event

GET/webhook-endpoints/{public_id}/deliveriesInspect delivery and attempt outcomes

POST/webhook-endpoints/{public_id}/deliveries/{delivery_public_id}/retryQueue one manual attempt for a terminal delivery

Transfers

POST/transfer/searchSearch transfer offers for a route + date + party

POST/transfer/prebookRe-quote a transfer offer into a short-lived prebook token

POST/transfer/bookFinalize a transfer prebook token into a booking

Tours

POST/tour/searchSearch tour offers for a tour + departure date + party

POST/tour/prebookRe-quote a tour offer into a short-lived prebook token

POST/tour/bookFinalize a tour prebook token into a booking

Flights

POST/flight/searchSearch a charter-flight offer for a flight + departure date + typed party

POST/flight/prebookRe-quote a flight offer into a short-lived prebook token

POST/flight/bookFinalize a flight prebook token into a booking

Packages

POST/package/searchCompose selected product offers into one atomic package offer

POST/package/prebookRequote every package component and return a signed package token

POST/package/bookAtomically finalize the package booking

A package is read and cancelled through the canonical booking operations above: /bookings/{public_id}, /bookings/{public_id}/cancellation-quote and /bookings/{public_id}/cancel. The last two accept an optional item_public_ids[] to target individual services.

Trip bundling

POST/tripCreate a trip grouping over independently-confirmed bookings (R11)

GET/trip/{public_id}Read a trip with its members + combined totals

POST/trip/{public_id}/membersLink one more booking into a trip

DELETE/trip/{public_id}/members/{booking_public_id}Unlink a booking from a trip (non-destructive)

POST/trip/{public_id}/cancelCancel every member of a trip (each honours its own policy)

Generate a client

The contract is a standard OpenAPI 3.0 document, so you can generate a typed client in your language of choice instead of hand-writing HTTP calls. The specification is published at https://docs.adrasis.com/developer/openapi/partner-api.yaml (also downloadable from the interactive reference above).

openapi-generator (Java, Python, Go, C#, and more):

# Install once (requires a JRE)
npm install -g @openapitools/openapi-generator-cli

# Generate, e.g., a TypeScript client
openapi-generator-cli generate \
  -i https://docs.adrasis.com/developer/openapi/partner-api.yaml \
  -g typescript-fetch \
  -o ./adrasis-distribution-client

Swap -g typescript-fetch for python, go, csharp, etc. to target another language.

openapi-typescript (TypeScript types only; pairs well with a fetch wrapper):

npm install -D openapi-typescript

npx openapi-typescript https://docs.adrasis.com/developer/openapi/partner-api.yaml -o ./distribution-api.d.ts

Building an AI agent? See AI agent integration (MCP). The published site also serves an LLM-readable index at /llms.txt.