Updated 12 Nov 2026

Effective Tours REST API v1

Developers (API)REST API v1

The Effective Tours REST API is a JSON API over HTTPS. You use it to read hotels, rooms, rates and reservations, to write reservations and daily prices, and to ask Effective Tours to resend availability to the connected channels. This chapter is for developers who build a PMS or channel integration. The full machine-readable reference is at https://api.effectivetours.com/docs.

Base URL

Every call goes to:

https://api.effectivetours.com/v1

Get your API key

There is one API key per company. The company administrator finds it in the Effective Tours web app:

  1. Log in with the company administrator account.
  2. Click the company name in the top-right menu.
  3. Open Company Settings, then Company Profile, then the API Access tab.
  4. Copy the value of the API Key field. If the field is empty, click the button next to it to generate a key.

Generating a new key invalidates the old one. No public sign-up creates a company. If you do not have an Effective Tours account yet, use the contact form.

Keep the key on your server. Never put it in a URL, a log, browser code or a mobile app. The API accepts cross-origin requests, so a browser can technically call it, but that would expose the key to every visitor.

Authenticate

Send the key as a Bearer token in the Authorization header of every call, except /health:

Authorization: Bearer YOUR_API_KEY

The examples in this chapter read the key from the ET_API_KEY environment variable.

First calls

Start with /health. It needs no key and only tells you the application is running. See GET /health.

curl -s "https://api.effectivetours.com/v1/health"

Example response:

{
  "status": "ok"
}

Then call /auth/me to check that your key is valid and to see which company it belongs to. See GET /auth/me.

curl -s "https://api.effectivetours.com/v1/auth/me" \
  -H "Authorization: Bearer $ET_API_KEY"

Example response:

{
  "id": 3001,
  "name": "Example Distributor Ltd",
  "company_type": "DISTRIBUTOR"
}

If the key is wrong, the answer is 401 with {"detail":"Invalid API key"}. The same answer is given for a company that is not active. If the authentication backend is down, you get 503 with {"detail":"Authentication backend unavailable"}.

Find the current version

The info.version field of https://api.effectivetours.com/v1/openapi.json is a fixed label, currently 0.1.0. It does not change when operations are added, so it tells you nothing about changes.

Before you start work, fetch the OpenAPI document again and treat its list of operations (method and path) as the truth.

No sandbox: be careful with writes

There is no separate sandbox. A reservation or a price you write is real and reaches the connected channels. Read calls are safe at any time. For write tests:

  • Use dates far in the future.
  • Create only a few test bookings and cancel each one right after the test.
  • Connect OTAs only after your integration works.

Rate limits

There is no published rate limit. Be gentle: poll a property no more often than every 2-5 minutes, keep date windows small, and back off on 429 and 503.

What the API does not do yet

  • There is no availability read endpoint. Availability is computed by Effective Tours from units and reservations, so write every booking from your system as a reservation. Tell us what you miss.
  • There are no webhooks and no push feed, and no "changed since" filter. You poll. Tell us what you miss.
  • There is no pagination on lists. Use date windows. Tell us what you miss.
  • There is no operation to update restrictions such as minimum stay or closed dates. Tell us what you miss.

In this chapter

The XML/SOAP API ends on 1 March 2027. See XML/SOAP API v2.0 ends on 1 March 2027.