call.endedA ligação terminou. Transcrição e análise ainda podem estar em processamento.
Gerencie agentes e números, consulte chamadas, transcrições, análises e auditorias de qualidade. Use webhooks assinados para receber resultados sem precisar consultar a API continuamente.
https://api.voxiomni.com/api/v1A v1 não inicia chamadas ativas, não envia variáveis ou metadados para chamadas e não configura roteamento externo de números.
Crie a chave em Configurações → Desenvolvimento. Envie-a no header Authorization. A chave é exibida somente uma vez e pertence exclusivamente ao workspace em que foi criada.
Cada chave possui apenas os escopos selecionados. Use chaves diferentes para integrações diferentes e revogue uma credencial sem afetar as demais.
agents:readConsultar agentesagents:writeCriar e editar rascunhosagents:publishPublicar agentesphone_numbers:readConsultar númerosphone_numbers:writeComprar e cancelar númeroscalls:readConsultar chamadasrecordings:readAcessar gravaçõesquality:readConsultar auditoriascurl https://api.voxiomni.com/api/v1/agents \
-H "Authorization: Bearer $VOXIOMNI_API_KEY"As respostas usam JSON em camelCase. Erros possuem código estável e uma mensagem legível.
{
"code": "forbidden",
"message": "The API key does not have the required scope: calls:read."
}Consulte agentes, crie rascunhos, altere configurações e publique quando estiver pronto. Associar números é feito pelo campo phoneNumberIds do agente.
/agentsLista os agentes do workspace.
agents:read/agents/{agentId}Consulta um agente.
agents:read/agentsCria um agente em rascunho.
agents:write/agents/{agentId}Atualiza o rascunho e suas associações com números.
agents:write/agents/{agentId}/publishPublica a versão atual.
agents:publishConsulte, compre e cancele números do workspace. O roteamento personalizado não faz parte desta versão; a associação operacional com um agente usa agentId na compra ou phoneNumberIds no agente.
/phone-numbersLista os números do workspace.
phone_numbers:read/phone-numbers/availableBusca números disponíveis para compra.
phone_numbers:write/phone-numbersCompra um número, com associação opcional a um agente.
phone_numbers:write/phone-numbers/{phoneNumberId}Consulta um número.
phone_numbers:read/phone-numbers/{phoneNumberId}Cancela um número desassociado.
phone_numbers:writeConsulte até 90 dias por requisição. Sem datas, a API retorna os últimos 30 dias. Use page e pageSize para paginação.
/callsLista chamadas. Filtros: from, to, customerPhone, agent e outcome.
/calls/{callId}Retorna status, transcrição, resumo e análise.
calls:read/calls/{callId}/recordingTransmite a gravação quando ela estiver disponível e dentro da retenção.
recordings:readcurl "https://api.voxiomni.com/api/v1/calls?from=2026-10-01T00:00:00Z&to=2026-11-01T00:00:00Z&pageSize=50" \
-H "Authorization: Bearer $VOXIOMNI_API_KEY"Consulte as auditorias selecionadas pela configuração de qualidade do agente, incluindo score, critérios, evidências e revisão humana.
/quality-auditsLista auditorias. Filtros: from, to, agentId e reviewStatus.
/quality-audits/{callId}Consulta a auditoria, suas evidências e a transcrição associada.
quality:readCadastre uma URL HTTPS no APP e selecione quais eventos ela recebe. O campo type identifica o evento; o campo id é único e deve ser usado para deduplicação.
{
"id": "evt_01K8...",
"type": "call.processed",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-11T18:32:14Z",
"tenantId": "tenant_...",
"data": {
"id": "call_...",
"status": "completed",
"summary": "Cliente confirmou o acordo."
}
}Calcule HMAC-SHA256 sobre {timestamp}.{corpo_bruto} usando o segredo exibido ao criar o endpoint. Compare o resultado com o header Voxiomni-Signature.
Voxiomni-Event-IdID para deduplicaçãoVoxiomni-TimestampUnix timestamp da tentativaVoxiomni-Signaturev1=<hex>import crypto from 'node:crypto'
const signed = `${timestamp}.${rawBody}`
const expected = crypto
.createHmac('sha256', process.env.VOXIOMNI_WEBHOOK_SECRET)
.update(signed)
.digest('hex')
const received = signature.replace('v1=', '')
const valid = crypto.timingSafeEqual(
Buffer.from(expected, 'hex'),
Buffer.from(received, 'hex')
)call.endedA ligação terminou. Transcrição e análise ainda podem estar em processamento.
call.processedTodo o processamento pós-chamada terminou. Use este evento para consumir o resultado final.
call.failedA ligação terminou com falha.
quality.completedA auditoria automática terminou.
quality.failedA auditoria não pôde ser concluída.
quality.reviewedA revisão humana da auditoria foi concluída.
A entrega é at-least-once: em situações excepcionais, o mesmo evento pode chegar mais de uma vez. Responda rapidamente com qualquer status 2xx e processe de forma assíncrona.
Respostas 408, 409, 425, 429, erros 5xx e falhas de rede são tentadas novamente. As entregas permanecem visíveis no APP por 30 dias e podem ser reenviadas manualmente.