Skip to documentation
Browser Fleet API

Introduction

Get Started

Use the public API to define reusable browser extracts with flat text steps and a storage contract, then poll each run's data and resolved storage result.

Base URL

Set the deployment origin once and append the documented paths exactly as shown.

https://api.browserfleet.dev

Authentication

Create and copy your organization's API key on the Browser Fleet dashboard Settings page. Use one API key per request. Bearer auth is preferred; x-api-key is accepted for clients that cannot set bearer headers.

Authorization: Bearer <api_key>
x-api-key: <api_key>

Quick Start

Store your OpenCode Go and Cursor agent keys and activate billing in the Browser Fleet dashboard, then create an automation, start a new job with its id, and poll the job until its status is Done or Error.

1. Create Automation — Request

curl -X POST "https://api.browserfleet.dev/api/automations" \
  -H "Authorization: Bearer $BROWSER_FLEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Portal dataset export",
    "task": "Use the visible portal UI at %portalUrl to download the complete dataset.",
    "output": {},
    "storage": [
      {
        "name": "dataset.csv",
        "description": "Complete unchanged CSV dataset downloaded through the portal UI"
      }
    ],
    "steps": [
      "Open %portalUrl in the browser.",
      "Use the visible bulk-download or export-all control exactly once as the final browser action."
    ],
    "stealthConfiguration": "DEFAULT",
    "webhookUrl": "https://example.com/webhooks/browser-fleet"
  }'

1. Create Automation — Response

{
  "automationId": "jh7d9...",
  "createdAt": "2026-06-17T10:00:00.000Z",
  "name": "Portal dataset export",
  "task": "Use the visible portal UI at %portalUrl to download the complete dataset.",
  "output": {},
  "storage": [
    {
      "name": "dataset.csv",
      "description": "Complete unchanged CSV dataset downloaded through the portal UI"
    }
  ],
  "steps": [
    "Open %portalUrl in the browser.",
    "Use the visible bulk-download or export-all control exactly once as the final browser action."
  ],
  "stealthConfiguration": "DEFAULT",
  "webhookUrl": "https://example.com/webhooks/browser-fleet"
}

2. Start Job — Request

curl -X POST "https://api.browserfleet.dev/api/jobs" \
  -H "Authorization: Bearer $BROWSER_FLEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "automationId": "jh7d9...",
    "priority": 10,
    "variables": {
      "%portalUrl": "https://example.com/registry"
    }
  }'

2. Start Job — Response

{
  "automationId": "jh7d9...",
  "jobId": "km2q8...",
  "priority": 10,
  "status": "Pending"
}

3. Poll Job — Request

curl "https://api.browserfleet.dev/api/jobs?jobId=km2q8..." \
  -H "Authorization: Bearer $BROWSER_FLEET_API_KEY"

3. Poll Job — Done Response

{
  "automationId": "jh7d9...",
  "createdAt": "2026-06-17T10:01:00.000Z",
  "error": null,
  "jobId": "km2q8...",
  "priority": 10,
  "result": {
    "data": {},
    "storage": [
      {
        "name": "dataset.csv",
        "id": "st7p9..."
      }
    ]
  },
  "status": "Done",
  "updatedAt": "2026-06-17T10:04:00.000Z"
}

Errors

Request errors use HTTP error statuses and JSON. Execution failures remain retrievable jobs with status Error, a null result, and an error object containing a stable code and any available browser trace.

Common Browser Fleet API error responses
StatusBodyMeaning
400{ "error": "Invalid request body", "issues": { ... } } or { "error": "Missing ...Id" }The request body, query string, or required fields are invalid. Validation errors include an issues object.
401{ "error": "Unauthorized" } or { "error": "Invalid API key" }The request did not include a valid API key.
404{ "error": "Automation not found" }, { "error": "Job not found" }, or { "error": "File not found or deleted after the 7-day retention period" }The requested resource could not be found.