taliiq
App
Taliiq

Agents

List, create, update, and delete voice and chat 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.

Agents are published configurations (is_draft=false) with a system prompt and pipeline settings. Voice agents also need a voice_id from your organization's voice library.

To go live on the web, create an agent here, then add a web channel linked to that agent.

All responses use the v1 envelope. See Constraints for delete rules and setup order.

List agents

GET/api/v1/agents/agents.list · scope: agents:read

Cursor-paginated list. Omit cursor on the first page; use meta.cursor when meta.has_more is true.

curl -X GET 'https://api.taliiq.com/api/v1/agents/?limit=20&cursor=' \
  -H 'Authorization: Bearer $TALIIQ_API_KEY'
import requests

url = "https://api.taliiq.com/api/v1/agents/?limit=20&cursor="
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/agents/?limit=20&cursor=", {
  method: "GET",
  headers: {
    "Authorization": "Bearer $TALIIQ_API_KEY"
},
});

console.log(await response.json());

Try it live

/api/proxy/v1/agents/?limit=20&cursor=

Create agent

Required for a runnable agent:

  • system_prompt — agent instructions
  • capabilities — include voice and/or chat
  • voice_id — required when voice is enabled (pick from the dashboard Voice Library)
  • first_message — recommended so the agent greets callers immediately

Pipeline settings default to your organization configuration when omitted.

POST/api/v1/agents/agents.create · scope: agents:write

Creates a published agent ready to attach to a channel.

curl -X POST 'https://api.taliiq.com/api/v1/agents/' \
  -H 'Authorization: Bearer $TALIIQ_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"name":"Support Bot","description":"Arabic voice and chat support","capabilities":["voice","chat"],"language":"ar","dialect":"ar-EG","system_prompt":"You are a helpful Arabic customer support agent for Taliiq. Be concise and polite.","first_message":"مرحباً، أنا مساعدك الذكي. كيف يمكنني مساعدتك؟","first_message_mode":"agent_first","voice_id":"REPLACE_WITH_VOICE_LIBRARY_ID","stt_language":"ar-EG","tools":[]}'
import requests

url = "https://api.taliiq.com/api/v1/agents/"
headers = {
  "Authorization": "Bearer $TALIIQ_API_KEY",
  "Content-Type": "application/json"
}
payload = {
  "name": "Support Bot",
  "description": "Arabic voice and chat support",
  "capabilities": [
    "voice",
    "chat"
  ],
  "language": "ar",
  "dialect": "ar-EG",
  "system_prompt": "You are a helpful Arabic customer support agent for Taliiq. Be concise and polite.",
  "first_message": "مرحباً، أنا مساعدك الذكي. كيف يمكنني مساعدتك؟",
  "first_message_mode": "agent_first",
  "voice_id": "REPLACE_WITH_VOICE_LIBRARY_ID",
  "stt_language": "ar-EG",
  "tools": []
}

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/agents/", {
  method: "POST",
  headers: {
    "Authorization": "Bearer $TALIIQ_API_KEY",
    "Content-Type": "application/json"
},
  body: JSON.stringify({"name":"Support Bot","description":"Arabic voice and chat support","capabilities":["voice","chat"],"language":"ar","dialect":"ar-EG","system_prompt":"You are a helpful Arabic customer support agent for Taliiq. Be concise and polite.","first_message":"مرحباً، أنا مساعدك الذكي. كيف يمكنني مساعدتك؟","first_message_mode":"agent_first","voice_id":"REPLACE_WITH_VOICE_LIBRARY_ID","stt_language":"ar-EG","tools":[]}),
});

console.log(await response.json());

Try it live

/api/proxy/v1/agents/

Get agent

GET/api/v1/agents/{agent_id}agents.get · scope: agents:read

Replace {agent_id} with the UUID from list or create.

curl -X GET 'https://api.taliiq.com/api/v1/agents/{agent_id}/' \
  -H 'Authorization: Bearer $TALIIQ_API_KEY'
import requests

url = "https://api.taliiq.com/api/v1/agents/{agent_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/agents/{agent_id}/", {
  method: "GET",
  headers: {
    "Authorization": "Bearer $TALIIQ_API_KEY"
},
});

console.log(await response.json());

Try it live

/api/proxy/v1/agents/{id}/

Update agent

PATCH/api/v1/agents/{agent_id}agents.update · scope: agents:write
curl -X PATCH 'https://api.taliiq.com/api/v1/agents/{agent_id}/' \
  -H 'Authorization: Bearer $TALIIQ_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"name":"Support Bot v2","is_active":true,"system_prompt":"Updated instructions."}'
import requests

url = "https://api.taliiq.com/api/v1/agents/{agent_id}/"
headers = {
  "Authorization": "Bearer $TALIIQ_API_KEY",
  "Content-Type": "application/json"
}
payload = {
  "name": "Support Bot v2",
  "is_active": true,
  "system_prompt": "Updated instructions."
}

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/agents/{agent_id}/", {
  method: "PATCH",
  headers: {
    "Authorization": "Bearer $TALIIQ_API_KEY",
    "Content-Type": "application/json"
},
  body: JSON.stringify({"name":"Support Bot v2","is_active":true,"system_prompt":"Updated instructions."}),
});

console.log(await response.json());

Try it live

/api/proxy/v1/agents/{id}/

Delete agent

DELETE/api/v1/agents/{agent_id}agents.delete · scope: agents:write

Set is_active to false and remove linked channels first. Returns 409 resource_in_use if blocked.

curl -X DELETE 'https://api.taliiq.com/api/v1/agents/{agent_id}/' \
  -H 'Authorization: Bearer $TALIIQ_API_KEY'
import requests

url = "https://api.taliiq.com/api/v1/agents/{agent_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/agents/{agent_id}/", {
  method: "DELETE",
  headers: {
    "Authorization": "Bearer $TALIIQ_API_KEY"
},
});

console.log(await response.json());

Try it live

/api/proxy/v1/agents/{id}/

Stop an agent first:

PATCH/api/v1/agents/{agent_id}agents.deactivate · scope: agents:write
curl -X PATCH 'https://api.taliiq.com/api/v1/agents/{agent_id}/' \
  -H 'Authorization: Bearer $TALIIQ_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"is_active":false}'
import requests

url = "https://api.taliiq.com/api/v1/agents/{agent_id}/"
headers = {
  "Authorization": "Bearer $TALIIQ_API_KEY",
  "Content-Type": "application/json"
}
payload = {
  "is_active": false
}

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/agents/{agent_id}/", {
  method: "PATCH",
  headers: {
    "Authorization": "Bearer $TALIIQ_API_KEY",
    "Content-Type": "application/json"
},
  body: JSON.stringify({"is_active":false}),
});

console.log(await response.json());

Try it live

/api/proxy/v1/agents/{id}/