curl --request POST \
--url https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"enabled": true
}
'import requests
url = "https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings"
payload = { "enabled": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({enabled: true})
};
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 => "POST",
CURLOPT_POSTFIELDS => json_encode([
'enabled' => true
]),
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 \"enabled\": true\n}")
req, _ := http.NewRequest("POST", 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.post("https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"enabled\": true\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::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"enabled\": true\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
}Turn session recordings on or off
Turns session recordings on or off for the app. Recordings are available on the Builder plan and above, and capture starts once the app is published. See Session recordings.
The first time you turn recordings on starts the app’s rolling 30-day recording window. Turning them off and on again doesn’t restart it.
The response echoes the enabled value you sent. When you turn recordings off, enabled_at and enabled_by keep the values from the last time they were turned on, including after the app has moved to another owner. Get session recording settings reports null for both.
curl --request POST \
--url https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"enabled": true
}
'import requests
url = "https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings"
payload = { "enabled": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({enabled: true})
};
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 => "POST",
CURLOPT_POSTFIELDS => json_encode([
'enabled' => true
]),
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 \"enabled\": true\n}")
req, _ := http.NewRequest("POST", 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.post("https://app.base44.com/api/session-recordings/apps/{app_id}/recording-settings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"enabled\": true\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::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"enabled\": true\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 turn recordings on, false to turn them off.
true
Response
The app's 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?