DEVELOPER REFERENCE / REST API v1

Your browser.
One API away.

Create sessions, manage persistent profiles, and build and run Skills. Explore every public REST endpoint with its request and response contract.

BASE URLhttps://api.0browser.ioOpenAPI 3.1

Authenticate. Create. Connect.

Use your existing API key from your 0Browser operator in the Authorization: Bearer header. Regular tokens access their own sessions, profiles, groups and automation resources. Instance controls require an admin token.

curl --request POST https://api.0browser.io/api/v1/sessions \
  --header "Authorization: Bearer $ZERO_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{"browser_version":150,"headless":true}'

The response contains id and cdp_url. Connect your browser client, then close the session with DELETE /api/v1/sessions/{id} when finished.

Persistent profiles

Create a profile and pass its profile_id when creating a session. Use browser_version: 150 for the current Chromium binary.

Skill automation

Create an Operation → assign profile input → build a Skill → publish its version → create a Run with version_id. Builds and Runs expose event polling and saved evidence. Use operation.update_input in Build or Skill steps to save profile input changes. Runs start with saved input.

Pagination, errors and human control

Core lists return data, total, limit, offset. Automation lists return arrays, capped at 250 documents or 100 Runs/Builds. Events return up to 100 records: pass the latest sequence as after to fetch the next page.

Errors normally include error. A 409 can indicate a stale draft revision, a state conflict or a profile controlled by automation. Pause its Run or stop its Build before manual browser changes. For a Run in human_required, inspect the evidence and use the intervention endpoint to retry, guide or complete a step.

All endpoints

114 endpoints

Sessions5

Create and connect to isolated browsers.

POST
/api/v1/sessionsCreate a browser session
GET
/api/v1/sessionsList sessions
GET
/api/v1/sessions/{id}Get a session
DELETE
/api/v1/sessions/{id}Close a session
POST
/api/v1/sessions/{id}/extendRequest session extension

Profiles18

Persistent browser identities, tags and lifecycle actions.

POST
/api/v1/profilesCreate a profile
GET
/api/v1/profilesList profiles
GET
/api/v1/profiles/{id}Get a profile
PUT
/api/v1/profiles/{id}Update a profile
DELETE
/api/v1/profiles/{id}Delete a profile
POST
/api/v1/profiles/batchGetResolve many profiles by id
PATCH
/api/v1/profiles/{id}/metadataMerge profile metadata labels
GET
/api/v1/profiles/{id}/metadataGet profile metadata labels
POST
/api/v1/profiles/{id}/cloneClone a profile
POST
/api/v1/profiles/{id}/startStart a profile
POST
/api/v1/profiles/{id}/stopStop a profile session
GET
/api/v1/profiles/{id}/homeGet profile home and mirror state
POST
/api/v1/profiles/{id}/syncSync node profile data to the hub
POST
/api/v1/profiles/{id}/rotate-proxyRotate proxy and restart
GET
/api/v1/profiles/tagsList all profile tags
PUT
/api/v1/profiles/{id}/tagsReplace profile tags
POST
/api/v1/profiles/bulk-tagsAdd or remove tags in bulk
POST
/api/v1/profiles/bulk-deleteDelete profiles in bulk

Groups5

Classify profiles into account-owned groups.

GET
/api/v1/profiles/groupsList profile groups
POST
/api/v1/profiles/groupsCreate group
PUT
/api/v1/profiles/groups/{groupID}Rename group
DELETE
/api/v1/profiles/groups/{groupID}Delete group
POST
/api/v1/profiles/bulk-groupMove profiles to a group

Storage9

Cookies, local storage and session storage exports and imports.

POST
/api/v1/sessions/{id}/cookies/exportExport session cookies and storage
POST
/api/v1/sessions/{id}/cookies/importImport session cookies and storage
DELETE
/api/v1/sessions/{id}/cookiesClear session cookies
POST
/api/v1/sessions/{id}/cookies/save-to-profileSave session storage to its profile
POST
/api/v1/sessions/{id}/cookies/load-from-profileLoad profile storage into its session
GET
/api/v1/profiles/{id}/cookiesGet saved profile storage
POST
/api/v1/profiles/{id}/cookiesSave profile cookies and storage
DELETE
/api/v1/profiles/{id}/cookiesClear saved profile cookies
POST
/api/v1/profiles/{id}/cookies/loadLoad cookies into a selected session

Extensions6

Upload extensions and open their sidepanel or popup views.

POST
/api/v1/extensionsUpload an extension
GET
/api/v1/extensionsList extensions
GET
/api/v1/extensions/{id}Get an extension
DELETE
/api/v1/extensions/{id}Delete an extension
GET
/api/v1/sessions/{id}/extensionsList session extension views
POST
/api/v1/sessions/{id}/extensions/{extensionID}/openOpen an extension view

Fingerprints3

Reusable browser fingerprint configurations.

GET
/api/v1/fingerprintsList fingerprints
POST
/api/v1/fingerprintsCreate a fingerprint
GET
/api/v1/fingerprints/{id}Get a fingerprint

Live View3

Inspect and stop live viewers. Streaming uses WebSockets.

GET
/api/v1/sessions/{id}/liveGet live viewer information
DELETE
/api/v1/sessions/{id}/liveStop a live viewer
GET
/api/v1/live-viewersList active live viewers

Operations17

Input schemas and profile assignments. Skills, Builds and Runs belong to an Operation.

GET
/api/v1/automation/operationsList operations
POST
/api/v1/automation/operationsCreate Operation
GET
/api/v1/automation/operations/{operationId}Get document and versions
PUT
/api/v1/automation/operations/{operationId}Update document draft
DELETE
/api/v1/automation/operations/{operationId}Archive document
GET
/api/v1/automation/operations/{operationId}/versionsList published versions
GET
/api/v1/automation/operations/{operationId}/assignmentsList assigned profiles and input
PUT
/api/v1/automation/operations/{operationId}/assignmentsAssign a profile and input
DELETE
/api/v1/automation/operations/{operationId}/assignmentsRemove a profile assignment
GET
/api/v1/automation/operations/{operationId}/startupGet automatic startup settings and recent attempts
PUT
/api/v1/automation/operations/{operationId}/startupConfigure a Skill to run on first profile start
POST
/api/v1/automation/operations/{operationId}/parse-inputParse freestyle input with AI
GET
/api/v1/automation/profile-operations/{profileId}List Operations assigned to a profile
GET
/api/v1/automation/operations/{operationId}/shared-inputGet this Operation's shared input configuration
PUT
/api/v1/automation/operations/{operationId}/shared-inputSave custom shared input fields and values
POST
/api/v1/automation/operations/{operationId}/shared-inputReveal one saved shared input value
GET
/api/v1/automation/leases/{profileId}Get current profile control lease

Skills9

Editable drafts with immutable published versions and stable input/output contracts.

GET
/api/v1/automation/operations/{operationId}/skillsList skills
POST
/api/v1/automation/operations/{operationId}/skillsCreate Skill
GET
/api/v1/automation/operations/{operationId}/skills/{skillId}Get document and versions
PUT
/api/v1/automation/operations/{operationId}/skills/{skillId}Update document draft
DELETE
/api/v1/automation/operations/{operationId}/skills/{skillId}Archive document
GET
/api/v1/automation/operations/{operationId}/skills/{skillId}/versionsList published versions
GET
/api/v1/automation/operations/{operationId}/skills/{skillId}/self-improvementGet automatic self-improvement policy
PUT
/api/v1/automation/operations/{operationId}/skills/{skillId}/self-improvementConfigure automatic publication of Run improvements
POST
/api/v1/automation/operations/{operationId}/skills/{skillId}/publishPublish a Skill version

Builds7

Agent-assisted Skill authoring against an active profile browser.

GET
/api/v1/automation/operations/{operationId}/buildsList builds
POST
/api/v1/automation/operations/{operationId}/buildsStart a Skill Build chat
GET
/api/v1/automation/operations/{operationId}/builds/{buildId}Get execution state
GET
/api/v1/automation/operations/{operationId}/builds/{buildId}/eventsRead execution events and evidence
POST
/api/v1/automation/operations/{operationId}/builds/{buildId}/promptSend a message to the Build agent
POST
/api/v1/automation/operations/{operationId}/builds/{buildId}/stopStop the Build agent
POST
/api/v1/automation/operations/{operationId}/builds/{buildId}/accept-draftSave the Build draft to a Skill

Runs7

Execute a published Skill version; inspect evidence and handle human-required steps.

GET
/api/v1/automation/session-runs/{sessionId}Get compact Run progress for a session
GET
/api/v1/automation/operations/{operationId}/runsList runs
POST
/api/v1/automation/operations/{operationId}/runsRun a published Skill
GET
/api/v1/automation/operations/{operationId}/runs/{runId}Get execution state
GET
/api/v1/automation/operations/{operationId}/runs/{runId}/eventsRead execution events and evidence
POST
/api/v1/automation/operations/{operationId}/runs/{runId}/interveneIntervene in a Run
POST
/api/v1/automation/operations/{operationId}/runs/{runId}/apply-proposalApply a reviewed improvement to a Skill draft

AI Account7

Account-specific AI configuration, encrypted secrets and available tools.

GET
/api/v1/automation/settingsGet AI account configuration
PUT
/api/v1/automation/settingsSave AI account configuration
DELETE
/api/v1/automation/settingsRemove AI account configuration
GET
/api/v1/automation/secretsList secret metadata
POST
/api/v1/automation/secretsCreate an encrypted secret
DELETE
/api/v1/automation/secrets/{secretId}Delete an encrypted secret
GET
/api/v1/automation/toolsList available automation tools

Instances3

Administrator-only infrastructure actions.

GET
/api/v1/instancesList instances
ADMIN
POST
/api/v1/instances/scaleSpawn additional instances
ADMIN
DELETE
/api/v1/instances/{id}Stop an instance
ADMIN

System2

Public health and metrics endpoints.

GET
/healthCheck API health
GET
/metricsGet metrics placeholder

CDP & live view

Connect to the returned cdp_url using Puppeteer or Playwright. WebSockets accept the Authorization header; browser clients that cannot set headers can use a URL-encoded token query parameter. This query authentication applies only to WebSocket routes.

import { chromium } from "playwright";

// session is the response from POST /api/v1/sessions.
const browser = await chromium.connectOverCDP(session.cdp_url, {
  headers: { Authorization: `Bearer ${process.env.ZERO_API_KEY}` },
});
const context = browser.contexts()[0];
const page = context.pages()[0] || await context.newPage();
await page.goto("https://example.com");
wss://api.0browser.io/cdp/{sessionId}/browser

Browser-level CDP for Puppeteer and Playwright. Use the returned cdp_url.

wss://api.0browser.io/cdp/{sessionId}

Legacy page-level CDP connection.

wss://api.0browser.io/live/{sessionId}

Live viewer stream. Optional targetId selects an extension target.

wss://api.0browser.io/ws

Session event stream.

wss://api.0browser.io/api/v1/sessions/{id}/agent/stream

Agent lifecycle stream. Authenticate with token=sk_...; send {operation,input}. One request/socket; events started/completed/error. Disconnect or {action:cancel} cancels execution.

For extensions, list a session’s extension entries, call its open endpoint, then use the returned targetId on the live connection. The REST spec documents HTTP endpoints; WebSocket message protocols are separate.

Schemas

Request and response models, including Skill steps, cases and executable success conditions. The downloadable specification includes every schema and reference.

CreateSessionRequest
CreateProfileRequest
UpdateProfileRequest
SessionResponse
ProfileResponse
StartProfileRequest
StartProfileResponse
CloneProfileRequest
UpdateTagsRequest
BulkUpdateTagsRequest
ExtensionResponse
ProfileGroup
Dimensions
CookieParam
CookiePartitionKey
CookieExportData
CookieImportRequest
CookieImportResult
StorageEntry
WebStorageOrigin
SessionExtension
StorageSnapshot
Message
Error
Fingerprint
Viewer
Target
OperationDraft
SkillDraft
SkillStep
SkillMilestone
SkillCase
SuccessCondition
OperationInputUpdate
StartupConfigRequest
StartupConfig
StartupAttempt
PasswordGenerate
Document
Version
Assignment
Execution
Event
ActionResult
Secret