register, login, or connect. Runs are created by POST /v1/registrations, POST /v1/registrations/:id/login, and POST /v1/connections — there is no standalone “create run” endpoint. Observe a run by polling GET /v1/runs/:id or by subscribing to the run.blocked / run.completed / run.failed webhooks. Concepts: Runs and human takeover.
The run object
Run lifecycle
Blocked codes
When a run blocks,error.code is one of:
Failure codes
A blocked-style code (e.g.
CAPTCHA_REQUIRED) can also appear on a failed run when the browser session had already ended, so takeover was impossible.
Get a run
GET /v1/runs/:id
200: the run object. 404 {"error": "not found"} otherwise.
Resume a blocked run
POST /v1/runs/:id/resume
After a human clears the gate in the live view (completed the CAPTCHA, entered the code, clicked submit), resume hands control back to the agent, which re-checks the page state and continues.
200: the run object with "status": "running" and "error": null.
409 {"error": "run is not blocked", "code": "NOT_BLOCKED", "status": "running"} if the run isn’t blocked.
Take over a live run
POST /v1/runs/:id/intervene
Pauses a running or awaiting_verification run so a human can drive the browser via the interactive liveViewUrl. The browser session stays alive. When done, POST /:id/resume hands back to the agent. An unresumed takeover fails BLOCKED_TIMEOUT after the same ~10-minute hold.
200: the run object with "status": "blocked" and "error": { "code": "MANUAL_INTERVENTION", "detail": "paused for manual takeover" }.
409 {"error": "run is not intervenable", "code": "NOT_INTERVENABLE", "status": "queued"} if the run isn’t running/awaiting_verification.
Abort a run
POST /v1/runs/:id/abort
Terminates a non-terminal run and stops its browser session. If the run completes concurrently, the completion wins.
200: the run object with "status": "failed" and "error": { "code": "ABORTED", "detail": "aborted by user" }.
409 {"error": "run is already terminal", "code": "ALREADY_TERMINAL", "status": "completed"} if it already ended.
Get the run recording
GET /v1/runs/:id/recording
The run’s browser session video, ready shortly after the run ends. Poll while the recording is processing.
200:
