# Últimos 30 dias, com o resultado da conversa
curl -X GET "https://app.talkover.ai/api/v1/calls?include=insight&per_page=50" \
-H "Authorization: Bearer talq_seu_token_de_ambiente"
// Últimos 30 dias, com o resultado da conversa
const response = await fetch(
'https://app.talkover.ai/api/v1/calls?include=insight&per_page=50',
{ headers: { Authorization: 'Bearer talq_seu_token_de_ambiente' } }
);
const { data, pagination } = await response.json();
{
"success": true,
"data": [
{
"id": "01a0c5a5-390e-710a-a3aa-cab502215d09",
"to": "+5511987654321",
"to_formatted": "(11) 98765-4321",
"from": "+551152864600",
"from_formatted": "(11) 5286-4600",
"is_testing": false,
"direction": "outbound",
"source": "crm",
"status": "completed",
"price": 0.32,
"start_time": "2026-09-21T20:25:45.000000Z",
"end_time": "2026-09-21T20:26:49.000000Z",
"context": { "cliente_id": "C-1042" },
"agent": {
"id": "019ee647-1c5b-730d-b5dd-c6b3b3005f2d",
"name": "Ana"
},
"insight": {
"analysis_status": "completed",
"duration": 64,
"human_detected": true,
"objective_achieved": false,
"call_result": "partial_contact",
"collected_data": {
"intencao": null,
"valor_acordado": null
},
"campaign_id": "019ea766-4f99-731a-ad31-d99ac48d4812"
},
"created_at": "2026-09-21T20:25:40.000000Z",
"updated_at": "2026-09-21T20:27:02.000000Z"
},
{
"id": "01a0c5a4-8c1e-7f02-9b7e-2f649015d964",
"to": "+5511976543210",
"to_formatted": "(11) 97654-3210",
"from": "+551152864600",
"from_formatted": "(11) 5286-4600",
"is_testing": false,
"direction": "outbound",
"source": null,
"status": "voicemail",
"price": 0.05,
"start_time": "2026-09-21T20:30:31.000000Z",
"end_time": "2026-09-21T20:30:49.000000Z",
"context": {},
"agent": {
"id": "019ee647-1c5b-730d-b5dd-c6b3b3005f2d",
"name": "Ana"
},
"insight": {
"analysis_status": "pending",
"duration": null,
"human_detected": null,
"objective_achieved": null,
"call_result": null,
"collected_data": null,
"campaign_id": "019ea766-4f99-731a-ad31-d99ac48d4812"
},
"created_at": "2026-09-21T20:30:20.000000Z",
"updated_at": "2026-09-21T20:30:49.000000Z"
}
],
"pagination": {
"per_page": 50,
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0yMSAyMDoyNTo0MCIsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
"prev_cursor": null,
"next_page_url": "https://app.talkover.ai/api/v1/calls?include=insight&per_page=50&cursor=eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0yMSAyMDoyNTo0MCIsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
"prev_page_url": null
}
}
Chamadas e Campanhas
Listar chamadas
Retorna as chamadas do ambiente, com filtros, paginação por cursor e o resultado da conversa opcional
GET
/
api
/
v1
/
calls
# Últimos 30 dias, com o resultado da conversa
curl -X GET "https://app.talkover.ai/api/v1/calls?include=insight&per_page=50" \
-H "Authorization: Bearer talq_seu_token_de_ambiente"
// Últimos 30 dias, com o resultado da conversa
const response = await fetch(
'https://app.talkover.ai/api/v1/calls?include=insight&per_page=50',
{ headers: { Authorization: 'Bearer talq_seu_token_de_ambiente' } }
);
const { data, pagination } = await response.json();
{
"success": true,
"data": [
{
"id": "01a0c5a5-390e-710a-a3aa-cab502215d09",
"to": "+5511987654321",
"to_formatted": "(11) 98765-4321",
"from": "+551152864600",
"from_formatted": "(11) 5286-4600",
"is_testing": false,
"direction": "outbound",
"source": "crm",
"status": "completed",
"price": 0.32,
"start_time": "2026-09-21T20:25:45.000000Z",
"end_time": "2026-09-21T20:26:49.000000Z",
"context": { "cliente_id": "C-1042" },
"agent": {
"id": "019ee647-1c5b-730d-b5dd-c6b3b3005f2d",
"name": "Ana"
},
"insight": {
"analysis_status": "completed",
"duration": 64,
"human_detected": true,
"objective_achieved": false,
"call_result": "partial_contact",
"collected_data": {
"intencao": null,
"valor_acordado": null
},
"campaign_id": "019ea766-4f99-731a-ad31-d99ac48d4812"
},
"created_at": "2026-09-21T20:25:40.000000Z",
"updated_at": "2026-09-21T20:27:02.000000Z"
},
{
"id": "01a0c5a4-8c1e-7f02-9b7e-2f649015d964",
"to": "+5511976543210",
"to_formatted": "(11) 97654-3210",
"from": "+551152864600",
"from_formatted": "(11) 5286-4600",
"is_testing": false,
"direction": "outbound",
"source": null,
"status": "voicemail",
"price": 0.05,
"start_time": "2026-09-21T20:30:31.000000Z",
"end_time": "2026-09-21T20:30:49.000000Z",
"context": {},
"agent": {
"id": "019ee647-1c5b-730d-b5dd-c6b3b3005f2d",
"name": "Ana"
},
"insight": {
"analysis_status": "pending",
"duration": null,
"human_detected": null,
"objective_achieved": null,
"call_result": null,
"collected_data": null,
"campaign_id": "019ea766-4f99-731a-ad31-d99ac48d4812"
},
"created_at": "2026-09-21T20:30:20.000000Z",
"updated_at": "2026-09-21T20:30:49.000000Z"
}
],
"pagination": {
"per_page": 50,
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0yMSAyMDoyNTo0MCIsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
"prev_cursor": null,
"next_page_url": "https://app.talkover.ai/api/v1/calls?include=insight&per_page=50&cursor=eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0yMSAyMDoyNTo0MCIsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
"prev_page_url": null
}
}
Listar chamadas
Retorna as chamadas do ambiente autenticado, da mais recente para a mais antiga, com filtros por status, direção, agente, data e número. Passeinclude=insight para receber o resultado da conversa em cada chamada.
Endpoint
GET /api/v1/calls
Cabeçalhos da requisição
string
obrigatório
Token Bearer. Formato:
Bearer talq_seu_token_de_ambienteParâmetros de consulta
string
Acrescenta o resultado da conversa a cada chamada, como um objeto
insight. Único valor aceito: insight. Qualquer outro valor, ou um array (include[]=insight), devolve 422. Veja O bloco insight.string
Filtra por status da chamada. Opções:
completed, canceled, no-answer, busy, failed, voicemail, in-progress.string
Filtra por direção. Opções:
inbound, outbound.string
Só chamadas deste agente.
string
Início do período, por
created_at. Formato YYYY-MM-DD. Padrão: 30 dias atrás.string
Fim do período, inclusivo. Formato
YYYY-MM-DD.string
Prefixo do número
to ou from, ou um id exato de chamada. Mínimo de 3 caracteres; valores menores são ignorados.integer
Itens por página. Entre 1 e 100. Padrão: 20.
string
Cursor da página a buscar, como devolvido em
pagination.next_cursor ou pagination.prev_cursor.Exemplos de requisição
# Últimos 30 dias, com o resultado da conversa
curl -X GET "https://app.talkover.ai/api/v1/calls?include=insight&per_page=50" \
-H "Authorization: Bearer talq_seu_token_de_ambiente"
// Últimos 30 dias, com o resultado da conversa
const response = await fetch(
'https://app.talkover.ai/api/v1/calls?include=insight&per_page=50',
{ headers: { Authorization: 'Bearer talq_seu_token_de_ambiente' } }
);
const { data, pagination } = await response.json();
# Reconciliar um dia do agente de uma campanha
curl -X GET "https://app.talkover.ai/api/v1/calls?include=insight&agent_id=019ee647-1c5b-730d-b5dd-c6b3b3005f2d&date_from=2026-09-21&date_to=2026-09-21&per_page=100" \
-H "Authorization: Bearer talq_seu_token_de_ambiente"
// Reconciliar um dia do agente de uma campanha, seguindo o cursor
const base = 'https://app.talkover.ai/api/v1/calls?include=insight&agent_id=019ee647-1c5b-730d-b5dd-c6b3b3005f2d&date_from=2026-09-21&date_to=2026-09-21&per_page=100';
const headers = { Authorization: 'Bearer talq_seu_token_de_ambiente' };
let url = base;
while (url) {
const { data, pagination } = await (await fetch(url, { headers })).json();
// ...processe data
url = pagination.next_cursor ? `${base}&cursor=${pagination.next_cursor}` : null;
}
# Chamadas de saída para um prefixo de número
curl -X GET "https://app.talkover.ai/api/v1/calls?search=%2B5511&direction=outbound" \
-H "Authorization: Bearer talq_seu_token_de_ambiente"
// Chamadas de saída para um prefixo de número
const response = await fetch(
'https://app.talkover.ai/api/v1/calls?search=%2B5511&direction=outbound',
{ headers: { Authorization: 'Bearer talq_seu_token_de_ambiente' } }
);
Resposta
Resposta de sucesso (200 OK)
O exemplo abaixo foi pedido cominclude=insight. Sem ele, a chave insight não aparece.
{
"success": true,
"data": [
{
"id": "01a0c5a5-390e-710a-a3aa-cab502215d09",
"to": "+5511987654321",
"to_formatted": "(11) 98765-4321",
"from": "+551152864600",
"from_formatted": "(11) 5286-4600",
"is_testing": false,
"direction": "outbound",
"source": "crm",
"status": "completed",
"price": 0.32,
"start_time": "2026-09-21T20:25:45.000000Z",
"end_time": "2026-09-21T20:26:49.000000Z",
"context": { "cliente_id": "C-1042" },
"agent": {
"id": "019ee647-1c5b-730d-b5dd-c6b3b3005f2d",
"name": "Ana"
},
"insight": {
"analysis_status": "completed",
"duration": 64,
"human_detected": true,
"objective_achieved": false,
"call_result": "partial_contact",
"collected_data": {
"intencao": null,
"valor_acordado": null
},
"campaign_id": "019ea766-4f99-731a-ad31-d99ac48d4812"
},
"created_at": "2026-09-21T20:25:40.000000Z",
"updated_at": "2026-09-21T20:27:02.000000Z"
},
{
"id": "01a0c5a4-8c1e-7f02-9b7e-2f649015d964",
"to": "+5511976543210",
"to_formatted": "(11) 97654-3210",
"from": "+551152864600",
"from_formatted": "(11) 5286-4600",
"is_testing": false,
"direction": "outbound",
"source": null,
"status": "voicemail",
"price": 0.05,
"start_time": "2026-09-21T20:30:31.000000Z",
"end_time": "2026-09-21T20:30:49.000000Z",
"context": {},
"agent": {
"id": "019ee647-1c5b-730d-b5dd-c6b3b3005f2d",
"name": "Ana"
},
"insight": {
"analysis_status": "pending",
"duration": null,
"human_detected": null,
"objective_achieved": null,
"call_result": null,
"collected_data": null,
"campaign_id": "019ea766-4f99-731a-ad31-d99ac48d4812"
},
"created_at": "2026-09-21T20:30:20.000000Z",
"updated_at": "2026-09-21T20:30:49.000000Z"
}
],
"pagination": {
"per_page": 50,
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0yMSAyMDoyNTo0MCIsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
"prev_cursor": null,
"next_page_url": "https://app.talkover.ai/api/v1/calls?include=insight&per_page=50&cursor=eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0yMSAyMDoyNTo0MCIsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0",
"prev_page_url": null
}
}
Campos da resposta
boolean
obrigatório
Se a requisição foi bem-sucedida.
array
obrigatório
Array de objetos de chamada.
Mostrar Objeto de chamada
Mostrar Objeto de chamada
string
obrigatório
Identificador único da chamada. Use para toda correlação, inclusive com os eventos de webhook.
string
obrigatório
Número de destino em formato E.164.
string
obrigatório
Número de destino formatado para exibição.
string
obrigatório
Número de origem em formato E.164.
string
obrigatório
Número de origem formatado para exibição.
boolean
obrigatório
Se é uma chamada de teste.
string
obrigatório
Opções:
inbound, outbound.string | null
obrigatório
Rótulo que você passou como
source ao criar a chamada, ou null. A Talkover não interpreta o valor.string
obrigatório
Status atual. Valores terminais:
completed, canceled, no-answer, busy, failed, voicemail. Chamada ainda em curso mostra initiated, ringing, queued ou in-progress.number
obrigatório
Preço da chamada na moeda do ambiente.
0 enquanto a chamada não foi precificada.string | null
obrigatório
Timestamp ISO 8601 de quando a chamada foi atendida.
string | null
obrigatório
Timestamp ISO 8601 de quando a chamada terminou.
object
obrigatório
O
context que você passou ao criar a chamada. {} quando não houve.object
obrigatório
object
Resultado da conversa. Presente só com
include=insight. Veja O bloco insight.string
obrigatório
Timestamp ISO 8601 de quando a chamada foi criada.
string
obrigatório
Timestamp ISO 8601 da última atualização.
object
obrigatório
Paginação por cursor. Não há contagem total.
Mostrar Objeto de paginação
Mostrar Objeto de paginação
integer
obrigatório
Itens por página.
string | null
obrigatório
Cursor da próxima página.
null na última.string | null
obrigatório
Cursor da página anterior.
null na primeira.string | null
obrigatório
URL completa da próxima página, com os mesmos filtros.
string | null
obrigatório
URL completa da página anterior.
O bloco insight
O que o agente capturou na conversa. Os mesmos dados que o webhook event_call_report entrega, disponíveis por consulta para uma página inteira de chamadas. summary e transcript não entram aqui por causa do tamanho; leia-os com Obter resultado da chamada.
string
obrigatório
Estado da análise pós-chamada. Opções:
completed, pending, unavailable. A análise roda depois que a chamada termina; pending significa “consulte de novo mais tarde”, unavailable significa “não haverá resultado”. Regras completas em Obter resultado da chamada.integer | null
obrigatório
Duração da chamada em segundos. Presente em qualquer estado.
null quando não houve tempo de conversa medido (voicemail, no-answer, failed, busy).boolean | null
obrigatório
Uma pessoa atendeu.
boolean | null
obrigatório
O objetivo configurado no agente foi atingido.
string | null
obrigatório
Opções:
success, partial_contact, unsuccessful.object | null
obrigatório
Os campos que o seu agente está configurado para coletar, com os valores extraídos da conversa. As chaves são as suas.
{} quando nada foi coletado.string | null
obrigatório
Campanha que originou a discagem.
null fora de campanha. Cada retentativa é uma chamada própria.human_detected, objective_achieved, call_result e collected_data são null sempre que analysis_status não for completed. Um false ali é resultado real, nunca análise ausente.
Respostas de erro
401 Não autorizado
{
"message": "Unauthenticated."
}
422 Erro de validação
Devolvido parainclude desconhecido, status ou direction inválidos, ou data fora de YYYY-MM-DD.
{
"success": false,
"message": "Invalid include value. Allowed: insight.",
"error": "Invalid include value. Allowed: insight."
}
Notas
Reconciliar um dia. Consulte com
include=insight, date_from e date_to pelo menos 30 minutos depois do fim da última chamada. A essa altura analysis_status é completed ou unavailable para toda chamada, e o pending sumiu.Janela padrão. Sem
date_from, só os últimos 30 dias são devolvidos.Fora desta resposta. O SID do provedor de telefonia e flags internos de roteamento ficam de fora de propósito. Gravações são servidas por
GET /api/v1/calls/{call_id}/recording-url, que responde 404 quando não há.Endpoints relacionados
- Obter resultado da chamada:
GET /api/v1/calls/{call_id}/insight— resumo e transcrição de uma chamada. - Obter chamadas do agente:
GET /api/v1/agents/{agent_id}/calls - Obter URL da gravação:
GET /api/v1/calls/{call_id}/recording-url - Fazer chamada:
POST /api/v1/agents/{agent_id}/call
Esta página foi útil?