Updated 12 Nov 2026

Channel update

Developers (API)REST API v1

POST /hotels/{hotel_id}/ota-update asks Effective Tours to send availability to the booking channels of a hotel for a date range. Use it after you change prices, or to force a resync of dates.

Write calls are real. The call reaches the connected channels. There is no sandbox.

What it does

The call only enqueues per-channel jobs. Whether a channel accepts the push is decided later and asynchronously, and it is not known when the call returns. The response does not contain a per-channel delivery result.

Only companies of type distributor or hotelier can call it, and the company needs access to the hotel: it owns the hotel, or it has read-book or full access. Read-only access is not enough.

Request body

  • start_date: first date to update. It must be today or later, and defaults to today if you omit it.
  • end_date: optional. It must be after start_date.
  • channel_id: optional. One of agoda, booking, expedia, airbnb. If you omit it, all channels are updated.
curl -s -X POST "https://api.effectivetours.com/v1/hotels/{hotel_id}/ota-update" \
  -H "Authorization: Bearer $ET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"start_date": "2027-03-15", "end_date": "2027-03-31", "channel_id": "booking"}'

Response

success is always true for a well-formed request. The real outcome of the call is in ota_push:

  • sent: whether the update was handed over.
  • status: the status of the receiving side, success or ERROR, when sent.
  • message: a message from the receiving side when there is one, for example "no active channels".
  • reason: why nothing was sent: not_configured, http_error, timeout or invalid_response.
  • note: says that per-channel delivery results are not available in this response.

Example response:

{
  "success": true,
  "ota_push": {
    "sent": true,
    "status": "success",
    "message": null,
    "reason": null,
    "note": "Per-channel OTA delivery results are not available in this response."
  }
}

The note text above is shortened. Check sent, status and reason, not only success.

Errors

StatusMeaning
403The company type is not allowed, or no access to the hotel.
404Hotel not found or not accessible: {"detail":"Hotel not found"}.
410The hotel was removed: {"detail":"Requested HotelID: <id> not found."}.
422Invalid dates or channel code.

See also Daily prices.