Skip to main content

Sessions

Sessions keep a browser context alive — cookies, viewport, and navigation history persist across calls.

Create a session​

curl -X POST https://api.browsr.dev/sessions \
-H "x-api-key: $BROWSR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"headless": true,
"start_url": "https://example.com",
"use_random_user_agent": true
}'
ParameterTypeDefaultDescription
headlessbooleanfalseRun Chrome without UI
requested_namestring—Human-readable session name
start_urlstring—Navigate on creation
cdp_urlstring—Connect to existing Chrome DevTools Protocol endpoint
use_random_user_agentbooleanfalseRandomize user agent
disable_automation_detectionbooleanfalseApply stealth tweaks
user_agentstring—Custom user agent
profile_idstring—UUID of a saved profile to load
{
"status": "ready",
"session_id": "session-abc123",
"frame_token": "eyJhbG...",
"sse_url": "https://api.browsr.dev/stream/sse?session_id=session-abc123"
}

Async provisioning​

When workers need to scale, the response returns status: "provisioning" with a provision_id. Poll until ready:

curl -X POST https://api.browsr.dev/sessions/provision/PROVISION_ID \
-H "x-api-key: $BROWSR_API_KEY"

Stages: provisioning → scaling → worker_found → creating → ready

List sessions​

curl https://api.browsr.dev/sessions \
-H "x-api-key: $BROWSR_API_KEY"

Delete a session​

curl -X DELETE https://api.browsr.dev/sessions/session-abc123 \
-H "x-api-key: $BROWSR_API_KEY"

Returns 204 No Content.

tip

If you omit session_id from a /commands request, a session is created automatically and returned in the response.