Downloads and recordings
Files the page downloads and, on request, a video of the session — kept as browser assets with their own retention.
Assets
Downloads the page triggers are captured as assets of the browser, independently of Workspace files. A browser or run created with record_video: true also records its page as a VP8 WebM. Recording is off by default and cannot be toggled on a running instance; a run reusing a browser must agree with the browser's setting.
| Method and path | Result |
|---|---|
GET /v1/browsers/{id}/assets | { "data", "policy" } — every download and recording with capture, processing and expiry state |
GET /v1/browsers/{id}/assets/{asset} | Metadata, revision, size, SHA-256, retention, and whether a retry is possible |
GET /v1/browsers/{id}/assets/{asset}/text | A UTF-8 preview of a download, at most 64 KiB |
GET /v1/browsers/{id}/assets/{asset}/content | The bytes; one HTTP byte range supported; 30 s delivery deadline |
POST /v1/browsers/{id}/assets/{asset}/retry | { "revision" }; reprocess a complete recording that failed processing |
for asset in client.assets.list(browser["id"])["data"]: if asset["kind"] == "download" and asset["status"] == "ready": data = client.assets.content(browser["id"], asset["id"])for (const asset of (await client.assets.list(browser.id)).data) { if (asset.kind === 'download' && asset.status === 'ready') { const bytes = await client.assets.content(browser.id, asset.id); }}States and processing
kind is download or recording; status runs downloading / recording → processing → ready, or failed, and expired after retention. An incomplete capture becomes failed. A complete recording passes bounded media probing before it is ready; processing has three attempts, and a recording whose processing is missing a tool on the server stays retryable. Completed files survive the browser's stop and a platform restart.
Limits and retention
10 MiB per download, 64 MiB per recording, 128 MiB per browser, 50 download entries per browser. Retention defaults to seven days from creation (the deployment may set 1–30); after expiry the content is removed, the metadata stays with status expired, and the content route answers asset_expired (410). These are deployment bounds, not an allowance.
Recordings play in the console and download as files; no public or shareable URL is created.
