Start or stop recording a room
curl --request POST \
--url https://{host}/api/v1/conferences/{room}/record \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"on": true
}'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({on: true})
};
fetch('https://{host}/api/v1/conferences/{room}/record', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/api/v1/conferences/{room}/record"
payload = { "on": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"recording": true
}Calls
Start or stop recording a room
Body {on: true|false}. Records the MIX into conf-<session>.wav in the recordings directory (conference <room> record <path>); stopping is norecord. The file belongs to the session, not to any participant's call, and is checked, uploaded and aged as a call recording is. A room whose `record` flag is on records from its first member without this.
Start or stop recording a room
curl --request POST \
--url https://{host}/api/v1/conferences/{room}/record \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"on": true
}'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({on: true})
};
fetch('https://{host}/api/v1/conferences/{room}/record', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/api/v1/conferences/{room}/record"
payload = { "on": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"recording": true
}Authorizations
Every request sends Authorization: Bearer <token>. The token is either a panel session (a JWT from /auth/login, 12 hours) or an API key ft_<id>_<secret>. An API key is accepted only from an address on its IP allowlist (403 ip_not_allowed otherwise; 403 ip_allowlist_required for an old key that has none), is limited to its rate per minute (429 rate_limited with Retry-After; X-RateLimit-Limit/Remaining/Reset on every response), and at most 60 call placements a minute.
Path Parameters
Body
application/json
Response
Whether the room is recording now.