Sessions API
Create Session Recording Downloads
Requests one downloadable MP4 per recorded page of a session. Assembly runs asynchronously and every page returns as PENDING. Re-posting re-enqueues all pages and retries any that failed. Poll the GET endpoint for per-page status and, on standard (non-BYOS) projects, download URLs.
POST
/
v1
/
sessions
/
{id}
/
recording
/
downloads
Create Session Recording Downloads
curl --request POST \
--url https://api.browserbase.com/v1/sessions/{id}/recording/downloads \
--header 'X-BB-API-Key: <api-key>'import requests
url = "https://api.browserbase.com/v1/sessions/{id}/recording/downloads"
headers = {"X-BB-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-BB-API-Key': '<api-key>'}};
fetch('https://api.browserbase.com/v1/sessions/{id}/recording/downloads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.browserbase.com/v1/sessions/{id}/recording/downloads",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-BB-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.browserbase.com/v1/sessions/{id}/recording/downloads"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-BB-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.browserbase.com/v1/sessions/{id}/recording/downloads")
.header("X-BB-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.browserbase.com/v1/sessions/{id}/recording/downloads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-BB-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"downloads": [
{
"pageId": "<string>",
"downloadUrl": "<string>",
"completedAt": "2023-11-07T05:31:56Z"
}
]
}{
"statusCode": 123,
"error": "<string>",
"message": "<string>"
}{
"statusCode": 123,
"error": "<string>",
"message": "<string>"
}{
"statusCode": 123,
"error": "<string>",
"message": "<string>"
}{
"statusCode": 123,
"error": "<string>",
"message": "<string>"
}Authorizations
Your Browserbase API Key.
Path Parameters
Session ID
Response
Downloads enqueued. Poll the GET endpoint for status.
Show child attributes
Show child attributes
Was this page helpful?
Previous
List Session Recording DownloadsReturns the per-page download status for a session, with a short-lived signed URL for each completed page on standard (non-BYOS) projects.
Next
⌘I
Create Session Recording Downloads
curl --request POST \
--url https://api.browserbase.com/v1/sessions/{id}/recording/downloads \
--header 'X-BB-API-Key: <api-key>'import requests
url = "https://api.browserbase.com/v1/sessions/{id}/recording/downloads"
headers = {"X-BB-API-Key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-BB-API-Key': '<api-key>'}};
fetch('https://api.browserbase.com/v1/sessions/{id}/recording/downloads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.browserbase.com/v1/sessions/{id}/recording/downloads",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-BB-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.browserbase.com/v1/sessions/{id}/recording/downloads"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-BB-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.browserbase.com/v1/sessions/{id}/recording/downloads")
.header("X-BB-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.browserbase.com/v1/sessions/{id}/recording/downloads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-BB-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"downloads": [
{
"pageId": "<string>",
"downloadUrl": "<string>",
"completedAt": "2023-11-07T05:31:56Z"
}
]
}{
"statusCode": 123,
"error": "<string>",
"message": "<string>"
}{
"statusCode": 123,
"error": "<string>",
"message": "<string>"
}{
"statusCode": 123,
"error": "<string>",
"message": "<string>"
}{
"statusCode": 123,
"error": "<string>",
"message": "<string>"
}