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’s503also carries acode. Pools answer409for 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
200with the session. Extension upload and pool create answer201.
Endpoints
Source of truth
These pages are generated from the live OpenAPI document athttps://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.