Updated 12 Nov 2026

Pattern: first connection

Developers (API)REST API v1

This pattern proves that your server can reach the API, that your key works and which hotels it sees. Run it before you write any other code. It uses only read calls, so it is safe at any time. See Integration patterns for the principles that apply to every pattern.

Store your key in an environment variable on your server (the examples call it ET_API_KEY). The company administrator finds or generates the key in the Effective Tours web app under Company Settings > Company Profile > API Access. Regenerating the key invalidates the old one. If you have no Effective Tours account, use the contact form.

Steps

1. Check that the service answers

GET /health needs no key. It confirms that the application is running; it does not check your key or your data. See GET /health.

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

Example response:

{
  "status": "ok"
}

2. Check that your key works

GET /auth/me returns the company that your key belongs to. A good answer proves the key is valid and the company is active, and company_type tells you which operations you may use (for example, writing prices is for distributors only). See GET /auth/me.

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

Example response (abbreviated, fictional values):

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

3. List the hotels your key can see

GET /hotels/ returns every hotel your company owns or has access to. Keep each hotel id: every other call needs it as {hotel_id} or {id}. See GET /hotels/.

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

Example response (abbreviated: one hotel shown):

[
  {
    "id": 1001,
    "name": "Example Guest House",
    "category": "Guest house",
    "address": "1 Example Street",
    "rate_type": "ROOM",
    "company": {
      "id": 501,
      "name": "Example Distributor Ltd",
      "company_type": "DISTRIBUTOR"
    },
    "city": {
      "id": 301,
      "country": {
        "id": 201,
        "code": "XX",
        "name": "Exampleland"
      },
      "name": "Exampleville"
    },
    "connections": {}
  }
]

The next step is Pattern: map rooms and rates. The calls are described in Hotels, rooms and rates.

What can go wrong

StatusBodyWhat to do
401{"detail":"Invalid API key"}The key is wrong, was regenerated, or the company is inactive. Check the key in Company Profile > API Access.
503{"detail":"Authentication backend unavailable"}A temporary problem on our side. Wait and retry the read with a growing pause.
429not specifiedThere is no published rate limit, but back off and retry later.
200 with an empty list from /hotels/[]The key is valid but sees no hotels. Check which hotels your company owns or has access to in the Effective Tours web app.
no answer at allnoneCheck your network and the base URL https://api.effectivetours.com/v1.