Overview

The Ananas GDS v1 API provides read access to published fact sheets, stop sale calendars, photo galleries, B2B invoices, and rooming lists for all properties your API key is authorised to access. The API is token-based — the token appears in the URL path, making it compatible with virtually any HTTP client. All responses are personalized per tour operator: your mapping identity codes, room codes/names, and fact/photo overrides are applied automatically.

Base URL & Token

Base URL pattern
https://app.ananas-gds.com/api/v1/{endpoint}/{your-api-token}/

Create and manage API keys in Developer Tools → API Keys . Each key has granular permissions for facts, stop sale, photos, invoices, and rooming lists.

Endpoints

Endpoint Data Permission Flag
/api/v1/facts/{token}/ Full fact sheet for all accessible properties. fact_sheet
/api/v1/stop-sale/{token}/ Availability calendar with status codes and allotments. stop_sale
/api/v1/photos/{token}/ Photo gallery URLs for all properties. hotel_photos
/api/v1/invoices/{token}/ B2B invoices the account is a party to, with line items and property reference (received drafts excluded). invoices
/api/v1/rooming/{token}/ Rooming ledgers with reservation entries, both TO and hotel side. rooming

Response Format

All endpoints return JSON by default; send Accept: application/xml for the same envelope as XML. The response is a meta object plus a data array of property objects — one per property accessible to the token. Each object includes the property ID, hotel name, and the data specific to the endpoint.

Testing: develop against the free test lane instead of the live endpoints — Dev Tools → API Integration → Send Test Request (or the ananas_dev_test_call MCP tool). It returns the identical response shape, capped at 10 properties, and never counts against your token rate limit.

Error Handling

Code Meaning
403 Token valid but missing permission for this endpoint.
404 Token not found or revoked.
429 Rate limit exceeded. Back off and retry.

Polling Recommendations

Ananas GDS is not a real-time booking system. Recommended polling frequencies: fact sheets — once per day; stop sale — every 15 minutes to 1 hour depending on plan; photos — once per week unless you detect a change notification via webhook.

Use webhooks for stop sale

Instead of polling stop sale, register a webhook for stopsale.created , stopsale.updated , and stopsale.cancelled events. This gives you real-time updates without unnecessary API calls.