taliiq
App
Taliiq

Channels

Web widget channels that connect users to your agents

Download OpenAPI JSON

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:

  1. Create an agent with prompt, voice, and pipeline settings
  2. Create a web channel below linked to that agent_id
  3. Use the returned channel id as data-channel-id in your embed (dashboard Channels shows the full snippet). Legacy embed_token is not used by the current widget script.

SIP and telephony channels are configured in the dashboard under Channels today.

List web channels

GET/api/v1/channels/web/channels.web.list · scope: channels:read
curl -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

POST/api/v1/channels/web/channels.web.create · scope: channels:write

Links 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

GET/api/v1/channels/web/{channel_id}channels.web.get · scope: channels:read
curl -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

PATCH/api/v1/channels/web/{channel_id}channels.web.update · scope: channels:write
curl -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

DELETE/api/v1/channels/web/{channel_id}channels.web.delete · scope: channels:write

Set 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}/