Skip to main content

Base URL

Authentication

Every endpoint takes a workspace API key as a bearer token. Keys come from Settings → API keys in the dashboard.

Conventions

  • Bodies are JSON, except extension uploads (multipart/form-data).
  • Identifiers go in the query string (?sessionId=…, ?profileName=…), not the path. Extensions and pools are the exception (/v1/browser/pools/{poolId}).
  • Errors are { "error": "message" } with a meaningful HTTP status. The create call’s 503 also carries a code. Pools answer 409 for state conflicts: duplicate name, over the warm cap, nothing ready, active leases. See Errors.
  • Session timestamps are ISO 8601. Billing periods are Unix epoch milliseconds (fields ending in _ms, plus the subscription period bounds). Money is cents, or millicents where exactness matters. Bandwidth is bytes on sessions and megabytes on billing.
  • Unknown fields in the create body are a 400. The update call ignores them.
  • Create answers 200 with the session. Extension upload and pool create answer 201.

Endpoints

Source of truth

These pages are generated from the live OpenAPI document at https://api.driver.dev/doc (rendered at api.driver.dev/scalar), with corrections where the generator is wrong: duration accepts 60 (the live document says strictly more), balance_cents can be negative, PATCH answers 400 for an ended session, GET /v1/browser/sessions answers 400 for a bad status filter, the 503 carries Retry-After and a code, paging has defaults and a maximum, and pool create answers 201 only. On those points this reference is right. On everything else the live document wins.

Client code

There’s no SDK. The endpoints are plain HTTP; For agents has a small client module for TypeScript and Python you can copy.