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_namestringHuman-readable session name
start_urlstringNavigate on creation
cdp_urlstringConnect to existing Chrome DevTools Protocol endpoint
use_random_user_agentbooleanfalseRandomize user agent
disable_automation_detectionbooleanfalseApply stealth tweaks
user_agentstringCustom user agent
profile_idstringUUID 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: provisioningscalingworker_foundcreatingready

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.