airbnb Photos API

Operations for uploading, updating, and managing listing photos.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/airbnb-photos-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

airbnb-photos-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Airbnb Activities Bookings Photos 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: Photos
  description: Operations for uploading, updating, and managing listing photos.
paths:
  /listings/{listing_id}/photos:
    get:
      operationId: listListingPhotos
      summary: List Listing Photos
      description: Retrieves all photos associated with a specific listing, including their captions, sort order, and dimensions.
      tags:
      - Photos
      parameters:
      - $ref: '#/components/parameters/listingIdParam'
      responses:
        '200':
          description: A list of photos for the listing.
          content:
            application/json:
              schema:
                type: object
                properties:
                  photos:
                    type: array
                    items:
                      $ref: '#/components/schemas/Photo'
        '401':
          description: Authentication credentials are missing or invalid.
        '404':
          description: The listing was not found.
    post:
      operationId: uploadListingPhoto
      summary: Upload a Listing Photo
      description: Uploads a new photo to a listing. Photos can include captions and a sort order to control display position in the listing gallery.
      tags:
      - Photos
      parameters:
      - $ref: '#/components/parameters/listingIdParam'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - photo
              properties:
                photo:
                  type: string
                  format: binary
                  description: The photo file to upload.
                caption:
                  type: string
                  description: An optional caption describing the photo.
                sort_order:
                  type: integer
                  description: The display position of the photo in the listing gallery.
      responses:
        '201':
          description: The photo was successfully uploaded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Photo'
        '400':
          description: The uploaded file is invalid or exceeds size limits.
        '401':
          description: Authentication credentials are missing or invalid.
        '404':
          description: The listing was not found.
  /listings/{listing_id}/photos/{photo_id}:
    delete:
      operationId: deleteListingPhoto
      summary: Delete a Listing Photo
      description: Removes a specific photo from a listing by its identifier.
      tags:
      - Photos
      parameters:
      - $ref: '#/components/parameters/listingIdParam'
      - $ref: '#/components/parameters/photoIdParam'
      responses:
        '204':
          description: The photo was successfully deleted.
        '401':
          description: Authentication credentials are missing or invalid.
        '404':
          description: The listing or photo was not found.
components:
  parameters:
    listingIdParam:
      name: listing_id
      in: path
      required: true
      description: The unique identifier of the listing.
      schema:
        type: string
    photoIdParam:
      name: photo_id
      in: path
      required: true
      description: The unique identifier of the photo.
      schema:
        type: string
  schemas:
    Photo:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the photo.
        url:
          type: string
          format: uri
          description: The URL where the photo is hosted.
        caption:
          type: string
          description: A caption describing the photo.
        sort_order:
          type: integer
          description: The display position of the photo in the listing gallery.
        width:
          type: integer
          description: The width of the photo in pixels.
        height:
          type: integer
          description: The height of the photo in pixels.
  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/