Start web call
curl --request POST \
--url https://prod-platform-core-api.20x.business/api/v1/channels/web/session \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"agentId": "<string>"
}
'import requests
url = "https://prod-platform-core-api.20x.business/api/v1/channels/web/session"
payload = { "agentId": "<string>" }
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({agentId: '<string>'})
};
fetch('https://prod-platform-core-api.20x.business/api/v1/channels/web/session', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Calls
Start web call
Open a browser-based voice session with an agent and get WebRTC connection details
POST
/
channels
/
web
/
session
Start web call
curl --request POST \
--url https://prod-platform-core-api.20x.business/api/v1/channels/web/session \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"agentId": "<string>"
}
'import requests
url = "https://prod-platform-core-api.20x.business/api/v1/channels/web/session"
payload = { "agentId": "<string>" }
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({agentId: '<string>'})
};
fetch('https://prod-platform-core-api.20x.business/api/v1/channels/web/session', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Creates a live web-call session so a user can talk to a voice agent directly in
the browser — no phone number involved. The response carries the WebRTC
connection details your frontend needs to join the session.
Body parameters
string
required
UUID of a VOICE-capable agent to talk to
curl -X POST https://prod-comms-engine-api.20x.business/api/v1/channels/web/session \
-H "Authorization: Bearer $AGENTIC_OS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "agentId": "AGENT_ID" }'
requests.post(
"https://prod-comms-engine-api.20x.business/api/v1/channels/web/session",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"agentId": "AGENT_ID"},
)
await fetch("https://prod-comms-engine-api.20x.business/api/v1/channels/web/session", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ agentId: "AGENT_ID" }),
});
Response
Returns the session identifier plus the connection details for the browser client. Shape varies with the configured voice provider.A web call consumes wallet balance for as long as it stays open, the same way a
phone call does.

