airbnb Schedules API
Operations for managing experience schedules, time slots, and availability for hosted activities.
Operations for managing experience schedules, time slots, and availability for hosted activities.
openapi: 3.1.0
info:
title: Airbnb Activities Bookings Schedules API
description: The Airbnb Activities API allows approved partners to integrate with Airbnb Experiences, the platform's marketplace for hosted activities and tours. It provides endpoints for managing experience listings, handling bookings, and synchronizing availability for activities offered by local hosts. Partners can use the API to build integrations that help experience hosts manage their offerings alongside other tour and activity platforms, enabling centralized management of schedules, pricing, and guest communications.
version: 2025.03.31
contact:
name: Airbnb Developer Support
url: https://developer.withairbnb.com/
termsOfService: https://www.airbnb.com/terms
servers:
- url: https://api.airbnb.com/v2
description: Airbnb Production API Server
security:
- oauth2: []
tags:
- name: Schedules
description: Operations for managing experience schedules, time slots, and availability for hosted activities.
paths:
/experiences/{experience_id}/schedules:
get:
operationId: listExperienceSchedules
summary: List Experience Schedules
description: Retrieves the available time slots and schedule entries for a specific experience over a date range.
tags:
- Schedules
parameters:
- $ref: '#/components/parameters/experienceIdParam'
- name: start_date
in: query
required: true
description: The start date for the schedule range in ISO 8601 format.
schema:
type: string
format: date
- name: end_date
in: query
required: true
description: The end date for the schedule range in ISO 8601 format.
schema:
type: string
format: date
responses:
'200':
description: The schedule entries for the specified date range.
content:
application/json:
schema:
type: object
properties:
schedules:
type: array
items:
$ref: '#/components/schemas/Schedule'
'400':
description: The date range is invalid or missing.
'401':
description: Authentication credentials are missing or invalid.
'404':
description: The experience was not found.
post:
operationId: createExperienceSchedule
summary: Create an Experience Schedule
description: Creates a new scheduled time slot for an experience, specifying the date, start time, and maximum number of attendees.
tags:
- Schedules
parameters:
- $ref: '#/components/parameters/experienceIdParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduleCreate'
responses:
'201':
description: The schedule was successfully created.
content:
application/json:
schema:
$ref: '#/components/schemas/Schedule'
'400':
description: The request body contains invalid or missing fields.
'401':
description: Authentication credentials are missing or invalid.
'404':
description: The experience was not found.
/experiences/{experience_id}/schedules/{schedule_id}:
put:
operationId: updateExperienceSchedule
summary: Update an Experience Schedule
description: Updates an existing schedule entry for an experience, allowing changes to time, capacity, or cancellation of the time slot.
tags:
- Schedules
parameters:
- $ref: '#/components/parameters/experienceIdParam'
- $ref: '#/components/parameters/scheduleIdParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduleUpdate'
responses:
'200':
description: The schedule was successfully updated.
content:
application/json:
schema:
$ref: '#/components/schemas/Schedule'
'400':
description: The request body contains invalid or missing fields.
'401':
description: Authentication credentials are missing or invalid.
'404':
description: The experience or schedule was not found.
delete:
operationId: deleteExperienceSchedule
summary: Delete an Experience Schedule
description: Removes a scheduled time slot from an experience. Existing bookings for the time slot must be handled before deletion.
tags:
- Schedules
parameters:
- $ref: '#/components/parameters/experienceIdParam'
- $ref: '#/components/parameters/scheduleIdParam'
responses:
'204':
description: The schedule was successfully deleted.
'401':
description: Authentication credentials are missing or invalid.
'404':
description: The experience or schedule was not found.
'409':
description: The schedule has active bookings and cannot be deleted.
components:
schemas:
ScheduleCreate:
type: object
required:
- date
- start_time
properties:
date:
type: string
format: date
description: The date of the scheduled session.
start_time:
type: string
description: The start time in HH:MM format.
pattern: ^[0-2][0-9]:[0-5][0-9]$
max_guests:
type: integer
description: Override the maximum number of guests for this specific session.
minimum: 1
ScheduleUpdate:
type: object
properties:
start_time:
type: string
description: The updated start time in HH:MM format.
pattern: ^[0-2][0-9]:[0-5][0-9]$
max_guests:
type: integer
description: The updated maximum number of guests for this session.
minimum: 1
status:
type: string
description: The updated status of the schedule entry.
enum:
- open
- cancelled
Schedule:
type: object
properties:
id:
type: string
description: The unique identifier of the schedule entry.
experience_id:
type: string
description: The identifier of the associated experience.
date:
type: string
format: date
description: The date of the scheduled session.
start_time:
type: string
description: The start time in HH:MM format.
pattern: ^[0-2][0-9]:[0-5][0-9]$
end_time:
type: string
description: The end time in HH:MM format.
pattern: ^[0-2][0-9]:[0-5][0-9]$
max_guests:
type: integer
description: The maximum number of guests for this session.
minimum: 1
booked_guests:
type: integer
description: The current number of booked guests.
minimum: 0
available_spots:
type: integer
description: The number of remaining available spots.
minimum: 0
status:
type: string
description: The status of the schedule entry.
enum:
- open
- full
- cancelled
parameters:
scheduleIdParam:
name: schedule_id
in: path
required: true
description: The unique identifier of the schedule entry.
schema:
type: string
experienceIdParam:
name: experience_id
in: path
required: true
description: The unique identifier of the experience.
schema:
type: string
securitySchemes:
oauth2:
type: oauth2
description: Airbnb uses OAuth 2.0 for authentication. Partners must register their application to receive a client ID and secret, then obtain access tokens through the authorization code flow.
flows:
authorizationCode:
authorizationUrl: https://www.airbnb.com/oauth2/auth
tokenUrl: https://api.airbnb.com/v2/oauth2/authorizations
scopes:
experiences:read: Read experience information
experiences:write: Create and update experiences
bookings:read: Read booking information
bookings:write: Confirm and cancel bookings
messages:read: Read booking messages
messages:write: Send messages to guests
externalDocs:
description: Airbnb Developer Documentation
url: https://developer.withairbnb.com/