Airtop Sessions API

Create and manage cloud browser sessions.

OpenAPI Specification

airtop-sessions-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Airtop AI Query Sessions API
  description: REST API for Airtop, a cloud-browser platform for AI agents. Create and manage remote Chromium browser sessions, open and navigate windows, drive pages with natural-language interactions (click, type, hover, scroll), query and extract page content with AI, capture screenshots, and persist state with profiles. All requests are authenticated with a Bearer API key.
  termsOfService: https://www.airtop.ai/legal/terms-of-service
  contact:
    name: Airtop Support
    url: https://docs.airtop.ai
  version: '1.0'
servers:
- url: https://api.airtop.ai/api/v1
  description: Airtop production API
security:
- bearerAuth: []
tags:
- name: Sessions
  description: Create and manage cloud browser sessions.
paths:
  /sessions:
    get:
      operationId: listSessions
      tags:
      - Sessions
      summary: List sessions
      description: Returns the cloud browser sessions for the authenticated account.
      parameters:
      - name: offset
        in: query
        required: false
        schema:
          type: integer
      - name: limit
        in: query
        required: false
        schema:
          type: integer
      - name: status
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: A list of sessions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionsListResponse'
    post:
      operationId: createSession
      tags:
      - Sessions
      summary: Create session
      description: Starts a new cloud browser session (a remote Chromium instance) with optional profile, proxy, recording, captcha solving, and idle timeout configuration. Returns connection URLs (CDP and WebDriver) for the live session.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SessionConfig'
      responses:
        '200':
          description: The created session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
  /sessions/{sessionId}:
    get:
      operationId: getSession
      tags:
      - Sessions
      summary: Get session info
      description: Returns details and status for a single session.
      parameters:
      - $ref: '#/components/parameters/SessionId'
      responses:
        '200':
          description: The session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
    delete:
      operationId: terminateSession
      tags:
      - Sessions
      summary: Terminate session
      description: Ends a session and releases its cloud browser resources.
      parameters:
      - $ref: '#/components/parameters/SessionId'
      responses:
        '200':
          description: Session terminated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeResponse'
  /requests/{requestId}:
    get:
      operationId: getRequestStatus
      tags:
      - Sessions
      summary: Get request status
      description: Returns the status and result of an asynchronous request previously issued against the API.
      parameters:
      - name: requestId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: The request status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeResponse'
components:
  parameters:
    SessionId:
      name: sessionId
      in: path
      required: true
      description: Identifier of the cloud browser session.
      schema:
        type: string
  schemas:
    SessionResponse:
      allOf:
      - $ref: '#/components/schemas/Envelope'
      - type: object
        properties:
          data:
            $ref: '#/components/schemas/Session'
    SessionConfig:
      type: object
      properties:
        configuration:
          type: object
          properties:
            profileName:
              type: string
              description: Name of a profile to load into the session.
            extensionIds:
              type: array
              items:
                type: string
              description: Chrome Web Store extension IDs to load.
            proxy:
              description: Proxy configuration (boolean, object, or array).
              oneOf:
              - type: boolean
              - type: object
              - type: array
                items:
                  type: object
            record:
              type: boolean
              description: Enable session recording.
            solveCaptcha:
              type: boolean
              description: Automatically solve captcha challenges.
            timeoutMinutes:
              type: integer
              default: 10
              description: Idle timeout in minutes before the session ends.
    Session:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        cdpWsUrl:
          type: string
          description: Chrome DevTools Protocol WebSocket URL for the session.
        cdpUrl:
          type: string
        webDriverUrl:
          type: string
        profileName:
          type: string
    EnvelopeResponse:
      allOf:
      - $ref: '#/components/schemas/Envelope'
      - type: object
        properties:
          data:
            type: object
    Envelope:
      type: object
      properties:
        meta:
          type: object
          properties:
            requestId:
              type: string
            status:
              type: string
        errors:
          type: array
          items:
            type: object
        warnings:
          type: array
          items:
            type: object
    SessionsListResponse:
      allOf:
      - $ref: '#/components/schemas/Envelope'
      - type: object
        properties:
          data:
            type: object
            properties:
              sessions:
                type: array
                items:
                  $ref: '#/components/schemas/Session'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Airtop API key supplied as a Bearer token in the Authorization header: `Authorization: Bearer YOUR_API_KEY`.'