Skip to content

Recordings and downloads

Send enableRecording: true on a create and the browser’s screen is recorded from start to stop (an MP4, 8 frames a second). When it stops, the browser’s answer has the video:

browser = client.browsers.create(enable_recording=True)
# … work …
client.browsers.stop(browser.id)
stopped = client.browsers.get(browser.id)
if stopped.recording_available:
print(stopped.recording_url) # signed, valid for an hour: get the browser again for a fresh one

recordingUrl appears a few seconds after the stop. recordingAvailable is false when no recording was asked for or it could not be kept, so a client waiting for the URL can give up. The dashboard’s History plays a session’s recording when you open it.

Files the browser downloads are kept under their own names. List them while the browser runs or after it stopped:

Terminal window
curl "https://api.datum.org/api/v4/browsers/$ID/downloads?includeUrls=true" \
-H "X-Browser-Use-API-Key: $BROWSER_USE_API_KEY"
{
"files": [
{ "path": "invoice-1042.pdf", "size": 48213, "lastModified": "2026-11-09T10:12:03Z", "url": "https://…" }
],
"nextCursor": null,
"hasMore": false
}

With includeUrls=true each file has a URL, signed for 15 minutes. Playwright’s own download handling works too: its downloads land in the same folder.

PDFs open as downloads rather than in Chrome’s viewer unless you send pdfRendererEnabled: true.