Skip to main content

Airbnb on Channex

Airbnb connects differently from Booking.com: instead of a single create with a hotel_id, it uses an OAuth flow, the channel is created asynchronously, and listings are mapped one at a time. ChannexAirbnbService / ChannexAirbnbController expose it under /api/v1/admin/channex/airbnb. channelId is our channel holding the Channex API key; {id} in the path is the Channex channel UUID created by the OAuth flow.

Connection flow

1. Get the OAuth link        POST …/airbnb/connection-link?channelId=chnl_X   (body: ["prop_…"])
→ returns data.attributes.url — the host opens it and authorizes on Airbnb
2. Channex creates the channel asynchronously
Poll for it GET …/airbnb/channels?channelId=chnl_X&propertyId=prop_…
3. Read listings/rates POST …/airbnb/{id}/mapping-details?channelId=chnl_X&accessToken=…&userId=…
(authenticated by the channel's OAuth tokens, from its settings.tokens)
4. Map each listing POST …/airbnb/{id}/mappings?channelId=chnl_X&ratePlanId=rp_…&listingId=<airbnb id>
5. Activate POST …/airbnb/{id}/activate?channelId=chnl_X
6. Pull future reservations POST …/airbnb/{id}/load-future-reservations?channelId=chnl_X[&airbnbListingId=…]

load_future_reservations just asks Channex to push existing Airbnb reservations — they then arrive through the same revisions feed and become PMS bookings (source = Airbnb). Inbound Airbnb bookings need no separate code.

Per-mapping settings & promotions

Airbnb exposes extra per-listing controls (each scoped to a channel + mapping):

MethodPathPurpose
GET / PUT…/airbnb/{id}/mappings/{mappingId}/pricing-settingsAirbnb pricing settings
GET / PUT…/airbnb/{id}/mappings/{mappingId}/availability-settingsAirbnb availability settings
GET…/airbnb/{id}/promotionslist promotions
POST…/airbnb/{id}/promotions/enable · /disabletoggle a promotion
GET…/airbnb/performance/{resource}performance dashboard passthrough (stats, listings, views, …)

group_id

connection-link requires a group_id; it defaults to the channel's configured channexGroupId when not supplied.

Bard also has a separate, direct Livbnb integration in crs (an Airbnb-style channel reached without Channex). The Airbnb-on-Channex flow described here is distinct from that.