List browsers
Stop a browser
Frees the concurrency slot and refunds unused proxy. Forbrowser-use, stopping the browser also closes its session.
Recording
Every browser records. Fetch a fresh, expiring download URL on demand (not a stale stored field).browserId from GET /runs/{id}, then call /browsers/{browser_id}/recording.
Downloads
Files the browser itself downloaded off the web while navigating — a PDF it clicked, a CSV export a site handed back. These are distinct from files the agent wrote to its workspace (those are output files,GET /runs/{id}/files?kind=output). Rule of thumb: if a website gave the browser a file, it’s a download; if the agent produced a file, it’s an output.
curl
downloadUrl serves the bytes (same download mechanism as output files).
Browser lifecycle (no keep_alive)
Browsers clean themselves up — there is nokeep_alive flag to manage. A browser stays alive while a run is attached, goes idle when the run finishes, is reused by a quick follow-up, and is otherwise stopped by the reaper (freeing cost and the concurrency slot). Hard ceiling 4 hours. Tight on slots? List status=idle browsers and stop them.