reservation_owned_by_channel

The booking belongs to a channel (Airbnb, Booking.com, Vrbo), including one that came in through a PMS. Change or cancel it on the channel.

HTTP 409The resource is not in a state that allows this operation.

When it fires

You tried to change or cancel a booking that belongs to a channel — Airbnb, Booking.com, Vrbo and the like. The channel is the system of record for its bookings, so they are changed there.

This includes a channel booking that reached Repull through a PMS: the PMS cannot change it either. owner names the channel, and provider the PMS it came through.

Response shape

Every Repull error follows the same envelope. The code is stable and safe to switch on.

{
  "error": {
    "code": "reservation_owned_by_channel",
    "message": "This reservation came from airbnb through Hostaway. Change it on airbnb; the change reaches this workspace with the next sync.",
    "fix": "This booking belongs to a channel (Airbnb, Booking.com, Vrbo, …). Change it on the channel; the change reaches Repull with the next sync and the matching webhook fires.",
    "docs_url": "https://repull.dev/docs/errors/reservation_owned_by_channel",
    "request_id": "req_01J5X7Y8Z9ABCDEF12345678",
    "provider": "hostaway",
    "owner": "airbnb"
  }
}

How to fix

  1. Do not retry.
  2. Make the change or cancellation on the channel named in `owner`. It reaches Repull with the next sync and `reservation.updated` or `reservation.cancelled` fires.
  3. Creating channel bookings is not possible either: `platform` on `POST /v1/reservations` accepts only `direct`, `website` and `owner`.

Examples

curl

curl -X POST https://api.repull.dev/v1/reservations/236354/cancel \
  -H "Authorization: Bearer sk_live_YOUR_KEY"
# → 409 reservation_owned_by_channel, "owner": "airbnb"

TypeScript

const { error } = await res.json()
if (error?.code === 'reservation_owned_by_channel') {
  return { changeOnChannel: error.owner } // e.g. 'airbnb'
}

If you're an AI agent

This booking belongs to a channel (owner) and can only be changed or cancelled there. Do not retry. Tell the user to do it on the channel named in `owner`; it syncs back automatically.

Hit an error that isn't covered? Email hello@repull.dev with the request id from the response headers.

AI