curl -X POST "https://app.talkover.ai/api/v1/agents/agent_123456/call" \
-H "Authorization: Bearer talq_your_environment_token_here" \
-H "Content-Type: application/json" \
-d '{
"to": "+5511987654321",
"payload": {
"customer_name": "Maria Silva",
"account_id": "ACC123"
},
"context": {
"user_id": "user_123",
"source": "web_app"
},
"delay_seconds": 0,
"is_testing": false
}'
const response = await fetch('https://app.talkover.ai/api/v1/agents/agent_123456/call', {
method: 'POST',
headers: {
'Authorization': 'Bearer talq_your_environment_token_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: '+5511987654321',
payload: {
customer_name: 'Maria Silva',
account_id: 'ACC123'
},
context: {
user_id: 'user_123',
source: 'web_app'
},
delay_seconds: 0,
is_testing: false
})
});
const result = await response.json();
import requests
url = "https://app.talkover.ai/api/v1/agents/agent_123456/call"
headers = {
"Authorization": "Bearer talq_your_environment_token_here",
"Content-Type": "application/json"
}
data = {
"to": "+5511987654321",
"payload": {
"customer_name": "Maria Silva",
"account_id": "ACC123"
},
"context": {
"user_id": "user_123",
"source": "web_app"
},
"delay_seconds": 0,
"is_testing": False
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
{
"success": true,
"data": {
"id": "call_789012",
"agent_id": "agent_123456",
"to": "+5511987654321",
"status": "initiated",
"created_at": "2024-01-15T10:30:00Z"
}
}
Fazer Chamada
Realizar uma Chamada
Iniciar uma chamada com IA usando um agente de voz
POST
/
api
/
v1
/
agents
/
{agent_id}
/
call
curl -X POST "https://app.talkover.ai/api/v1/agents/agent_123456/call" \
-H "Authorization: Bearer talq_your_environment_token_here" \
-H "Content-Type: application/json" \
-d '{
"to": "+5511987654321",
"payload": {
"customer_name": "Maria Silva",
"account_id": "ACC123"
},
"context": {
"user_id": "user_123",
"source": "web_app"
},
"delay_seconds": 0,
"is_testing": false
}'
const response = await fetch('https://app.talkover.ai/api/v1/agents/agent_123456/call', {
method: 'POST',
headers: {
'Authorization': 'Bearer talq_your_environment_token_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: '+5511987654321',
payload: {
customer_name: 'Maria Silva',
account_id: 'ACC123'
},
context: {
user_id: 'user_123',
source: 'web_app'
},
delay_seconds: 0,
is_testing: false
})
});
const result = await response.json();
import requests
url = "https://app.talkover.ai/api/v1/agents/agent_123456/call"
headers = {
"Authorization": "Bearer talq_your_environment_token_here",
"Content-Type": "application/json"
}
data = {
"to": "+5511987654321",
"payload": {
"customer_name": "Maria Silva",
"account_id": "ACC123"
},
"context": {
"user_id": "user_123",
"source": "web_app"
},
"delay_seconds": 0,
"is_testing": False
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
{
"success": true,
"data": {
"id": "call_789012",
"agent_id": "agent_123456",
"to": "+5511987654321",
"status": "initiated",
"created_at": "2024-01-15T10:30:00Z"
}
}
Realizar uma Chamada
Inicia uma chamada com IA usando um agente de voz específico. Este endpoint cria uma nova chamada e retorna os detalhes da chamada, incluindo um ID de chamada único. Para chamadas baseadas em campanha, veja Realizar Chamada de Campanha.Endpoint
POST /api/v1/agents/{agent_id}/call
Parâmetros de caminho
string
obrigatório
O identificador único do agente de voz que tratará a chamada.
Cabeçalhos da requisição
string
obrigatório
Token Bearer para autenticação. Formato:
Bearer talq_your_environment_token_herestring
obrigatório
Deve ser definido como
application/jsonCorpo da requisição
string
obrigatório
Número de telefone para chamar. Deve estar em formato internacional (ex:
+5511987654321).object
Variáveis de substituição para o prompt do agente. Use isto para personalizar a conversa com dados dinâmicos. As chaves devem corresponder a placeholders no prompt do seu agente.
object
Dados customizados a serem enviados de volta ao seu cliente via webhooks. Estes dados não são usados na conversa, mas serão incluídos em todos os eventos de webhook relacionados a esta chamada, permitindo que você acompanhe e associe chamadas aos seus registros internos.
integer
padrão:"0"
Número de segundos para atrasar antes de realizar a chamada. Faixa:
0–3600 (1 hora). Útil para agendar uma chamada alguns segundos ou minutos após um evento gatilho.boolean
padrão:"false"
Quando
true, a chamada é marcada como um teste. Chamadas de teste não consomem créditos de cobrança e são excluídas das agregações de analytics.Exemplos
curl -X POST "https://app.talkover.ai/api/v1/agents/agent_123456/call" \
-H "Authorization: Bearer talq_your_environment_token_here" \
-H "Content-Type: application/json" \
-d '{
"to": "+5511987654321",
"payload": {
"customer_name": "Maria Silva",
"account_id": "ACC123"
},
"context": {
"user_id": "user_123",
"source": "web_app"
},
"delay_seconds": 0,
"is_testing": false
}'
const response = await fetch('https://app.talkover.ai/api/v1/agents/agent_123456/call', {
method: 'POST',
headers: {
'Authorization': 'Bearer talq_your_environment_token_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: '+5511987654321',
payload: {
customer_name: 'Maria Silva',
account_id: 'ACC123'
},
context: {
user_id: 'user_123',
source: 'web_app'
},
delay_seconds: 0,
is_testing: false
})
});
const result = await response.json();
import requests
url = "https://app.talkover.ai/api/v1/agents/agent_123456/call"
headers = {
"Authorization": "Bearer talq_your_environment_token_here",
"Content-Type": "application/json"
}
data = {
"to": "+5511987654321",
"payload": {
"customer_name": "Maria Silva",
"account_id": "ACC123"
},
"context": {
"user_id": "user_123",
"source": "web_app"
},
"delay_seconds": 0,
"is_testing": False
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
Resposta
Resposta de Sucesso (200 OK)
{
"success": true,
"data": {
"id": "call_789012",
"agent_id": "agent_123456",
"to": "+5511987654321",
"status": "initiated",
"created_at": "2024-01-15T10:30:00Z"
}
}
Campos da Resposta
boolean
obrigatório
Indica se a requisição foi processada com sucesso.
string
obrigatório
Identificador único da chamada. Use este ID para acompanhar o status da chamada, recuperar detalhes ou correlacionar com eventos de webhook.
string
O ID do agente de voz que está tratando a chamada.
string
obrigatório
O número de telefone que foi chamado.
string
obrigatório
Status atual da chamada. Valores possíveis:
initiated- Chamada foi criada e está sendo processadaringing- Telefone está tocandoanswered- Chamada está ativa e a conversa está acontecendocompleted- Chamada finalizou com sucessofailed- Chamada falhoubusy- Telefone estava ocupadono-answer- Telefone tocou mas não foi atendido
string
obrigatório
Timestamp ISO 8601 quando a chamada foi criada.
Respostas de erro
400 Requisição Inválida
{
"error": {
"code": "INVALID_PHONE_NUMBER",
"message": "Phone number must be in international format (e.g., +5511987654321)",
"details": {
"field": "to",
"value": "1234567890"
}
}
}
401 Não Autorizado
{
"error": {
"code": "INVALID_TOKEN",
"message": "Invalid or missing authentication token"
}
}
404 Não Encontrado
{
"error": {
"code": "AGENT_NOT_FOUND",
"message": "Voice agent not found",
"details": {
"agent_id": "agent_999999"
}
}
}
402 Pagamento Necessário
{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Account has insufficient credits to place this call"
}
}
429 Muitas Requisições
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Please wait before making more requests.",
"details": {
"retry_after": 60
}
}
}
Códigos de erro
| Código | Descrição | Status HTTP |
|---|---|---|
INVALID_PHONE_NUMBER | Formato do número de telefone é inválido | 400 |
MISSING_PHONE_NUMBER | Número de telefone é obrigatório | 400 |
INVALID_TOKEN | Token de autenticação inválido ou ausente | 401 |
AGENT_NOT_FOUND | Agente especificado não existe | 404 |
AGENT_INACTIVE | Agente não está publicado | 400 |
INSUFFICIENT_CREDITS | Conta com créditos insuficientes | 402 |
RATE_LIMIT_EXCEEDED | Muitas requisições em pouco tempo | 429 |
Limites de taxa
Cabeçalhos de limite de taxa são incluídos em todas as respostas:X-RateLimit-Limit: Máximo de requisições por janelaX-RateLimit-Remaining: Requisições restantes na janela atualX-RateLimit-Reset: Hora em que o limite de taxa é redefinido
Melhores Práticas
- Sempre trate erros graciosamente — verifique respostas de erro e implemente lógica de retry com backoff exponencial.
- Armazene IDs de chamada — use o
data.idretornado para acompanhar o status da chamada e correlacionar com eventos de webhook. - Use
contextpara rastreamento — passe IDs internos emcontextpara que eventos de webhook possam ser vinculados aos registros do seu sistema. - Use
is_testingdurante a integração — mantém o tráfego de teste fora dos analytics e evita cobrança. - Valide números de telefone antes de chamar — garanta o formato E.164 (
+seguido de código do país e número).
Endpoints relacionados
- Realizar Chamada de Campanha — realiza chamadas agendadas por uma campanha.
- Listar Chamadas — recupera chamadas históricas.
- Obter Agente — busca a configuração do agente.
Esta página foi útil?