run() waits for you. If you call the API directly (or want live progress), poll the run.
Poll status
status is one of queued, running, completed, stopped, failed.
/status is the cheap poll target — status, result, output, cost. Use GET /runs/{id} for the full object.
result vs output: result is the plain-language answer string, present on every completed run — read it on the golden path. output is reserved for structured output and is null today (no request parameter enables it yet — put the JSON shape you want in the task text and parse result). browsercode’s larger output comes back as files, not in either field.
See what the agent is doing
Each agent has its own native progress surface — they are genuinely different, so they aren’t forced into one shape:browser-use→/steps— the browser step list (each navigation/click/extraction).browsercode→/events— an incremental event stream (code, terminal output, browser actions).
Find the browser a run used
browserId appears on the run once its browser is provisioned (null while queued). Use it to fetch the recording or downloads.
curl