CrawlVolt Browser API

Persistent sessions

Persistent sessions let an agent reuse browser cookies across separate scrape and browse calls without receiving the cookie values itself.

Create a session

curl --request POST https://www.crawlvolt.com/v1/sessions \
  --header "Authorization: Bearer $CRAWLVOLT_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{ "ttl_seconds": 3600 }'
{
  "id": "ses_01f4...",
  "status": "active",
  "created_at": "2026-08-02T11:30:00Z",
  "updated_at": "2026-08-02T11:30:00Z",
  "expires_at": "2026-08-02T12:30:00Z",
  "cookie_count": 0
}

The preview accepts a lifetime from 5 minutes to 24 hours and allows at most 20 active sessions per account and project.

Reuse browser state

Pass the id to either product route. CrawlVolt loads the encrypted cookie jar before navigation and replaces it with the browser's resulting jar after a successful call.

curl --request POST https://www.crawlvolt.com/v1/browse \
  --header "Authorization: Bearer $CRAWLVOLT_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "url": "https://app.example.com/login",
    "session_id": "ses_01f4...",
    "actions": [
      { "action": "fill", "selector": "input[name=email]", "value": "agent@example.com" },
      { "action": "fill", "selector": "input[name=password]", "value": "..." },
      { "action": "click", "selector": "button[type=submit]" },
      { "action": "wait", "selector": "main[data-authenticated=true]" }
    ],
    "formats": ["markdown"]
  }'

The response contains session metadata but never cookie values. The normal page or browser-action quota still applies.

Inspect or revoke

curl https://www.crawlvolt.com/v1/sessions/ses_01f4... \
  --header "Authorization: Bearer $CRAWLVOLT_API_KEY"
curl --request DELETE https://www.crawlvolt.com/v1/sessions/ses_01f4... \
  --header "Authorization: Bearer $CRAWLVOLT_API_KEY"

Revocation is immediate. Expired and revoked sessions return 404, including when the id belongs to another account or project.

Storage and concurrency

Cookie jars are encrypted with AES-256-GCM under the operator-managed WEBDASH_SESSION_MASTER_KEY. The ciphertext is cryptographically bound to the session id, account and project, so moving it to another row cannot disclose a usable jar.

Use one in-flight request per session. Concurrent writes are rejected with 409 session_conflict instead of silently overwriting newer browser state.

On this page