Webhooks
通过接收 webhook 事件启用外部集成。
概述
ElevenLabs 中的某些事件可配置为触发 webhook,让外部应用和系统能在事件发生时接收和处理它们。目前支持的事件类型包括:
配置
可在常规设置页面创建、禁用和删除 webhook。对于工作区中的用户,只有工作区管理员可以配置该工作区的 webhook。

创建后,可在 Agents Platform 等产品设置中选择该 webhook 来监听事件。
flows_generation 和 flows_template_run 事件均由一个订阅启用:在 Select events to listen to 下,勾选 Image & Video API generation or template run completed,或将 flows 事件传给更新工作区 webhook。只有在创建请求中包含 webhook 字段时,生成或运行才会发送其事件。
可随时从常规设置页面禁用 webhook。如果连续失败次数达到 10 次或以上,且最近一次成功传送超过 7 天前,或从未成功传送过,反复失败的 webhook 会被自动禁用。自动禁用的 webhook 需要在设置页面重新启用。未被任何产品使用的 webhook 可以删除。
重试
可为每个 webhook 启用重试,以便在请求失败时自动重新尝试传送。默认禁用重试。可通过 API 创建或更新 webhook 时,或在 webhook 设置中启用重试。
ElevenAgents 通话后
webhook支持重试,包括转写
(post_call_transcription)、音频(post_call_audio)和通话发起失败
(call_initiation_failure)事件。
重试计划
当传送尝试因可重试错误而失败时,系统最多重试 5 次,各次尝试之间的延迟逐渐增加:
每次重试都会加入少量随机抖动(最多为延迟的 10%),以分散负载并避免惊群问题。
可重试错误
并非所有失败都会触发重试。只有以下失败会被视为可重试:
5xx状态码(服务器错误,如 500、502、503、504)。429(请求过多)。408(请求超时)。- 连接错误和请求超时。
4xx 范围内的请求错误(如 400、401、403、404)不会重试,因为它们通常表示需要手动修正的配置问题。
每个 webhook 的队列限制
每个 webhook 最多可有 100 个待处理的重试任务。如果某个 webhook 累积超过 100 个排队重试任务,在处理完现有重试前,额外任务会被丢弃。这可防止配置错误的单个 webhook 消耗过多资源。
音频 webhook 还有两个额外限制。大于 50 MiB 的音频负载仅传送一次,不会重试;单个 webhook 排队的音频重试总量不得超过 400 MiB。
自动禁用行为
系统会跟踪每个 webhook 的连续传送失败次数。满足以下两个条件时,webhook 会被自动禁用:
- 已发生 10 次或以上连续传送失败。
- webhook 从未成功传送过,或最近一次成功传送已超过 7 天。
webhook 被自动禁用时,工作区管理员会收到邮件通知。必须在设置页面手动重新启用该 webhook 后,才会恢复传送。
集成
要集成 webhook,请创建一个端点处理程序,以 POST 请求接收 webhook 事件数据。验证签名后,处理程序应及时返回 HTTP 200,表示已成功接收。反复未能返回成功响应可能导致 webhook 被自动禁用。
重试负载与原始传送尝试完全相同。webhook 消费者无法仅通过负载区分初始传送和重试,因此请将处理程序设计为幂等——多次处理同一事件应产生相同结果。必要时可使用 event_timestamp 和事件特定标识符(如 conversation_id)去重。
顶层字段
webhook 负载示例
身份验证
监听器必须验证所有传入的 webhook。Webhook 目前支持通过 HMAC 签名进行身份验证。可按以下方式设置 HMAC 身份验证:
- 安全存储创建 webhook 时生成的共享密钥
- 使用 SDK 在端点中验证 ElevenLabs-Signature 请求头
JavaScript SDK 提供 constructEvent;Python SDK 提供 construct_event,并使用 rawBody、sig_header 和 secret(在 Python 中,它们不叫 payload / signature)。两者都会验证签名、验证时间戳,并解析 JSON 负载。
Python
JavaScript
使用 FastAPI 的 webhook 处理程序示例: