Webhooks pós-chamada
Receba notificações quando as chamadas terminarem e a análise for concluída por meio de webhooks.
Visão geral
Os webhooks pós-chamada permitem receber informações detalhadas sobre uma chamada após a conclusão da análise. Quando ativados, a ElevenLabs envia uma solicitação POST ao endpoint especificado com dados completos da chamada.
A ElevenLabs oferece suporte a três tipos de webhooks pós-chamada:
- Webhooks de transcrição (
post_call_transcription): contêm dados completos da conversa, incluindo transcrições, resultados de análise e metadados - Webhooks de áudio (
post_call_audio): contêm dados mínimos com o áudio de toda a conversa codificado em base64 - Webhooks de falha na iniciação da chamada (
call_initiation_failure): contêm informações sobre tentativas de iniciar chamadas que falharam, incluindo motivos da falha e metadados
Ativando webhooks pós-chamada
Os webhooks pós-chamada podem ser ativados para todos os agentes do seu workspace pela página de configurações do ElevenAgents.

Os webhooks pós-chamada devem retornar um código de status 200 para serem considerados bem-sucedidos. Webhooks que falham repetidamente são desativados automaticamente se houver 10 ou mais falhas consecutivas e a última entrega bem-sucedida tiver ocorrido há mais de 7 dias ou nunca tiver sido entregue com sucesso.
Os webhooks pós-chamada podem receber novas tentativas automaticamente se falharem. Consulte novas tentativas de webhook.
Autenticação
É importante que o listener valide todos os webhooks recebidos. Atualmente, os webhooks oferecem suporte à autenticação por assinaturas HMAC. Configure a autenticação HMAC:
- Armazenando com segurança o segredo compartilhado gerado na criação do webhook
- Verificando o cabeçalho ElevenLabs-Signature no seu endpoint usando o SDK
O SDK JavaScript disponibiliza constructEvent; o SDK Python disponibiliza construct_event com rawBody, sig_header e secret (em Python, eles não se chamam payload / signature). Ambos verificam a assinatura, validam o carimbo de data e hora e analisam o payload JSON.
Python
JavaScript
Exemplo de manipulador de webhook usando FastAPI:
Lista de permissões de IP
Para maior segurança, você pode adicionar os IPs de saída estáticos da ElevenLabs à sua lista de permissões. Consulte Lista de permissões de IP para ver a lista completa de endereços IP.
Usar uma lista de permissões de IP junto com a validação de assinatura HMAC oferece várias camadas de segurança.
Estrutura da resposta do webhook
A ElevenLabs envia três tipos distintos de webhooks pós-chamada, cada um com estruturas de dados diferentes:
Webhooks de transcrição (post_call_transcription)
Contêm dados completos da conversa, incluindo transcrições integrais, resultados de análise e metadados.
Campos de nível superior
Estrutura do objeto de dados
O objeto data contém:
Webhooks de áudio (post_call_audio)
Contêm dados mínimos com o áudio completo da conversa em MP3 codificado em base64.
Campos de nível superior
Estrutura do objeto de dados
O objeto data contém apenas:
Os webhooks de áudio contêm apenas os três campos listados acima. Eles NÃO incluem dados de transcrição, metadados, resultados de análise nem outros detalhes da conversa.
Webhooks de falha na iniciação da chamada (call_initiation_failure)
Contêm informações sobre tentativas de iniciar chamadas telefônicas, incluindo motivos de falha e metadados do provedor de telefonia.
Os eventos de webhook de falha na iniciação da chamada são enviados quando uma chamada não pode ser iniciada devido a erros de conexão, à recusa da chamada pelo usuário ou porque o usuário não atende. Se uma chamada cair na caixa postal ou for atendida por um serviço automatizado, nenhum webhook de falha na iniciação será enviado, pois a chamada foi iniciada com sucesso.
Campos de nível superior
Estrutura do objeto de dados
O objeto data contém:
Estrutura do objeto de metadados
A estrutura do objeto metadata varia dependendo se a chamada de saída foi feita pelo Twilio ou por entroncamento SIP. O objeto inclui um campo type, que diferencia os dois, e um campo body, que contém detalhes específicos do provedor.
Metadados SIP (type: "sip"):
O objeto body dos metadados SIP contém:
Metadados do Twilio (type: "twilio"):
Exemplos de payloads de webhook
Exemplo de webhook de transcrição
Exemplo de webhook de áudio
Exemplos de webhook de falha na iniciação da chamada
Exemplo de metadados do Twilio
Exemplo de metadados SIP
Entrega de webhooks de áudio
Os webhooks de áudio são entregues separadamente dos webhooks de transcrição e contêm apenas os campos essenciais para identificar a conversa, junto com os dados de áudio codificados em base64.
Os webhooks de áudio podem ser ativados ou desativados usando a opção “Enviar dados de áudio” nas configurações do webhook. Essa configuração pode ser definida tanto no nível do espaço de trabalho (nas configurações do ElevenAgents) quanto no nível do agente (nas substituições de webhook de cada agente).
Entrega por streaming
Os webhooks de áudio são entregues como solicitações HTTP em streaming com o cabeçalho transfer-encoding: chunked, para processar arquivos de áudio grandes com eficiência. Cada solicitação expira após 5 minutos.
Tentativas
Quando as tentativas estão ativadas no webhook, as entregas de áudio que falharem são repetidas na mesma programação dos webhooks de transcrição. Uma nova tentativa reenvia o payload de áudio completo, portanto, elimine duplicatas usando conversation_id. Consulte tentativas de webhook para ver a programação, os erros que permitem novas tentativas e os limites de tamanho de áudio.
Processamento de webhooks de áudio
Como os webhooks de áudio são entregues por codificação de transferência em blocos, você precisa processar corretamente os dados em streaming:
Os webhooks de áudio podem ser arquivos grandes, portanto, garanta que seu endpoint de webhook possa processar solicitações em streaming e tenha capacidade suficiente de memória/armazenamento. O áudio é entregue no formato MP3.
Casos de uso
Acompanhamentos automatizados de chamadas
Os webhooks pós-chamada permitem criar workflows automatizados que são acionados imediatamente após o término de uma chamada. Veja algumas aplicações práticas:
Integração com CRM
Atualize seu sistema de gestão de relacionamento com clientes com os dados da conversa assim que uma chamada for concluída:
Conversas com estado
Mantenha o contexto da conversa entre várias interações armazenando e recuperando o estado:
- Quando uma chamada começar, envie o ID do usuário como uma variável dinâmica.
- Quando uma chamada terminar, configure seu endpoint de webhook para armazenar os dados da conversa no banco de dados com base no ID de usuário extraído de dynamic_variables.
- Quando o usuário ligar novamente, você poderá recuperar esse contexto e enviá-lo para a nova conversa em uma variável dinâmica {{previous_topics}}.
- Isso cria uma experiência contínua, em que o agente “lembra” das interações anteriores.