asyncapi: 2.6.0 info: title: Airbnb Webhooks API description: >- The Airbnb Webhooks API enables connectivity partners to receive real-time notifications when events occur on the Airbnb platform. It supports webhook subscriptions for reservation changes, message creation, review submissions, listing calendar updates, and other key events. Partners can subscribe to events such as reservation confirmations, cancellations, guest messages, new reviews, and availability or pricing changes, allowing their systems to react immediately without needing to poll the API for updates. version: '2025.03.31' contact: name: Airbnb Developer Support url: https://developer.withairbnb.com/ externalDocs: description: Airbnb Developer Documentation url: https://developer.withairbnb.com/ servers: partnerWebhookEndpoint: url: '{webhookUrl}' protocol: https description: >- The partner-configured HTTPS endpoint that receives webhook notifications from Airbnb. Partners register their webhook URL through the Airbnb developer portal. variables: webhookUrl: description: >- The partner HTTPS URL configured to receive webhook events. security: - signatureVerification: [] channels: /webhook: description: >- The webhook endpoint that receives all Airbnb event notifications. Events are delivered as HTTP POST requests with a JSON payload. Each event includes a type field to identify the event category and a signature header for verification. publish: operationId: receiveWebhookEvent summary: Receive an Airbnb webhook event description: >- Airbnb sends event notifications to the partner webhook endpoint when relevant changes occur on the platform. Partners should respond with a 200 status code to acknowledge receipt. Events that are not acknowledged may be retried. message: oneOf: - $ref: '#/components/messages/ReservationCreated' - $ref: '#/components/messages/ReservationConfirmed' - $ref: '#/components/messages/ReservationCancelled' - $ref: '#/components/messages/ReservationUpdated' - $ref: '#/components/messages/ReservationCheckedIn' - $ref: '#/components/messages/ReservationCheckedOut' - $ref: '#/components/messages/MessageCreated' - $ref: '#/components/messages/ReviewSubmitted' - $ref: '#/components/messages/CalendarUpdated' - $ref: '#/components/messages/ListingUpdated' - $ref: '#/components/messages/PricingUpdated' - $ref: '#/components/messages/BookingCreated' - $ref: '#/components/messages/BookingConfirmed' - $ref: '#/components/messages/BookingCancelled' components: securitySchemes: signatureVerification: type: httpApiKey name: X-Airbnb-Signature in: header description: >- Airbnb signs each webhook payload using HMAC-SHA256 with the partner webhook secret. Partners must verify the signature in the X-Airbnb-Signature header to ensure the request originated from Airbnb and has not been tampered with. messages: ReservationCreated: name: reservation.created title: Reservation Created summary: >- Sent when a new reservation request is created by a guest. contentType: application/json payload: $ref: '#/components/schemas/ReservationEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: reservation.created description: >- The type of webhook event. ReservationConfirmed: name: reservation.confirmed title: Reservation Confirmed summary: >- Sent when a reservation is confirmed by the host or automatically through instant booking. contentType: application/json payload: $ref: '#/components/schemas/ReservationEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: reservation.confirmed description: >- The type of webhook event. ReservationCancelled: name: reservation.cancelled title: Reservation Cancelled summary: >- Sent when a reservation is cancelled by either the host or guest. contentType: application/json payload: $ref: '#/components/schemas/ReservationCancellationEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: reservation.cancelled description: >- The type of webhook event. ReservationUpdated: name: reservation.updated title: Reservation Updated summary: >- Sent when a reservation is modified, such as date changes or guest count updates. contentType: application/json payload: $ref: '#/components/schemas/ReservationEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: reservation.updated description: >- The type of webhook event. ReservationCheckedIn: name: reservation.checked_in title: Reservation Checked In summary: >- Sent when a guest checks in to the property. contentType: application/json payload: $ref: '#/components/schemas/ReservationEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: reservation.checked_in description: >- The type of webhook event. ReservationCheckedOut: name: reservation.checked_out title: Reservation Checked Out summary: >- Sent when a guest checks out of the property. contentType: application/json payload: $ref: '#/components/schemas/ReservationEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: reservation.checked_out description: >- The type of webhook event. MessageCreated: name: message.created title: Message Created summary: >- Sent when a new message is created in a reservation thread by either the host or guest. contentType: application/json payload: $ref: '#/components/schemas/MessageEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: message.created description: >- The type of webhook event. ReviewSubmitted: name: review.submitted title: Review Submitted summary: >- Sent when a new review is submitted by a guest for a completed reservation. contentType: application/json payload: $ref: '#/components/schemas/ReviewEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: review.submitted description: >- The type of webhook event. CalendarUpdated: name: calendar.updated title: Calendar Updated summary: >- Sent when the availability calendar for a listing is updated, including blocked dates and availability changes. contentType: application/json payload: $ref: '#/components/schemas/CalendarEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: calendar.updated description: >- The type of webhook event. ListingUpdated: name: listing.updated title: Listing Updated summary: >- Sent when a listing is updated, including changes to description, amenities, photos, or status. contentType: application/json payload: $ref: '#/components/schemas/ListingEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: listing.updated description: >- The type of webhook event. PricingUpdated: name: pricing.updated title: Pricing Updated summary: >- Sent when the pricing for a listing is changed, including nightly rates, cleaning fees, and discount rules. contentType: application/json payload: $ref: '#/components/schemas/PricingEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: pricing.updated description: >- The type of webhook event. BookingCreated: name: booking.created title: Experience Booking Created summary: >- Sent when a new experience booking is created by a guest. contentType: application/json payload: $ref: '#/components/schemas/BookingEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: booking.created description: >- The type of webhook event. BookingConfirmed: name: booking.confirmed title: Experience Booking Confirmed summary: >- Sent when an experience booking is confirmed by the host. contentType: application/json payload: $ref: '#/components/schemas/BookingEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: booking.confirmed description: >- The type of webhook event. BookingCancelled: name: booking.cancelled title: Experience Booking Cancelled summary: >- Sent when an experience booking is cancelled. contentType: application/json payload: $ref: '#/components/schemas/BookingEvent' headers: type: object properties: X-Airbnb-Signature: type: string description: >- HMAC-SHA256 signature of the request body. X-Airbnb-Event-Type: type: string const: booking.cancelled description: >- The type of webhook event. schemas: WebhookEventBase: type: object required: - event_id - event_type - timestamp properties: event_id: type: string description: >- A unique identifier for this webhook event, used for idempotency and deduplication. event_type: type: string description: >- The type of event that triggered the webhook notification. timestamp: type: string format: date-time description: >- The ISO 8601 timestamp when the event occurred. api_version: type: string description: >- The API version used for the webhook payload format. ReservationEvent: allOf: - $ref: '#/components/schemas/WebhookEventBase' - type: object required: - data properties: data: type: object required: - reservation_id - listing_id - status properties: reservation_id: type: string description: >- The unique identifier of the reservation. confirmation_code: type: string description: >- The human-readable confirmation code. listing_id: type: string description: >- The identifier of the associated listing. status: type: string description: >- The current status of the reservation. enum: - pending - accepted - denied - cancelled - checked_in - checked_out guest_id: type: string description: >- The identifier of the guest. check_in: type: string format: date description: >- The guest check-in date. check_out: type: string format: date description: >- The guest check-out date. guests_count: type: integer description: >- The number of guests in the reservation. total_price: type: number format: double description: >- The total price of the reservation. currency: type: string description: >- The ISO 4217 currency code. pattern: '^[A-Z]{3}$' ReservationCancellationEvent: allOf: - $ref: '#/components/schemas/WebhookEventBase' - type: object required: - data properties: data: type: object required: - reservation_id - listing_id - status properties: reservation_id: type: string description: >- The unique identifier of the cancelled reservation. confirmation_code: type: string description: >- The human-readable confirmation code. listing_id: type: string description: >- The identifier of the associated listing. status: type: string const: cancelled description: >- The cancelled status of the reservation. cancelled_by: type: string description: >- Who initiated the cancellation. enum: - host - guest - airbnb cancellation_reason: type: string description: >- The reason provided for the cancellation. refund_amount: type: number format: double description: >- The amount refunded to the guest. currency: type: string description: >- The ISO 4217 currency code. pattern: '^[A-Z]{3}$' MessageEvent: allOf: - $ref: '#/components/schemas/WebhookEventBase' - type: object required: - data properties: data: type: object required: - message_id - reservation_id - sender_type properties: message_id: type: string description: >- The unique identifier of the message. reservation_id: type: string description: >- The identifier of the associated reservation. sender_type: type: string description: >- Whether the message was sent by the host or guest. enum: - host - guest message_preview: type: string description: >- A truncated preview of the message content. maxLength: 200 ReviewEvent: allOf: - $ref: '#/components/schemas/WebhookEventBase' - type: object required: - data properties: data: type: object required: - review_id - reservation_id - reviewer_type properties: review_id: type: string description: >- The unique identifier of the review. reservation_id: type: string description: >- The identifier of the associated reservation. listing_id: type: string description: >- The identifier of the reviewed listing. reviewer_type: type: string description: >- Whether the review was submitted by a guest or host. enum: - guest - host rating: type: integer description: >- The overall star rating from 1 to 5. minimum: 1 maximum: 5 CalendarEvent: allOf: - $ref: '#/components/schemas/WebhookEventBase' - type: object required: - data properties: data: type: object required: - listing_id - start_date - end_date properties: listing_id: type: string description: >- The identifier of the listing whose calendar changed. start_date: type: string format: date description: >- The start of the date range that was updated. end_date: type: string format: date description: >- The end of the date range that was updated. change_type: type: string description: >- The type of calendar change that occurred. enum: - availability - blocked - reservation ListingEvent: allOf: - $ref: '#/components/schemas/WebhookEventBase' - type: object required: - data properties: data: type: object required: - listing_id properties: listing_id: type: string description: >- The identifier of the listing that was updated. changed_fields: type: array description: >- The fields that were modified on the listing. items: type: string status: type: string description: >- The current status of the listing. enum: - active - inactive - pending - unlisted PricingEvent: allOf: - $ref: '#/components/schemas/WebhookEventBase' - type: object required: - data properties: data: type: object required: - listing_id properties: listing_id: type: string description: >- The identifier of the listing whose pricing changed. changed_fields: type: array description: >- The pricing fields that were modified. items: type: string enum: - nightly_price - cleaning_fee - weekly_discount - monthly_discount - extra_guest_fee effective_date: type: string format: date description: >- The date from which the pricing changes take effect. BookingEvent: allOf: - $ref: '#/components/schemas/WebhookEventBase' - type: object required: - data properties: data: type: object required: - booking_id - experience_id - status properties: booking_id: type: string description: >- The unique identifier of the experience booking. confirmation_code: type: string description: >- The human-readable confirmation code. experience_id: type: string description: >- The identifier of the associated experience. schedule_id: type: string description: >- The identifier of the booked schedule slot. status: type: string description: >- The current status of the booking. enum: - pending - confirmed - cancelled - completed guest_id: type: string description: >- The identifier of the guest. guests_count: type: integer description: >- The number of guests in the booking.