curl --request PATCH \
--url https://{host}/api/v1/conference-rooms/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"enabled": true,
"end_when_moderator_leaves": true,
"max_members": 123,
"minutes_email": "<string>",
"moderator_pin": "<string>",
"name": "<string>",
"number": "<string>",
"participant_pin": "<string>",
"record": true,
"wait_for_moderator": true
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
enabled: true,
end_when_moderator_leaves: true,
max_members: 123,
minutes_email: '<string>',
moderator_pin: '<string>',
name: '<string>',
number: '<string>',
participant_pin: '<string>',
record: true,
wait_for_moderator: true
})
};
fetch('https://{host}/api/v1/conference-rooms/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/api/v1/conference-rooms/{id}"
payload = {
"enabled": True,
"end_when_moderator_leaves": True,
"max_members": 123,
"minutes_email": "<string>",
"moderator_pin": "<string>",
"name": "<string>",
"number": "<string>",
"participant_pin": "<string>",
"record": True,
"wait_for_moderator": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"created_at": "2023-11-07T05:31:56Z",
"enabled": true,
"end_when_moderator_leaves": true,
"exemptions": [
{
"extension_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"number": "<string>",
"role": "participant"
}
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"live_members": 123,
"max_members": 123,
"members": [
{
"extension_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"number": "<string>",
"role": "participant",
"virtual": true
}
],
"minutes_email": "<string>",
"moderator_pin": "<string>",
"name": "<string>",
"number": "<string>",
"numbers": [
"<string>"
],
"organisation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"participant_pin": "<string>",
"record": true,
"wait_for_moderator": true
}{
"error": {
"code": "invalid_request",
"message": "<string>"
}
}Update a conference room
Every field optional. The PINs are judged together as they will be after the change, so a patch that makes them equal is refused. moderator_pin: "" removes the moderator role.
curl --request PATCH \
--url https://{host}/api/v1/conference-rooms/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"enabled": true,
"end_when_moderator_leaves": true,
"max_members": 123,
"minutes_email": "<string>",
"moderator_pin": "<string>",
"name": "<string>",
"number": "<string>",
"participant_pin": "<string>",
"record": true,
"wait_for_moderator": true
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
enabled: true,
end_when_moderator_leaves: true,
max_members: 123,
minutes_email: '<string>',
moderator_pin: '<string>',
name: '<string>',
number: '<string>',
participant_pin: '<string>',
record: true,
wait_for_moderator: true
})
};
fetch('https://{host}/api/v1/conference-rooms/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/api/v1/conference-rooms/{id}"
payload = {
"enabled": True,
"end_when_moderator_leaves": True,
"max_members": 123,
"minutes_email": "<string>",
"moderator_pin": "<string>",
"name": "<string>",
"number": "<string>",
"participant_pin": "<string>",
"record": True,
"wait_for_moderator": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"created_at": "2023-11-07T05:31:56Z",
"enabled": true,
"end_when_moderator_leaves": true,
"exemptions": [
{
"extension_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"number": "<string>",
"role": "participant"
}
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"live_members": 123,
"max_members": 123,
"members": [
{
"extension_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"number": "<string>",
"role": "participant",
"virtual": true
}
],
"minutes_email": "<string>",
"moderator_pin": "<string>",
"name": "<string>",
"number": "<string>",
"numbers": [
"<string>"
],
"organisation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"participant_pin": "<string>",
"record": true,
"wait_for_moderator": true
}{
"error": {
"code": "invalid_request",
"message": "<string>"
}
}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
Response
OK
A dial-in bridge the organisation owns. Migration 0115 says why the PINs are stored and returned in clear.
The organisation's extensions that dial the room number and are seated without a PIN, each in its role. Set as a whole with PUT /conference-rooms/{id}/exemptions.
Show child attributes
Show child attributes
People in the room right now.
0 = no limit beyond the node's capacity.
Default members: the organisation's extensions rung when the room opens, or as soon as they are free while it is up. virtual marks a virtual agent's extension, whose conduct in the room is the AI module's. Set as a whole with PUT /conference-rooms/{id}/members.
Show child attributes
Show child attributes
Comma-separated addresses a session's minutes go to, when the AI module writes them.
4-10 digits, or empty for a room with no moderator role.
2-8 digits: what an extension dials, and what a caller keys at a shared 'conference' number.
Phone numbers pointed at this room alone.
4-10 digits, or empty: no PIN, dial the number and you are in.
Record every session of this room.
Participants hear hold music until a moderator has joined.