curl --request PATCH \
--url https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"exclude_admins": false,
"sampling_rate": 0.5
}
'import requests
url = "https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings"
payload = {
"exclude_admins": False,
"sampling_rate": 0.5
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({exclude_admins: false, sampling_rate: 0.5})
};
fetch('https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings', 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://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'exclude_admins' => false,
'sampling_rate' => 0.5
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings"
payload := strings.NewReader("{\n \"exclude_admins\": false,\n \"sampling_rate\": 0.5\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"exclude_admins\": false,\n \"sampling_rate\": 0.5\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"exclude_admins\": false,\n \"sampling_rate\": 0.5\n}"
response = http.request(request)
puts response.read_body{
"app_id": "6820f3a4e7b91d003c45a1f2",
"enabled": true,
"enabled_at": "2026-09-01T10:15:00.123000",
"enabled_by": "jane@acme.com",
"exclude_admins": true,
"sampling_rate": 1
}Update session recording capture settings
Changes how session recordings capture visits: whether the app’s owners and admins are recorded, and what share of visits gets recorded. Send one field or both. A field you leave out keeps its value.
The app needs recording settings first, which the first call to Turn session recordings on or off creates, whether it turns them on or off. After that, you can change these settings at any time.
curl --request PATCH \
--url https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"exclude_admins": false,
"sampling_rate": 0.5
}
'import requests
url = "https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings"
payload = {
"exclude_admins": False,
"sampling_rate": 0.5
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({exclude_admins: false, sampling_rate: 0.5})
};
fetch('https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings', 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://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'exclude_admins' => false,
'sampling_rate' => 0.5
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings"
payload := strings.NewReader("{\n \"exclude_admins\": false,\n \"sampling_rate\": 0.5\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"exclude_admins\": false,\n \"sampling_rate\": 0.5\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"exclude_admins\": false,\n \"sampling_rate\": 0.5\n}"
response = http.request(request)
puts response.read_body{
"app_id": "6820f3a4e7b91d003c45a1f2",
"enabled": true,
"enabled_at": "2026-09-01T10:15:00.123000",
"enabled_by": "jane@acme.com",
"exclude_admins": true,
"sampling_rate": 1
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
ID of the app.
64^[a-zA-Z0-9._-]+$Body
true to leave visits by the app's owners and admins out of recording, false to record them too.
false
Share of eligible visits to record, from 0 to 1 in steps of 0.05. 1 records every visit.
0 <= x <= 1Must be a multiple of 0.050.5
Response
The app's updated session recording settings.
An app's session recording settings.
ID of the app.
"6820f3a4e7b91d003c45a1f2"
Whether recordings are on. Reads false when they were turned on but the app has since moved to another owner or workspace, or the owner's plan no longer includes recordings.
true
When recordings were turned on, as a UTC timestamp in ISO 8601 format, or null when they're off. A value read back carries no offset, and the response right after turning recordings on carries +00:00. The response to turning recordings off keeps the previous value.
"2026-09-01T10:15:00.123000"
Email of the user who turned recordings on, or null when they're off. The response to turning recordings off keeps the previous value.
"jane@acme.com"
Whether visits by the app's owners and admins are left out of recording.
true
Share of eligible visits that get recorded, from 0 to 1. 1 records every visit.
1
Was this page helpful?