Channels
Web widget channels that connect users to your agents
Live API testing
Paste a tq_live_… key from Settings → API Keys. Requests are sent through this docs server to /api/v1/… (no browser CORS). The key is kept in sessionStorage only.
Base URL: https://api.taliiq.com — set $TALIIQ_API_KEY to a key from Settings → API Keys in the dashboard.
Channels expose agents to end users. The public API currently supports web widget channels — embeddable voice/chat widgets for your site.
Typical flow:
- Create an agent with prompt, voice, and pipeline settings
- Create a web channel below linked to that
agent_id - Use the returned channel
idasdata-channel-idin your embed (dashboard Channels shows the full snippet). Legacyembed_tokenis not used by the current widget script.
SIP and telephony channels are configured in the dashboard under Channels today.
List web channels
/api/v1/channels/web/channels.web.list · scope: channels:readcurl -X GET 'https://api.taliiq.com/api/v1/channels/web/' \
-H 'Authorization: Bearer $TALIIQ_API_KEY'import requests
url = "https://api.taliiq.com/api/v1/channels/web/"
headers = {
"Authorization": "Bearer $TALIIQ_API_KEY"
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.json())const response = await fetch("https://api.taliiq.com/api/v1/channels/web/", {
method: "GET",
headers: {
"Authorization": "Bearer $TALIIQ_API_KEY"
},
});
console.log(await response.json());Try it live
/api/proxy/v1/channels/web/Create web channel
/api/v1/channels/web/channels.web.create · scope: channels:writeLinks a published agent to a new embeddable widget. allowed_domains is required (explicit hostnames; * is not supported).
curl -X POST 'https://api.taliiq.com/api/v1/channels/web/' \
-H 'Authorization: Bearer $TALIIQ_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"Website Widget","agent_id":"REPLACE_WITH_AGENT_ID","capabilities":["voice","chat"],"allowed_domains":["localhost","app.example.com"],"widget_config":{"widget_type":"all","brand_color":"#8040f0","position":"bottom-right"}}'import requests
url = "https://api.taliiq.com/api/v1/channels/web/"
headers = {
"Authorization": "Bearer $TALIIQ_API_KEY",
"Content-Type": "application/json"
}
payload = {
"name": "Website Widget",
"agent_id": "REPLACE_WITH_AGENT_ID",
"capabilities": [
"voice",
"chat"
],
"allowed_domains": [
"localhost",
"app.example.com"
],
"widget_config": {
"widget_type": "all",
"brand_color": "#8040f0",
"position": "bottom-right"
}
}
response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())const response = await fetch("https://api.taliiq.com/api/v1/channels/web/", {
method: "POST",
headers: {
"Authorization": "Bearer $TALIIQ_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({"name":"Website Widget","agent_id":"REPLACE_WITH_AGENT_ID","capabilities":["voice","chat"],"allowed_domains":["localhost","app.example.com"],"widget_config":{"widget_type":"all","brand_color":"#8040f0","position":"bottom-right"}}),
});
console.log(await response.json());Try it live
/api/proxy/v1/channels/web/Get web channel
/api/v1/channels/web/{channel_id}channels.web.get · scope: channels:readcurl -X GET 'https://api.taliiq.com/api/v1/channels/web/{channel_id}/' \
-H 'Authorization: Bearer $TALIIQ_API_KEY'import requests
url = "https://api.taliiq.com/api/v1/channels/web/{channel_id}/"
headers = {
"Authorization": "Bearer $TALIIQ_API_KEY"
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.json())const response = await fetch("https://api.taliiq.com/api/v1/channels/web/{channel_id}/", {
method: "GET",
headers: {
"Authorization": "Bearer $TALIIQ_API_KEY"
},
});
console.log(await response.json());Try it live
/api/proxy/v1/channels/web/{id}/Update web channel
/api/v1/channels/web/{channel_id}channels.web.update · scope: channels:writecurl -X PATCH 'https://api.taliiq.com/api/v1/channels/web/{channel_id}/' \
-H 'Authorization: Bearer $TALIIQ_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"is_active":true,"allowed_domains":["app.example.com"]}'import requests
url = "https://api.taliiq.com/api/v1/channels/web/{channel_id}/"
headers = {
"Authorization": "Bearer $TALIIQ_API_KEY",
"Content-Type": "application/json"
}
payload = {
"is_active": true,
"allowed_domains": [
"app.example.com"
]
}
response = requests.patch(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())const response = await fetch("https://api.taliiq.com/api/v1/channels/web/{channel_id}/", {
method: "PATCH",
headers: {
"Authorization": "Bearer $TALIIQ_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({"is_active":true,"allowed_domains":["app.example.com"]}),
});
console.log(await response.json());Try it live
/api/proxy/v1/channels/web/{id}/Delete web channel
/api/v1/channels/web/{channel_id}channels.web.delete · scope: channels:writeSet is_active to false before delete. Returns 409 if the channel is still active.
curl -X DELETE 'https://api.taliiq.com/api/v1/channels/web/{channel_id}/' \
-H 'Authorization: Bearer $TALIIQ_API_KEY'import requests
url = "https://api.taliiq.com/api/v1/channels/web/{channel_id}/"
headers = {
"Authorization": "Bearer $TALIIQ_API_KEY"
}
response = requests.delete(url, headers=headers)
print(response.status_code)
print(response.json())const response = await fetch("https://api.taliiq.com/api/v1/channels/web/{channel_id}/", {
method: "DELETE",
headers: {
"Authorization": "Bearer $TALIIQ_API_KEY"
},
});
console.log(await response.json());Try it live
/api/proxy/v1/channels/web/{id}/
