Skip to content

API Reference

Fresh Source: docs.airtop.ai

Complete API endpoint reference for Airtop. All endpoints require an API key via the Authorization: Bearer <API_KEY> header.

Base URL: https://api.airtop.ai/v1

Sessions

MethodEndpointDescription
GET/sessionsList all active sessions
POST/sessionsCreate a new browser session
GET/sessions/{sessionId}Get session info and status
POST/sessions/{sessionId}/terminateTerminate a session
POST/sessions/{sessionId}/save-profileSave browser profile from session

Create Session

POST /sessions

Request Body:

json
{
  "configuration": {
    "timeoutMinutes": 10,
    "persistProfile": false,
    "profileName": "optional-profile-name",
    "solveCaptcha": false,
    "screenResolution": "1920x1080",
    "proxy": {
      "type": "airtop",
      "options": {
        "country": "US",
        "sticky": true
      }
    }
  }
}

Response:

json
{
  "data": {
    "id": "session-uuid",
    "status": "running",
    "cdpWsUrl": "wss://...",
    "createdAt": "2025-01-01T00:00:00Z"
  }
}

Terminate Session

POST /sessions/{sessionId}/terminate

Request Body (optional):

json
{
  "saveProfileOnTermination": "my-profile"
}

Windows

MethodEndpointDescription
POST/sessions/{sessionId}/windowsCreate a new window
GET/sessions/{sessionId}/windowsList windows in session
DELETE/sessions/{sessionId}/windows/{windowId}Close a window
POST/sessions/{sessionId}/windows/{windowId}/clickClick an element
POST/sessions/{sessionId}/windows/{windowId}/typeType text into element
POST/sessions/{sessionId}/windows/{windowId}/hoverHover over element
POST/sessions/{sessionId}/windows/{windowId}/scrollScroll the page
POST/sessions/{sessionId}/windows/{windowId}/scrapeScrape page content
POST/sessions/{sessionId}/windows/{windowId}/page-queryQuery page with AI
POST/sessions/{sessionId}/windows/{windowId}/paginated-extractionMulti-page extraction
POST/sessions/{sessionId}/windows/{windowId}/prompt-contentSummarize/transform
POST/sessions/{sessionId}/windows/{windowId}/screenshotTake screenshot
POST/sessions/{sessionId}/windows/{windowId}/monitorWatch for condition
POST/sessions/{sessionId}/windows/{windowId}/fill-formAI form filling
POST/sessions/{sessionId}/windows/{windowId}/form-fillerAlternative form fill

Create Window

POST /sessions/{sessionId}/windows

Request Body:

json
{
  "url": "https://example.com",
  "waitUntil": "load",
  "screenResolution": "1920x1080"
}

Page Query

POST /sessions/{sessionId}/windows/{windowId}/page-query

Request Body:

json
{
  "prompt": "What is the main heading?",
  "configuration": {
    "outputSchema": {
      "type": "object",
      "properties": {
        "heading": { "type": "string" }
      }
    },
    "costThresholdCredits": 10,
    "timeThresholdSeconds": 30
  }
}

Click Element

POST /sessions/{sessionId}/windows/{windowId}/click

Request Body:

json
{
  "elementDescription": "the Sign In button"
}

Type Text

POST /sessions/{sessionId}/windows/{windowId}/type

Request Body:

json
{
  "elementDescription": "the email input field",
  "text": "user@example.com"
}

Fill Form

POST /sessions/{sessionId}/windows/{windowId}/fill-form

Request Body:

json
{
  "customData": {
    "firstName": "John",
    "lastName": "Doe",
    "email": "john@example.com"
  }
}

Monitor

POST /sessions/{sessionId}/windows/{windowId}/monitor

Request Body:

json
{
  "condition": "The price drops below $50",
  "configuration": {
    "intervalMs": 5000,
    "timeoutMs": 300000
  }
}

Automations

MethodEndpointDescription
GET/automationsList all automations
POST/automationsCreate an automation
PUT/automations/{id}Update an automation
DELETE/automations/{id}Delete an automation
GET/automations/{id}Get automation details
POST/automations/{id}/executeExecute automation asynchronously

Profiles

MethodEndpointDescription
DELETE/profiles/{profileId}Delete a saved profile

Files

MethodEndpointDescription
GET/filesList uploaded files
POST/filesUpload a file
GET/files/{fileId}Get file details
DELETE/files/{fileId}Delete a file
POST/files/{fileId}/pushPush file to session

Requests

MethodEndpointDescription
GET/requests/{requestId}/statusGet async request status

Authentication

All requests require an API key:

Authorization: Bearer YOUR_API_KEY

Get your API key from portal.airtop.ai.

Error Responses

All errors follow this format:

json
{
  "error": {
    "code": 400,
    "message": "Invalid request body",
    "details": "..."
  }
}
CodeMeaning
400Bad Request — invalid parameters
401Unauthorized — invalid or missing API key
404Not Found — resource doesn't exist or expired
422Validation Error — request body schema mismatch
429Rate Limited — too many requests
503Service Unavailable — temporary capacity issue

Rate Limits

Rate limits depend on your plan. Check your current limits and usage at portal.airtop.ai.

When rate limited, wait and retry with exponential backoff.

Unofficial SOP documentation for Airtop