Como a fila de saída funciona, o que acontece quando a instância cai e como inspecionar ou limpar mensagens pendentes.
Cada instância tem uma fila de saída. Todo POST /send-* (e reações, encaminhamentos, enquetes, fixar, apagar) entra nela e sai na ordem, respeitando o intervalo anti-ban.
POST /send-text ──► fila (status "queued") ──► intervalo 1–3 s ──► aparelho envia ──► webhook delivery └─► message_status SENT → RECEIVED → READ
A resposta é imediata, com wabox_id (id na fila) e message_id (id no WhatsApp, já definitivo).
O intervalo é aleatório entre delay_message_min_ms e delay_message_max_ms (padrão 1.000 a 3.000 ms) e conta do fim da mensagem anterior. delay_message na chamada substitui esse intervalo para aquela mensagem, e delay_typing acrescenta “digitando…” antes.
A fila envia uma mídia por vez por instância, e textos não esperam mídia.
Por padrão, a fila aceita e segura as mensagens. Ao reconectar (connected), elas saem na ordem, com o intervalo normal, e nada é disparado de uma vez.Se preferir falhar rápido, ligue disable_enqueue_when_disconnected em PUT /settings: os envios passam a responder 409 queue_disabled_while_disconnected enquanto o número estiver fora.
Uma mensagem que espera mais que queue_max_age_hours (padrão 12 h, de 1 a 168) sai da fila sem ser enviada, e você recebe um delivery com error_code: "queue_expired", mesmo com a instância ainda desconectada. Ao reconectar, o Wabox envia só o que ainda está dentro da validade.
Você também ajusta isso no painel, em Webhooks e configurações › Geral.
Mensagens presas na fila por muito tempo podem ficar obsoletas (“seu código expira em 5 minutos”). Para conteúdo sensível a tempo, use uma validade curta (queue_max_age_hours: 1), consulte GET /status antes de enviar ou ligue disable_enqueue_when_disconnected e trate o 409.
# O que está esperandocurl https://api.wabox.me/instances/{instance_id}/token/{token}/queue?page=1&page_size=50# Remover uma mensagem específicacurl -X DELETE https://api.wabox.me/instances/{instance_id}/token/{token}/queue/wbx_01J5Q8ZK3M4N5P6Q7R8S9T0M01# Esvaziar a filacurl -X DELETE https://api.wabox.me/instances/{instance_id}/token/{token}/queue
GET /queue lista wabox_id, message_id, phone, type e o conteúdo, paginado. Mensagens já enviadas não aparecem, porque o Wabox não guarda o que já saiu. O histórico recente vem só do pareamento.
A fila comporta 1.000 mensagens por instância. Acima disso, POST /send-* responde 429 queue_full. Com o intervalo padrão, 1.000 mensagens levam cerca de 30 a 50 minutos para sair. Se você bate nesse teto, distribua os envios entre várias instâncias.
O Wabox tenta enviar cada mensagem enquanto o aparelho estiver conectado. Falhas definitivas (phone_not_on_whatsapp, media_invalid, message_not_found, not_allowed) viram delivery com error_code, e a mensagem sai da fila.
send_timeout significa que o aparelho não confirmou a tempo. A mensagem pode ter saído. Não reenvie às cegas: espere o message_status ou confira com o contato.
queue_expired significa que a mensagem passou de queue_max_age_hours esperando na fila e foi descartada sem envio. Reenviar é seguro (nada saiu).
Falhas transitórias entre a fila e o aparelho (engine reiniciando, instância caindo bem na hora) não viram delivery. A mensagem volta para a fila e o Wabox tenta de novo automaticamente (30 s, 1 min, 2 min… até 10 min entre tentativas, ou no próximo connected). Uma rotina a cada minuto recupera mensagens que ficaram presas “enviando” sem resposta (até 3 tentativas, depois delivery com send_failed).
Falhas definitivas não têm reenvio automático. Se você precisa garantir a entrega, implemente isso no seu lado: registre o wabox_id, espere o delivery e reenvie só as falhas que façam sentido repetir.
reply_to_message_id, forward-message, edit_message_id, send-poll-vote e send-event-response precisam do conteúdo da mensagem original, que o WhatsApp não fornece sob demanda. O engine mantém um cache em memória (as últimas ~4.000 mensagens por instância, recebidas ou enviadas desde o último restart). Fora do cache, o resultado é delivery com message_not_found.Responder ou encaminhar mensagens recentes funciona. Mensagens de dias atrás ou anteriores a um restart do engine falham com message_not_found. Se a citação for opcional para você, trate esse erro reenviando sem reply_to_message_id.
Cada instância tem a sua fila. Se várias instâncias enviam para o mesmo contato, não há ordenação entre elas.
{"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":"guides/queue-and-retries","slug":"/guides/queue-and-retries","pageMetadata":{"title":"Fila e reenvio","description":"Como a fila de saída funciona, o que acontece quando a instância cai e como inspecionar ou limpar mensagens pendentes.","icon":"list-ordered","href":"/guides/queue-and-retries"},"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 a fila de saída funciona, o que acontece quando a instância cai e como inspecionar ou limpar mensagens pendentes.\"\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`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Cada instância tem uma fila de saída. Todo `,_jsx(_components.code,{children:`POST /send-*`}),` (e reações, encaminhamentos, enquetes, fixar, apagar) entra nela e sai na ordem, respeitando o intervalo anti-ban.`]}),`\n`,_jsx(Heading,{level:`2`,id:`ciclo-de-uma-mensagem`,children:`Ciclo de uma mensagem`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`text`,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:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`POST /send-text ──► fila (status \"queued\") ──► intervalo 1–3 s ──► aparelho envia ──► webhook delivery`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` └─► message_status SENT → RECEIVED → READ`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A resposta é imediata, com `,_jsx(_components.code,{children:`wabox_id`}),` (id na fila) e `,_jsx(_components.code,{children:`message_id`}),` (id no WhatsApp, já definitivo).`]}),`\n`,_jsxs(_components.li,{children:[`O intervalo é aleatório entre `,_jsx(_components.code,{children:`delay_message_min_ms`}),` e `,_jsx(_components.code,{children:`delay_message_max_ms`}),` (padrão 1.000 a 3.000 ms) e conta do fim da mensagem anterior. `,_jsx(_components.code,{children:`delay_message`}),` na chamada substitui esse intervalo para aquela mensagem, e `,_jsx(_components.code,{children:`delay_typing`}),` acrescenta “digitando…” antes.`]}),`\n`,_jsx(_components.li,{children:`A fila envia uma mídia por vez por instância, e textos não esperam mídia.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`quando-a-instância-está-desconectada`,children:`Quando a instância está desconectada`}),`\n`,_jsxs(_components.p,{children:[`Por padrão, a fila aceita e segura as mensagens. Ao reconectar (`,_jsx(_components.code,{children:`connected`}),`), elas saem na ordem, com o intervalo normal, e nada é disparado de uma vez.`]}),`\n`,_jsxs(_components.p,{children:[`Se preferir falhar rápido, ligue `,_jsx(_components.code,{children:`disable_enqueue_when_disconnected`}),` em `,_jsx(_components.code,{children:`PUT /settings`}),`: os envios passam a responder `,_jsx(_components.code,{children:`409 queue_disabled_while_disconnected`}),` enquanto o número estiver fora.`]}),`\n`,_jsx(Heading,{level:`3`,id:`validade-das-mensagens-na-fila`,children:`Validade das mensagens na fila`}),`\n`,_jsxs(_components.p,{children:[`Uma mensagem que espera mais que `,_jsx(_components.code,{children:`queue_max_age_hours`}),` (padrão 12 h, de 1 a 168) sai da fila sem ser enviada, e você recebe um `,_jsx(_components.code,{children:`delivery`}),` com `,_jsx(_components.code,{children:`error_code: \"queue_expired\"`}),`, mesmo com a instância ainda desconectada. Ao reconectar, o Wabox envia só o que ainda está dentro da validade.`]}),`\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}/settings`}),_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:` '{ \"queue_max_age_hours\": 2 }'`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Você também ajusta isso no painel, em `,_jsx(_components.strong,{children:`Webhooks e configurações › Geral`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Mensagens presas na fila por muito tempo podem ficar obsoletas (“seu código expira em 5 minutos”). Para conteúdo sensível a tempo, use uma validade curta (`,_jsx(_components.code,{children:`queue_max_age_hours: 1`}),`), consulte `,_jsx(_components.code,{children:`GET /status`}),` antes de enviar ou ligue `,_jsx(_components.code,{children:`disable_enqueue_when_disconnected`}),` e trate o 409.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`inspecionar-e-limpar`,children:`Inspecionar e limpar`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,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:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# O que está esperando`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.wabox.me/instances/{instance_id}/token/{token}/queue?page=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`page_size`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`50`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Remover uma mensagem específica`})}),`\n`,_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:` DELETE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.wabox.me/instances/{instance_id}/token/{token}/queue/wbx_01J5Q8ZK3M4N5P6Q7R8S9T0M01`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Esvaziar a fila`})}),`\n`,_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:` DELETE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.wabox.me/instances/{instance_id}/token/{token}/queue`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`GET /queue`}),` lista `,_jsx(_components.code,{children:`wabox_id`}),`, `,_jsx(_components.code,{children:`message_id`}),`, `,_jsx(_components.code,{children:`phone`}),`, `,_jsx(_components.code,{children:`type`}),` e o conteúdo, paginado. Mensagens já enviadas não aparecem, porque o Wabox não guarda o que já saiu. O `,_jsx(_components.a,{href:`/api-reference/chats/chats-phone-messages`,children:`histórico recente`}),` vem só do pareamento.`]}),`\n`,_jsx(Heading,{level:`2`,id:`capacidade`,children:`Capacidade`}),`\n`,_jsxs(_components.p,{children:[`A fila comporta 1.000 mensagens por instância. Acima disso, `,_jsx(_components.code,{children:`POST /send-*`}),` responde `,_jsx(_components.code,{children:`429 queue_full`}),`. Com o intervalo padrão, 1.000 mensagens levam cerca de 30 a 50 minutos para sair. Se você bate nesse teto, distribua os envios entre várias instâncias.`]}),`\n`,_jsx(Heading,{level:`2`,id:`reenvio-e-falhas`,children:`Reenvio e falhas`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`O Wabox tenta enviar cada mensagem enquanto o aparelho estiver conectado. Falhas definitivas (`,_jsx(_components.code,{children:`phone_not_on_whatsapp`}),`, `,_jsx(_components.code,{children:`media_invalid`}),`, `,_jsx(_components.code,{children:`message_not_found`}),`, `,_jsx(_components.code,{children:`not_allowed`}),`) viram `,_jsx(_components.code,{children:`delivery`}),` com `,_jsx(_components.code,{children:`error_code`}),`, e a mensagem sai da fila.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`send_timeout`}),` significa que o aparelho não confirmou a tempo. A mensagem pode ter saído. Não reenvie às cegas: espere o `,_jsx(_components.code,{children:`message_status`}),` ou confira com o contato.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`queue_expired`}),` significa que a mensagem passou de `,_jsx(_components.code,{children:`queue_max_age_hours`}),` esperando na fila e foi descartada sem envio. Reenviar é seguro (nada saiu).`]}),`\n`,_jsxs(_components.li,{children:[`Falhas transitórias entre a fila e o aparelho (engine reiniciando, instância caindo bem na hora) não viram `,_jsx(_components.code,{children:`delivery`}),`. A mensagem volta para a fila e o Wabox tenta de novo automaticamente (30 s, 1 min, 2 min… até 10 min entre tentativas, ou no próximo `,_jsx(_components.code,{children:`connected`}),`). Uma rotina a cada minuto recupera mensagens que ficaram presas “enviando” sem resposta (até 3 tentativas, depois `,_jsx(_components.code,{children:`delivery`}),` com `,_jsx(_components.code,{children:`send_failed`}),`).`]}),`\n`,_jsxs(_components.li,{children:[`Falhas definitivas não têm reenvio automático. Se você precisa garantir a entrega, implemente isso no seu lado: registre o `,_jsx(_components.code,{children:`wabox_id`}),`, espere o `,_jsx(_components.code,{children:`delivery`}),` e reenvie só as falhas que façam sentido repetir.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`mensagens-referenciadas-responder-encaminhar-editar-votar`,children:`Mensagens referenciadas (responder, encaminhar, editar, votar)`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`reply_to_message_id`}),`, `,_jsx(_components.code,{children:`forward-message`}),`, `,_jsx(_components.code,{children:`edit_message_id`}),`, `,_jsx(_components.code,{children:`send-poll-vote`}),` e `,_jsx(_components.code,{children:`send-event-response`}),` precisam do conteúdo da mensagem original, que o WhatsApp não fornece sob demanda. O engine mantém um cache em memória (as últimas ~4.000 mensagens por instância, recebidas ou enviadas desde o último restart). Fora do cache, o resultado é `,_jsx(_components.code,{children:`delivery`}),` com `,_jsx(_components.code,{children:`message_not_found`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Responder ou encaminhar mensagens recentes funciona. Mensagens de dias atrás ou anteriores a um restart do engine falham com `,_jsx(_components.code,{children:`message_not_found`}),`. Se a citação for opcional para você, trate esse erro reenviando sem `,_jsx(_components.code,{children:`reply_to_message_id`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`ordem-entre-instâncias`,children:`Ordem entre instâncias`}),`\n`,_jsx(_components.p,{children:`Cada instância tem a sua fila. Se várias instâncias enviam para o mesmo contato, não há ordenação entre elas.`})]})}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":"Fila e reenvio","description":"Como a fila de saída funciona, o que acontece quando a instância cai e como inspecionar ou limpar mensagens pendentes.","icon":"list-ordered","href":"/guides/queue-and-retries"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Ciclo de uma mensagem","slug":"ciclo-de-uma-mensagem","depth":2,"children":[]},{"title":"Quando a instância está desconectada","slug":"quando-a-instância-está-desconectada","depth":2,"children":[{"title":"Validade das mensagens na fila","slug":"validade-das-mensagens-na-fila","depth":3,"children":[]}]},{"title":"Inspecionar e limpar","slug":"inspecionar-e-limpar","depth":2,"children":[]},{"title":"Capacidade","slug":"capacidade","depth":2,"children":[]},{"title":"Reenvio e falhas","slug":"reenvio-e-falhas","depth":2,"children":[]},{"title":"Mensagens referenciadas (responder, encaminhar, editar, votar)","slug":"mensagens-referenciadas-responder-encaminhar-editar-votar","depth":2,"children":[]},{"title":"Ordem entre instâncias","slug":"ordem-entre-instâncias","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"wabox","siteName":"Wabox","title":"Fila e reenvio - Wabox","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-07T18:51:58.372Z","originalFileLocation":"guides/queue-and-retries.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 a fila de saída funciona, o que acontece quando a instância cai e como inspecionar ou limpar mensagens pendentes.\">\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=\"Fila e reenvio - Wabox\">\u003cmeta data-mint-head property=\"og:description\" content=\"Como a fila de saída funciona, o que acontece quando a instância cai e como inspecionar ou limpar mensagens pendentes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Wabox\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.wabox.me/guides/queue-and-retries\">\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=Guias\u0026amp;title=Fila+e+reenvio\u0026amp;description=Como+a+fila+de+sa%C3%ADda+funciona%2C+o+que+acontece+quando+a+inst%C3%A2ncia+cai+e+como+inspecionar+ou+limpar+mensagens+pendentes.\u0026amp;theme=bf7bbdcb4ca3b322327582a5\u0026amp;signature=a65cab0e24d175760c36125170a15dcc44350be1dcfd2a82ae10a9132f27d990\">\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=\"Fila e reenvio - Wabox\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Como a fila de saída funciona, o que acontece quando a instância cai e como inspecionar ou limpar mensagens pendentes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://wabox.mintlify.app/_mintlify/api/og/v2?division=Guias\u0026amp;title=Fila+e+reenvio\u0026amp;description=Como+a+fila+de+sa%C3%ADda+funciona%2C+o+que+acontece+quando+a+inst%C3%A2ncia+cai+e+como+inspecionar+ou+limpar+mensagens+pendentes.\u0026amp;theme=bf7bbdcb4ca3b322327582a5\u0026amp;signature=a65cab0e24d175760c36125170a15dcc44350be1dcfd2a82ae10a9132f27d990\">\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/guides/queue-and-retries\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/queue-and-retries.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/guides/queue-and-retries#webpage\",\"url\":\"https://developer.wabox.me/guides/queue-and-retries\",\"name\":\"Fila e reenvio\",\"description\":\"Como a fila de saída funciona, o que acontece quando a instância cai e como inspecionar ou limpar mensagens pendentes.\",\"dateModified\":\"2026-10-07T18:51:58.372Z\",\"isPartOf\":{\"@id\":\"https://developer.wabox.me#website\"},\"breadcrumb\":{\"@id\":\"https://developer.wabox.me/guides/queue-and-retries#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.wabox.me/guides/queue-and-retries#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guias\",\"item\":\"https://developer.wabox.me/guides/best-practices\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fila e reenvio\",\"item\":\"https://developer.wabox.me/guides/queue-and-retries\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developer.wabox.me/guides/queue-and-retries#article\",\"headline\":\"Fila e reenvio\",\"name\":\"Fila e reenvio\",\"description\":\"Como a fila de saída funciona, o que acontece quando a instância cai e como inspecionar ou limpar mensagens pendentes.\",\"url\":\"https://developer.wabox.me/guides/queue-and-retries\",\"mainEntityOfPage\":{\"@id\":\"https://developer.wabox.me/guides/queue-and-retries#webpage\"},\"dateModified\":\"2026-10-07T18:51:58.372Z\",\"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","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","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","description":"URL ou base64, limites, formatos, conversões automáticas e a expiração das mídias recebidas.","icon":"image","href":"/guides/media"},{"title":"Fila e reenvio","icon":"list-ordered","href":"/guides/queue-and-retries"},{"title":"Rate limit e tratamento de erros","description":"Como dimensionar o cliente HTTP, quando repetir uma chamada e quando não.","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":"Fila e reenvio - Wabox","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}