Como o Wabox entrega eventos, o que vem em cada requisição e as garantias de entrega.
Webhooks são a única forma de receber alguma coisa do WhatsApp: mensagens, recibos, mudanças de conexão. O Wabox faz um POST HTTPS com JSON para a URL que você configurar, uma URL por tipo de evento.
Tipo
O que avisa
Página
received
Chegou uma mensagem (qualquer tipo) ou um evento de chat
No painel há dois lugares: Webhooks (menu lateral) define URLs e filtros para todas as instâncias do workspace, e a aba Webhooks e configurações gerais de cada instância permite sobrescrever só ali (desligue “Usar webhooks do workspace”). Instâncias novas herdam do workspace por padrão, e um workspace novo já começa no modo Uma única URL para todos os eventos (basta preencher a URL). Pela API, a configuração é sempre por instância:
Pode ser a mesma URL para tudo ou uma por tipo. null desliga o tipo. PUT /webhooks/{type} com { "value": "https://..." } altera um só. Os filtros decidem quais mensagens chegam.Para não repetir a URL em cada tipo, use o modo de URL única. Todos os eventos vão para single_url e as *_url por tipo são ignoradas. Roteie pelo type do corpo ou pelo header X-Wabox-Event; os ignore_*_callback continuam valendo:
use_workspace_webhooks (em GET /webhooks) diz se a instância está herdando a configuração do workspace. Definir qualquer URL não nula pela API desliga a herança automaticamente; envie { "use_workspace_webhooks": true } para voltar a herdar. Uma instância que herda assina as entregas com o secret do workspace (painel › Webhooks ou GET /account/webhooks), um só para todas as instâncias. Com configuração própria, vale o secret da instância.
Sem ordem garantida. As entregas saem em paralelo e cada evento tem as próprias tentativas, então um evento que falhou chega depois dos seguintes. Use momment e o estado que você já tem (ex.: não rebaixar um status de mensagem) em vez da ordem de chegada.
Tentativas. Você tem 10 s para responder 2xx. Qualquer outra resposta (incluindo um 502 do seu túnel ou proxy) ou o timeout contam como falha, e o Wabox tenta de novo após 10 s, 1 min, 10 min, 1 h e 6 h. Depois disso o evento é descartado e fica registrado como falha nos Logs de webhook do painel.
Pelo menos uma vez. Uma entrega pode repetir (por exemplo, você respondeu 200 depois dos 10 s, ou o seu proxy desistiu mas o backend processou). O event_id (também no header X-Wabox-Event-Id) é o mesmo em todas as tentativas. Guarde-o e ignore repetidos.
Sem conteúdo em repouso. O Wabox não guarda as mensagens que trafegam; se todas as tentativas falharem, a mensagem não é recuperável pela API (o histórico recente cobre só o que o celular enviou ao parear). Mantenha o endpoint disponível.
Responda antes de processar. Se o seu handler demora (chama outra API, grava em banco lento), coloque o evento em uma fila interna e devolva 200 na hora. Um endpoint lento vira reenvios, que viram duplicidade.
Verifique X-Wabox-Signature em toda entrega. Ela prova que a requisição veio do Wabox e não de alguém que descobriu a sua URL. O passo a passo com código está em Assinatura dos webhooks. O segredo é o da instância ou, se ela herda os webhooks do workspace, o do workspace.
Sem servidor público: use um túnel (ngrok, Cloudflare Tunnel) apontando para a sua máquina.
Para ver o payload cru: qualquer serviço de “request bin”.
No painel, Logs de webhook mostra cada tentativa com status HTTP, tempo de resposta e o corpo enviado, e permite reenviar manualmente.
A aba Testes da instância dispara mensagens reais para um número seu e acompanha delivery e message_status. Veja Diagnóstico.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Wabox","description":"API de WhatsApp para o seu sistema: instâncias, envio de mensagens e webhooks via REST.","colors":{"primary":"#008942","light":"#25D366","dark":"#008942"},"logo":{"light":"https://mintcdn.com/wabox/JOj0JQ8ScPXFb4Jr/logo/light.svg?fit=max\u0026auto=format\u0026n=JOj0JQ8ScPXFb4Jr\u0026q=85\u0026s=dd2497384265f72c3092896c854dcda7","dark":"https://mintcdn.com/wabox/JOj0JQ8ScPXFb4Jr/logo/dark.svg?fit=max\u0026auto=format\u0026n=JOj0JQ8ScPXFb4Jr\u0026q=85\u0026s=7560338ea53e36182290568cb35cff25","href":"https://wabox.me"},"favicon":"https://mintcdn.com/wabox/JOj0JQ8ScPXFb4Jr/favicon.svg?fit=max\u0026auto=format\u0026n=JOj0JQ8ScPXFb4Jr\u0026q=85\u0026s=ee7c5c9a39e5c5bd3630d83e94394c2a","api":{"params":{"expanded":"closed"},"playground":{"display":"interactive","proxy":false},"examples":{"defaults":"required","languages":["curl","javascript","python","php","go"]}},"appearance":{"default":"system"},"navbar":{"links":[{"href":"https://app.wabox.me/login","label":"Entrar"}],"primary":{"type":"button","label":"Criar conta grátis","href":"https://app.wabox.me/signup"}},"footer":{"socials":{"website":"https://wabox.me","github":"https://github.com/wabox"}},"search":{"prompt":"Buscar na documentação…"},"seo":{"indexing":"navigable"},"fonts":{"heading":{"family":"Bricolage Grotesque"},"body":{"family":"Inter"}},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","codeblocks":"system","latex":false},"errors":{"404":{"redirect":true}},"contextual":{"options":["copy","view","chatgpt","claude","cursor","vscode"],"display":"header"},"markdown":{"schema":true,"instructions":["Wabox é uma API não-oficial de WhatsApp (aparelho vinculado). Tudo é snake_case; a base é https://api.wabox.me/instances/{instance_id}/token/{token}.","Envios respondem { id, message_id, wabox_id, status: \"queued\" } na hora; o resultado real chega no webhook delivery. Envios não são idempotentes: confira GET /queue antes de repetir.","Sempre verifique X-Wabox-Signature (HMAC-SHA256 de \"\u003ct>.\u003ccorpo cru>\") nos webhooks e deduplique por event_id.","Botões, listas, carrossel e catálogo são best effort e não renderizam no WhatsApp Web/Desktop. Não existem: chamadas, listas de transmissão, histórico de mensagens, instância mobile.","Não invente endpoints ou campos: use o OpenAPI em https://api.wabox.me/openapi.json."]},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"wabox","hasAudioNarration":false,"actualSubdomain":"wabox","customDomains":["developer.wabox.me"],"gitSource":{"type":"github","owner":"naldeia","repo":"wabox","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae517933b9dba255a03fd4a","collectionId":"643a71fd-1f5f-4174-b899-ef4663d2b644","liveDeploymentHistoryId":"6ae517933b9dba255a03fd4a","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ae517933b9dba255a03fd4a","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"API Reference","count":277},{"language":"default","tag":"Endpoints","count":132},{"language":"default","tag":"Mensagens","count":42},{"language":"default","tag":"Documentação","count":38},{"language":"default","tag":"Instância","count":30},{"language":"default","tag":"Business e catálogo","count":26},{"language":"default","tag":"Interativos","count":24},{"language":"default","tag":"Grupos","count":22},{"language":"default","tag":"Canais","count":22},{"language":"default","tag":"Conta","count":21}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"webhooks/overview","slug":"/webhooks/overview","pageMetadata":{"title":"Visão geral dos webhooks","description":"Como o Wabox entrega eventos, o que vem em cada requisição e as garantias de entrega.","sidebarTitle":"Visão geral","icon":"webhook","href":"/webhooks/overview"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Como o Wabox entrega eventos, o que vem em cada requisição e as garantias de entrega.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Webhooks são a única forma de receber alguma coisa do WhatsApp: mensagens, recibos, mudanças de conexão. O Wabox faz um `,_jsx(_components.code,{children:`POST`}),` HTTPS com JSON para a URL que você configurar, uma URL por tipo de evento.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Tipo`}),_jsx(_components.th,{children:`O que avisa`}),_jsx(_components.th,{children:`Página`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`received`})}),_jsx(_components.td,{children:`Chegou uma mensagem (qualquer tipo) ou um evento de chat`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/webhooks/received`,children:`received`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`delivery`})}),_jsx(_components.td,{children:`Resultado de um envio feito pela API`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/webhooks/delivery`,children:`delivery`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`message_status`})}),_jsx(_components.td,{children:`Recibo de mensagem sua: enviada, entregue, lida, reproduzida`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/webhooks/message-status`,children:`message_status`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`instance_status`})}),_jsx(_components.td,{children:`O status da instância mudou: aguardando QR code, conectou, caiu, foi deslogada ou banida`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/webhooks/instance-status`,children:`instance_status`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`chat_presence`})}),_jsx(_components.td,{children:`Contato digitando, gravando, online`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/webhooks/chat-presence`,children:`chat_presence`})})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`configuração`,children:`Configuração`}),`\n`,_jsxs(_components.p,{children:[`No painel há dois lugares: `,_jsx(_components.strong,{children:`Webhooks`}),` (menu lateral) define URLs e filtros para todas as instâncias do workspace, e a aba `,_jsx(_components.strong,{children:`Webhooks e configurações gerais`}),` de cada instância permite sobrescrever só ali (desligue “Usar webhooks do workspace”). Instâncias novas herdam do workspace por padrão, e um workspace novo já começa no modo `,_jsx(_components.strong,{children:`Uma única URL para todos os eventos`}),` (basta preencher a URL). Pela API, a configuração é sempre por instância:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` PUT`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.wabox.me/instances/{instance_id}/token/{token}/webhooks`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"received_url\": \"https://seu-servidor.com/wabox\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"delivery_url\": \"https://seu-servidor.com/wabox\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"message_status_url\": \"https://seu-servidor.com/wabox\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"instance_status_url\": \"https://seu-servidor.com/wabox\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"chat_presence_url\": null`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Pode ser a mesma URL para tudo ou uma por tipo. `,_jsx(_components.code,{children:`null`}),` desliga o tipo. `,_jsx(_components.code,{children:`PUT /webhooks/{type}`}),` com `,_jsx(_components.code,{children:`{ \"value\": \"https://...\" }`}),` altera um só. Os `,_jsx(_components.a,{href:`/webhooks/filters`,children:`filtros`}),` decidem quais mensagens chegam.`]}),`\n`,_jsxs(_components.p,{children:[`Para não repetir a URL em cada tipo, use o modo de URL única. Todos os eventos vão para `,_jsx(_components.code,{children:`single_url`}),` e as `,_jsx(_components.code,{children:`*_url`}),` por tipo são ignoradas. Roteie pelo `,_jsx(_components.code,{children:`type`}),` do corpo ou pelo header `,_jsx(_components.code,{children:`X-Wabox-Event`}),`; os `,_jsx(_components.code,{children:`ignore_*_callback`}),` continuam valendo:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` PUT`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.wabox.me/instances/{instance_id}/token/{token}/webhooks`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{ \"single_url_enabled\": true, \"single_url\": \"https://seu-servidor.com/wabox\" }'`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`use_workspace_webhooks`}),` (em `,_jsx(_components.code,{children:`GET /webhooks`}),`) diz se a instância está herdando a configuração do workspace. Definir qualquer URL não nula pela API desliga a herança automaticamente; envie `,_jsx(_components.code,{children:`{ \"use_workspace_webhooks\": true }`}),` para voltar a herdar. Uma instância que herda assina as entregas com o `,_jsx(_components.code,{children:`secret`}),` do workspace (painel › Webhooks ou `,_jsx(_components.code,{children:`GET /account/webhooks`}),`), um só para todas as instâncias. Com configuração própria, vale o `,_jsx(_components.code,{children:`secret`}),` da instância.`]}),`\n`,_jsx(Heading,{level:`2`,id:`anatomia-de-uma-entrega`,children:`Anatomia de uma entrega`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`http`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`POST`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` /wabox `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`HTTP`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1.1`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Host`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` seu-servidor.com`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`Content-Type`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` application/json`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`User-Agent`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Wabox-Webhook/1.0`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`X-Wabox-Event`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` received`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`X-Wabox-Event-Id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 01J5Q8ZK3M4N5P6Q7R8S9T0V1X`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`X-Wabox-Instance-Id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 8f2a3c1e-6b7d-4e5f-9a0b-1c2d3e4f5a6b`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`X-Wabox-Signature`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` t=1786968300,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"received\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"event_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"01J5Q8ZK3M4N5P6Q7R8S9T0V1X\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"instance_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"8f2a3c1e-...\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"momment\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1786968300000`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#82071E`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F44747`,\"--shiki-dark-font-style\":`inherit`},children:`...`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Todo payload tem quatro campos em comum:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Campo`}),_jsx(_components.th,{children:`Tipo`}),_jsx(_components.th,{children:`Descrição`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`type`})}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[`Tipo do evento (o mesmo do header `,_jsx(_components.code,{children:`X-Wabox-Event`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`event_id`})}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`ULID único do evento. Chave de idempotência`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`instance_id`})}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`Instância que gerou o evento`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`momment`})}),_jsx(_components.td,{children:`number`}),_jsx(_components.td,{children:`Epoch em milissegundos. O nome (com dois “m”) é herdado da z-api para facilitar migração`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`garantias-de-entrega`,children:`Garantias de entrega`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Sem ordem garantida.`}),` As entregas saem em paralelo e cada evento tem as próprias tentativas, então um evento que falhou chega depois dos seguintes. Use `,_jsx(_components.code,{children:`momment`}),` e o estado que você já tem (ex.: não rebaixar um status de mensagem) em vez da ordem de chegada.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Tentativas.`}),` Você tem 10 s para responder 2xx. Qualquer outra resposta (incluindo um `,_jsx(_components.code,{children:`502`}),` do seu túnel ou proxy) ou o timeout contam como falha, e o Wabox tenta de novo após 10 s, 1 min, 10 min, 1 h e 6 h. Depois disso o evento é descartado e fica registrado como falha nos `,_jsx(_components.strong,{children:`Logs de webhook`}),` do painel.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Pelo menos uma vez.`}),` Uma entrega pode repetir (por exemplo, você respondeu 200 depois dos 10 s, ou o seu proxy desistiu mas o backend processou). O `,_jsx(_components.code,{children:`event_id`}),` (também no header `,_jsx(_components.code,{children:`X-Wabox-Event-Id`}),`) é o mesmo em todas as tentativas. Guarde-o e ignore repetidos.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Sem conteúdo em repouso.`}),` O Wabox não guarda as mensagens que trafegam; se todas as tentativas falharem, a mensagem não é recuperável pela API (o `,_jsx(_components.a,{href:`/api-reference/chats/chats-phone-messages`,children:`histórico recente`}),` cobre só o que o celular enviou ao parear). Mantenha o endpoint disponível.`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Responda antes de processar. Se o seu handler demora (chama outra API, grava em banco lento), coloque o evento em uma fila interna e devolva 200 na hora. Um endpoint lento vira reenvios, que viram duplicidade.`})}),`\n`,_jsx(Heading,{level:`2`,id:`segurança`,children:`Segurança`}),`\n`,_jsxs(_components.p,{children:[`Verifique `,_jsx(_components.code,{children:`X-Wabox-Signature`}),` em toda entrega. Ela prova que a requisição veio do Wabox e não de alguém que descobriu a sua URL. O passo a passo com código está em `,_jsx(_components.a,{href:`/security/webhook-signature`,children:`Assinatura dos webhooks`}),`. O segredo é o da instância ou, se ela herda os webhooks do workspace, o do workspace.`]}),`\n`,_jsx(Heading,{level:`2`,id:`testando`,children:`Testando`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Sem servidor público: use um túnel (ngrok, Cloudflare Tunnel) apontando para a sua máquina.`}),`\n`,_jsx(_components.li,{children:`Para ver o payload cru: qualquer serviço de “request bin”.`}),`\n`,_jsxs(_components.li,{children:[`No painel, `,_jsx(_components.strong,{children:`Logs de webhook`}),` mostra cada tentativa com status HTTP, tempo de resposta e o corpo enviado, e permite reenviar manualmente.`]}),`\n`,_jsxs(_components.li,{children:[`A aba `,_jsx(_components.strong,{children:`Testes`}),` da instância dispara mensagens reais para um número seu e acompanha `,_jsx(_components.code,{children:`delivery`}),` e `,_jsx(_components.code,{children:`message_status`}),`. Veja `,_jsx(_components.a,{href:`/guides/diagnostics`,children:`Diagnóstico`}),`.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Visão geral dos webhooks","description":"Como o Wabox entrega eventos, o que vem em cada requisição e as garantias de entrega.","sidebarTitle":"Visão geral","icon":"webhook","href":"/webhooks/overview"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Configuração","slug":"configuração","depth":2,"children":[]},{"title":"Anatomia de uma entrega","slug":"anatomia-de-uma-entrega","depth":2,"children":[]},{"title":"Garantias de entrega","slug":"garantias-de-entrega","depth":2,"children":[]},{"title":"Segurança","slug":"segurança","depth":2,"children":[]},{"title":"Testando","slug":"testando","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"wabox","siteName":"Wabox","title":"Visão geral dos webhooks - Wabox","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-07T18:51:58.350Z","originalFileLocation":"webhooks/overview.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Como o Wabox entrega eventos, o que vem em cada requisição e as garantias de entrega.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Wabox\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/wabox/FrGj2wYTqmVg9_Yr/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/wabox/FrGj2wYTqmVg9_Yr/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/wabox/FrGj2wYTqmVg9_Yr/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/wabox/FrGj2wYTqmVg9_Yr/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/wabox/FrGj2wYTqmVg9_Yr/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/wabox/FrGj2wYTqmVg9_Yr/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/wabox/FrGj2wYTqmVg9_Yr/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/wabox/FrGj2wYTqmVg9_Yr/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/wabox/FrGj2wYTqmVg9_Yr/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Visão geral dos webhooks - Wabox\">\u003cmeta data-mint-head property=\"og:description\" content=\"Como o Wabox entrega eventos, o que vem em cada requisição e as garantias de entrega.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Wabox\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.wabox.me/webhooks/overview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://wabox.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Vis%C3%A3o+geral+dos+webhooks\u0026amp;description=Como+o+Wabox+entrega+eventos%2C+o+que+vem+em+cada+requisi%C3%A7%C3%A3o+e+as+garantias+de+entrega.\u0026amp;theme=bf7bbdcb4ca3b322327582a5\u0026amp;signature=4ee132a461f8d0f2a4a43f642e3fbff303ba30eb58532affe49b302f6e9dbb24\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Visão geral dos webhooks - Wabox\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Como o Wabox entrega eventos, o que vem em cada requisição e as garantias de entrega.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://wabox.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Vis%C3%A3o+geral+dos+webhooks\u0026amp;description=Como+o+Wabox+entrega+eventos%2C+o+que+vem+em+cada+requisi%C3%A7%C3%A3o+e+as+garantias+de+entrega.\u0026amp;theme=bf7bbdcb4ca3b322327582a5\u0026amp;signature=4ee132a461f8d0f2a4a43f642e3fbff303ba30eb58532affe49b302f6e9dbb24\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/wabox/FrGj2wYTqmVg9_Yr/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Wabox\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#008942\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.wabox.me/webhooks/overview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/webhooks/overview.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.wabox.me/#organization\",\"name\":\"Wabox\",\"url\":\"https://developer.wabox.me\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/wabox/JOj0JQ8ScPXFb4Jr/logo/light.svg?fit=max\u0026auto=format\u0026n=JOj0JQ8ScPXFb4Jr\u0026q=85\u0026s=dd2497384265f72c3092896c854dcda7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.wabox.me#website\",\"name\":\"Wabox\",\"url\":\"https://developer.wabox.me\",\"publisher\":{\"@id\":\"https://developer.wabox.me/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.wabox.me/webhooks/overview#webpage\",\"url\":\"https://developer.wabox.me/webhooks/overview\",\"name\":\"Visão geral dos webhooks\",\"description\":\"Como o Wabox entrega eventos, o que vem em cada requisição e as garantias de entrega.\",\"dateModified\":\"2026-10-07T18:51:58.350Z\",\"isPartOf\":{\"@id\":\"https://developer.wabox.me#website\"},\"breadcrumb\":{\"@id\":\"https://developer.wabox.me/webhooks/overview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.wabox.me/webhooks/overview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Wabox\",\"item\":\"https://developer.wabox.me\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Visão geral dos webhooks\",\"item\":\"https://developer.wabox.me/webhooks/overview\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developer.wabox.me/webhooks/overview#article\",\"headline\":\"Visão geral dos webhooks\",\"name\":\"Visão geral dos webhooks\",\"description\":\"Como o Wabox entrega eventos, o que vem em cada requisição e as garantias de entrega.\",\"url\":\"https://developer.wabox.me/webhooks/overview\",\"mainEntityOfPage\":{\"@id\":\"https://developer.wabox.me/webhooks/overview#webpage\"},\"dateModified\":\"2026-10-07T18:51:58.350Z\",\"publisher\":{\"@id\":\"https://developer.wabox.me/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.wabox.me#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Wabox\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Wabox","nav":{"global":null,"tabs":[{"tab":"Documentação","groups":[{"group":"Começar","pages":[{"title":"Introdução","icon":"book-open","href":"/introduction"},{"title":"Primeiros passos","icon":"rocket","href":"/quickstart"},{"title":"Conceitos","icon":"lightbulb","href":"/concepts"},{"title":"Construir com IA","icon":"sparkles","href":"/build-with-ai"}]},{"group":"Autenticação e segurança","pages":[{"title":"Autenticação","icon":"key-round","href":"/security/authentication"},{"title":"API keys","icon":"key","href":"/security/api-keys"},{"title":"Allowlist de IPs","icon":"network","href":"/security/ip-allowlist"},{"title":"Assinatura dos webhooks","icon":"shield-check","href":"/security/webhook-signature"},{"title":"Rotação de token e segredo","description":"O que fazer quando um token da instância, uma API key ou o segredo do webhook vaza.","icon":"refresh-cw","href":"/security/credential-rotation"}]},{"group":"Webhooks","pages":[{"title":"Visão geral dos webhooks","sidebarTitle":"Visão geral","icon":"webhook","href":"/webhooks/overview"},{"title":"Webhook received","description":"Toda mensagem que chega ao número, com o conteúdo em um bloco por tipo.","sidebarTitle":"received","icon":"message-square","href":"/webhooks/received"},{"title":"Webhook delivery","sidebarTitle":"delivery","icon":"send","href":"/webhooks/delivery"},{"title":"Webhook message_status","sidebarTitle":"message_status","icon":"check-check","href":"/webhooks/message-status"},{"title":"Webhook instance_status","sidebarTitle":"instance_status","icon":"plug-zap","href":"/webhooks/instance-status"},{"title":"Webhook chat_presence","sidebarTitle":"chat_presence","icon":"pencil-line","href":"/webhooks/chat-presence"},{"title":"Filtros de webhook","icon":"filter","href":"/webhooks/filters"}]},{"group":"Guias","pages":[{"title":"Boas práticas e anti-ban","icon":"shield-alert","href":"/guides/best-practices"},{"title":"Wabox × API oficial do WhatsApp","icon":"scale","href":"/guides/official-api"},{"title":"Tipos de mensagem","icon":"message-square-text","href":"/guides/message-types"},{"title":"O que renderiza onde","icon":"smartphone","href":"/guides/rendering-support"},{"title":"Mídia","icon":"image","href":"/guides/media"},{"title":"Fila e reenvio","icon":"list-ordered","href":"/guides/queue-and-retries"},{"title":"Rate limit e tratamento de erros","icon":"activity","href":"/guides/rate-limits-and-errors"},{"title":"Identificadores: phone, LID, grupos e canais","icon":"fingerprint","href":"/guides/identifiers"},{"title":"Diagnóstico pela aba Testes","icon":"flask-conical","href":"/guides/diagnostics"}]},{"group":"Migrando do z-api","pages":[{"title":"Migrando do z-api","icon":"arrow-right-left","href":"/migration/z-api"},{"title":"Tabela de rotas z-api → Wabox","icon":"arrow-right-left","href":"/migration/route-mapping"}]},{"group":"Integrações","pages":[{"title":"SDK TypeScript","icon":"code-xml","href":"/integrations/sdk-typescript"},{"title":"Claude, ChatGPT e outros apps de IA (MCP)","icon":"bot","href":"/integrations/mcp"},{"title":"n8n","icon":"workflow","href":"/integrations/n8n"},{"title":"Make","icon":"puzzle","href":"/integrations/make"},{"title":"Zapier","icon":"zap","href":"/integrations/zapier"},{"title":"Typebot","icon":"bot","href":"/integrations/typebot"},{"title":"Integração HTTP genérica","icon":"globe","href":"/integrations/http"}]},{"group":"Conta","pages":[{"title":"Account API","icon":"layers","href":"/account/api"}]},{"group":"Referências","pages":[{"title":"Limitações conhecidas","icon":"circle-alert","href":"/resources/limitations"},{"title":"Postman, Insomnia e clientes gerados","icon":"package","href":"/resources/postman"},{"title":"Changelog","icon":"history","href":"/resources/changelog"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"basePath":"","title":"Visão geral dos webhooks - Wabox","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}