Os formulários que os clientes enviaram para UM Flow, os mais novos primeiro. O Flow é resolvido primeiro dentro da WABA da própria chave, e essa resolução é a única coisa que escopa o resto — um Flow de outra WABA (inclusive outra WABA do mesmo tenant) responde 404 e nenhuma resposta chega a ser lida.
Respostas fora da janela de retenção são excluídas AQUI, não só pela tarefa de poda, para que ninguém leia um envio que a janela publicada diz ter sumido. contactPhone vem null quando o telefone já não é nosso para publicar. externalMessageId é o wamid da Meta e é NOMEADO como id de provedor de propósito — todo outro id desta superfície é local.
notice: "FLOW_RESPONSES_WINDOW_TRUNCATED" aparece na página quando o Flow cunhou mais envios do que uma requisição correlaciona (teto de 10.000 sessões). Uma resposta curta que não diz que é curta é o que faz o cliente concluir que perdeu envios. Permissão flows:read.
Exige chave com escopo de número. Uma chave de tenant precisa nomear o número no header x-whatsapp-number-id, senão recebe 403 TENANT_SCOPE_NOT_ALLOWED.
media[] leva os arquivos que a pessoa ANEXOU dentro do formulário (PhotoPicker / DocumentPicker). Eles NÃO estão em response: um picker exige data_exchange, portanto as referências chegam no pedido que o nosso endpoint decifra — uma troca HTTP diferente do nfm_reply que produziu a linha — e este array é a cópia re-hospedada, ligada pelo flowToken. É o único lugar onde um chamador alcança os bytes: a Meta apaga o original após 20 dias. É SEMPRE um array, [] quando nada foi anexado. url é um link estável nosso e está presente assim que a linha existe, INCLUSIVE enquanto status for "PENDING". Buscá-lo antes de a re-hospedagem terminar não dá 404: a rota segura o pedido enquanto espera pelo arquivo e então o serve, toda busca posterior é um redirect, e uma espera que estoura responde 404 com o cabeçalho Retry-After. O valor não muda depois de os bytes chegarem, portanto é seguro guardá-lo logo na chegada, e o status (PENDING/STORED/FAILED) continua sendo como o chamador sabe se eles chegaram. É a ordem que justifica esse link: o evento é emitido assim que o envio é guardado e a re-hospedagem roda depois dele, portanto o anúncio precede normalmente os bytes. url só é nulo quando a instalação não tem segredo de assinatura configurado (aí volta ao comportamento antigo, a URL direta do objeto assim que ficar STORED), quando a Meta não enviou media_id para assinar uma identidade em cima, ou num número RELAY_ONLY onde nada foi guardado — nunca apenas porque a transferência ainda não terminou. Trate-o como opaco: busque, nunca construa um. mimeType é farejado dos bytes decifrados e nunca do nome do arquivo, e ele e sizeBytes são null até o arquivo ficar guardado. Nem cdn_url nem material de cifra são alguma vez publicados.
submitted[] é o que a pessoa de fato ESCREVEU, tela a tela. ⛔ Num Flow data_exchange é o ÚNICO lugar onde essas respostas existem: ali o response é o nfm_reply da Meta, um envelope que leva o flow_token e mais nada — quem abre o response num Flow desses encontra uma sala vazia e conclui que o envio se perdeu. Num Flow SIMPLES, sem endpoint, as respostas CHEGAM no response e o submitted vem [].
Cada entrada é um pedido data_exchange que a META NOS ENVIOU: screen (a tela em que a pessoa estava, ou null), at (ISO 8601), data (o objeto já parseado) e omitted. Nunca é o que o SEU endpoint respondeu — o extension_message_response não é publicado em lugar nenhum do Pilot Status. E só as trocas data_exchange são capturadas: o INIT devolve o estado que NÓS semeamos quando o Flow foi enviado, e o BACK é navegação, portanto esta lista é legitimamente MAIS CURTA do que o tráfego que o seu próprio endpoint viu. Essa diferença não é perda.
NESTE endpoint o submitted é sempre um array e nunca null — [] tanto quando não há nada como quando o número não guarda conteúdo de cliente, porque “nada foi capturado” e “não conseguimos olhar” seriam senão o mesmo valor. (No webhook flow.response_received é o contrário, null e nunca [], porque lá o redator só apaga um campo que tenha algo dentro.) Nada é truncado em silêncio: ou a entrada leva data com omitted: null, ou leva data: null e diz o PORQUÊ. DATA_TOO_LARGE é uma troca grande demais, que mantém a linha e o lugar dela na sequência — o teto que ela passou conta-se em BYTES, não em caracteres, portanto texto com acentos chega lá antes do que o comprimento sugere. LIMIT_REACHED é o teto de 50 trocas por formulário: uma entrada final de marcação, e nada depois dela ficou guardado. UNREADABLE é uma troca que ficou guardada mas cujo conteúdo não se conseguiu reler. Não há terceira forma.
A lista só cresce e nunca é de-duplicada: quem volta atrás numa tela e responde de novo produz uma segunda entrada GENUÍNA, e é o at que distingue duas passagens debaixo do mesmo flowToken. As trocas ficam 30 dias + 1 — um dia a MAIS do que a linha da resposta — porque a troca é capturada enquanto a pessoa ainda está preenchendo, minutos ANTES do envio que cria a linha; com uma janela igual elas expirariam primeiro, e uma resposta ainda dentro da retenção dela publicaria submitted: [] nos seus últimos minutos. Num número com piiMode: "RELAY_ONLY" não fica aqui nada: nem uma entrada ocultada, nenhuma entrada.
GET
/
v1
/
flows
/
{id}
/
responses
Listar respostas do Flow
curl --request GET \ --url https://pilotstatus.com.br/v1/flows/{id}/responses \ --header 'x-api-key: <api-key>'
{
"error": "Paginação profunda demais: page × pageSize não pode passar de 10000.",
"errorEN": "Pagination too deep: page × pageSize must not exceed 10000.",
"code": "INVALID_PAGINATION"
}
{
"error": "Flow não encontrado para o número desta chave.",
"errorEN": "Flow not found for this key's number.",
"code": "FLOW_NOT_FOUND"
}
{
"error": "Flows existem apenas em números Meta (API Oficial). O número desta chave não é Meta ou não tem uma WABA associada — use uma chave de um número Meta.",
"errorEN": "Flows only exist on Meta (Cloud API) numbers. This key's number is not a Meta number, or has no WABA behind it — use a key bound to a Meta number.",
"code": "FLOW_REQUIRES_META_NUMBER"
}
{
"error": "Too many requests"
}
{
"error": "Erro interno do servidor.",
"errorEN": "Internal server error.",
"code": "INTERNAL_ERROR"
}
Presente APENAS quando o Flow cunhou mais envios do que uma requisição correlaciona (teto de 10.000 sessões); ausente caso contrário. A página fica então CURTA — leia isso como "pode haver mais", nunca como "estes são todos os envios".
Opções disponíveis:
FLOW_RESPONSES_WINDOW_TRUNCATED
Esta página foi útil?
⌘I
Listar respostas do Flow
curl --request GET \ --url https://pilotstatus.com.br/v1/flows/{id}/responses \ --header 'x-api-key: <api-key>'
{
"error": "Paginação profunda demais: page × pageSize não pode passar de 10000.",
"errorEN": "Pagination too deep: page × pageSize must not exceed 10000.",
"code": "INVALID_PAGINATION"
}
{
"error": "Flow não encontrado para o número desta chave.",
"errorEN": "Flow not found for this key's number.",
"code": "FLOW_NOT_FOUND"
}
{
"error": "Flows existem apenas em números Meta (API Oficial). O número desta chave não é Meta ou não tem uma WABA associada — use uma chave de um número Meta.",
"errorEN": "Flows only exist on Meta (Cloud API) numbers. This key's number is not a Meta number, or has no WABA behind it — use a key bound to a Meta number.",
"code": "FLOW_REQUIRES_META_NUMBER"
}
{
"error": "Too many requests"
}
{
"error": "Erro interno do servidor.",
"errorEN": "Internal server error.",
"code": "INTERNAL_ERROR"
}
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Pilot Status","description":"Pilot Status — WhatsApp API \u0026 messaging infrastructure. Send and receive WhatsApp messages via REST API, webhooks, MCP server, and dashboard. Official (Meta Cloud API) and unofficial connections.","colors":{"primary":"#19E17D","light":"#2EE98C","dark":"#19E17D"},"logo":{"light":"https://mintcdn.com/iaxp/bFY4-GIf_icRI6gv/images/wordmark-light.svg?fit=max\u0026auto=format\u0026n=bFY4-GIf_icRI6gv\u0026q=85\u0026s=956be78168490eaf8ae153ff8c58b4a7","dark":"https://mintcdn.com/iaxp/OICBZy4RbSGLpCw_/images/wordmark-dark.svg?fit=max\u0026auto=format\u0026n=OICBZy4RbSGLpCw_\u0026q=85\u0026s=9ce419fd878af00cc2d3c22f36da8e23"},"favicon":"https://media.brand.dev/75fcb4cf-8fa0-40cb-b428-c03cb409236b.svg","api":{"playground":{"display":"interactive"}},"background":{"color":{"light":"#FCF5E9","dark":"#0B1419"}},"navbar":{"links":[{"href":"https://wa.me/5585984387245?text=Ol%C3%A1%21%20Vim%20pela%20documenta%C3%A7%C3%A3o%20da%20Pilot%20Status%20e%20preciso%20de%20suporte.","label":"Support"}],"primary":{"type":"button","label":"Get Started Free","href":"https://pilotstatus.com.br"}},"footer":{"socials":{"x":"https://x.com/pilotstatus"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":""},{"language":"pt-BR","navbar":{"links":[{"href":"https://wa.me/5585984387245?text=Ol%C3%A1%21%20Vim%20pela%20documenta%C3%A7%C3%A3o%20da%20Pilot%20Status%20e%20preciso%20de%20suporte.","label":"Suporte"}],"primary":{"type":"button","label":"Comece grátis","href":"https://pilotstatus.com.br"}},"href":"pt-BR"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"iaxp","hasAudioNarration":false,"actualSubdomain":"iaxp","customDomains":["docs.pilotstatus.com.br"],"gitSource":{"type":"github","owner":"oismaelash","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"collectionId":"c4071a3b-2639-4260-977b-60a06585c391","liveDeploymentHistoryId":"6ae5f3888b8badc2e429da46","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae5f3888b8badc2e429da46"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae5f3888b8badc2e429da46","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"en","tag":"Playground","count":315},{"language":"pt-BR","tag":"Playground","count":315},{"language":"en","tag":"Endpoints","count":294},{"language":"pt-BR","tag":"Endpoints","count":294},{"language":"en","tag":"Evolution GO","count":72},{"language":"pt-BR","tag":"Evolution GO","count":72},{"language":"en","tag":"Evolution V2","count":69},{"language":"pt-BR","tag":"Evolution V2","count":69},{"language":"en","tag":"API Reference","count":62},{"language":"pt-BR","tag":"Referência da API","count":62},{"language":"en","tag":"Documentation","count":51},{"language":"pt-BR","tag":"Documentação","count":51},{"language":"en","tag":"Phone Lines","count":30},{"language":"en","tag":"Meta Cloud API","count":26},{"language":"pt-BR","tag":"Meta Cloud API","count":26},{"language":"pt-BR","tag":"Linhas telefônicas","count":22},{"language":"en","tag":"Workspace","count":21},{"language":"pt-BR","tag":"Workspace","count":21},{"language":"en","tag":"Numbers","count":18},{"language":"pt-BR","tag":"Números","count":18}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"contato@ismaelnascimento.com"}},"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},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"pt-BR/playground/flows/list-flow-responses","slug":"/pt-BR/playground/flows/list-flow-responses","pageMetadata":{"title":"Listar respostas do Flow","sidebarTitle":"Listar respostas do Flow","openapi":"openapi.pt.json GET /v1/flows/{id}/responses","description":"Os formulários que os clientes enviaram para UM Flow, os mais novos primeiro. O Flow é resolvido primeiro dentro da WABA da própria chave, e essa resolução é a única coisa que escopa o resto — um Flow de outra WABA (inclusive outra WABA do mesmo tenant) responde 404 e nenhuma resposta chega a ser lida.\n\nRespostas fora da janela de retenção são excluídas AQUI, não só pela tarefa de poda, para que ninguém leia um envio que a janela publicada diz ter sumido. `contactPhone` vem `null` quando o telefone já não é nosso para publicar. `externalMessageId` é o `wamid` da Meta e é NOMEADO como id de provedor de propósito — todo outro id desta superfície é local.\n\n`notice: \"FLOW_RESPONSES_WINDOW_TRUNCATED\"` aparece na página quando o Flow cunhou mais envios do que uma requisição correlaciona (teto de 10.000 sessões). Uma resposta curta que não diz que é curta é o que faz o cliente concluir que perdeu envios. Permissão `flows:read`.\n\n**Exige chave com escopo de número.** Uma chave de tenant precisa nomear o número no header `x-whatsapp-number-id`, senão recebe 403 `TENANT_SCOPE_NOT_ALLOWED`.\n\n`media[]` leva os arquivos que a pessoa ANEXOU dentro do formulário (`PhotoPicker` / `DocumentPicker`). Eles NÃO estão em `response`: um picker exige `data_exchange`, portanto as referências chegam no pedido que o nosso endpoint decifra — uma troca HTTP diferente do `nfm_reply` que produziu a linha — e este array é a cópia re-hospedada, ligada pelo `flowToken`. É o único lugar onde um chamador alcança os bytes: a Meta apaga o original após 20 dias. É SEMPRE um array, `[]` quando nada foi anexado. `url` é um link estável nosso e está presente assim que a linha existe, INCLUSIVE enquanto `status` for `\"PENDING\"`. Buscá-lo antes de a re-hospedagem terminar não dá 404: a rota segura o pedido enquanto espera pelo arquivo e então o serve, toda busca posterior é um redirect, e uma espera que estoura responde 404 com o cabeçalho `Retry-After`. O valor não muda depois de os bytes chegarem, portanto é seguro guardá-lo logo na chegada, e o `status` (`PENDING`/`STORED`/`FAILED`) continua sendo como o chamador sabe se eles chegaram. É a ordem que justifica esse link: o evento é emitido assim que o envio é guardado e a re-hospedagem roda depois dele, portanto o anúncio precede normalmente os bytes. `url` só é nulo quando a instalação não tem segredo de assinatura configurado (aí volta ao comportamento antigo, a URL direta do objeto assim que ficar `STORED`), quando a Meta não enviou `media_id` para assinar uma identidade em cima, ou num número `RELAY_ONLY` onde nada foi guardado — nunca apenas porque a transferência ainda não terminou. Trate-o como opaco: busque, nunca construa um. `mimeType` é farejado dos bytes decifrados e nunca do nome do arquivo, e ele e `sizeBytes` são `null` até o arquivo ficar guardado. Nem `cdn_url` nem material de cifra são alguma vez publicados.\n\n`submitted[]` é o que a pessoa de fato ESCREVEU, tela a tela. ⛔ Num Flow `data_exchange` é o ÚNICO lugar onde essas respostas existem: ali o `response` é o `nfm_reply` da Meta, um envelope que leva o `flow_token` e mais nada — quem abre o `response` num Flow desses encontra uma sala vazia e conclui que o envio se perdeu. Num Flow SIMPLES, sem endpoint, as respostas CHEGAM no `response` e o `submitted` vem `[]`.\n\nCada entrada é um pedido `data_exchange` que a META NOS ENVIOU: `screen` (a tela em que a pessoa estava, ou `null`), `at` (ISO 8601), `data` (o objeto já parseado) e `omitted`. Nunca é o que o SEU endpoint respondeu — o `extension_message_response` não é publicado em lugar nenhum do Pilot Status. E só as trocas `data_exchange` são capturadas: o `INIT` devolve o estado que NÓS semeamos quando o Flow foi enviado, e o `BACK` é navegação, portanto esta lista é legitimamente MAIS CURTA do que o tráfego que o seu próprio endpoint viu. Essa diferença não é perda.\n\nNESTE endpoint o `submitted` é sempre um array e nunca `null` — `[]` tanto quando não há nada como quando o número não guarda conteúdo de cliente, porque \"nada foi capturado\" e \"não conseguimos olhar\" seriam senão o mesmo valor. (No webhook `flow.response_received` é o contrário, `null` e nunca `[]`, porque lá o redator só apaga um campo que tenha algo dentro.) Nada é truncado em silêncio: ou a entrada leva `data` com `omitted: null`, ou leva `data: null` e diz o PORQUÊ. `DATA_TOO_LARGE` é uma troca grande demais, que mantém a linha e o lugar dela na sequência — o teto que ela passou conta-se em BYTES, não em caracteres, portanto texto com acentos chega lá antes do que o comprimento sugere. `LIMIT_REACHED` é o teto de 50 trocas por formulário: uma entrada final de marcação, e nada depois dela ficou guardado. `UNREADABLE` é uma troca que ficou guardada mas cujo conteúdo não se conseguiu reler. Não há terceira forma.\n\nA lista só cresce e nunca é de-duplicada: quem volta atrás numa tela e responde de novo produz uma segunda entrada GENUÍNA, e é o `at` que distingue duas passagens debaixo do mesmo `flowToken`. As trocas ficam 30 dias + 1 — um dia a MAIS do que a linha da resposta — porque a troca é capturada enquanto a pessoa ainda está preenchendo, minutos ANTES do envio que cria a linha; com uma janela igual elas expirariam primeiro, e uma resposta ainda dentro da retenção dela publicaria `submitted: []` nos seus últimos minutos. Num número com `piiMode: \"RELAY_ONLY\"` não fica aqui nada: nem uma entrada ocultada, nenhuma entrada.","href":"/pt-BR/playground/flows/list-flow-responses"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Os formulários que os clientes enviaram para UM Flow, os mais novos primeiro. O Flow é resolvido primeiro dentro da WABA da própria chave, e essa resolução é a única coisa que escopa o resto — um Flow de outra WABA (inclusive outra WABA do mesmo tenant) responde 404 e nenhuma resposta chega a ser lida.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Respostas fora da janela de retenção são excluídas AQUI, não só pela tarefa de poda, para que ninguém leia um envio que a janela publicada diz ter sumido. \", _jsx(_components.code, {\n children: \"contactPhone\"\n }), \" vem \", _jsx(_components.code, {\n children: \"null\"\n }), \" quando o telefone já não é nosso para publicar. \", _jsx(_components.code, {\n children: \"externalMessageId\"\n }), \" é o \", _jsx(_components.code, {\n children: \"wamid\"\n }), \" da Meta e é NOMEADO como id de provedor de propósito — todo outro id desta superfície é local.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"notice: \\\"FLOW_RESPONSES_WINDOW_TRUNCATED\\\"\"\n }), \" aparece na página quando o Flow cunhou mais envios do que uma requisição correlaciona (teto de 10.000 sessões). Uma resposta curta que não diz que é curta é o que faz o cliente concluir que perdeu envios. Permissão \", _jsx(_components.code, {\n children: \"flows:read\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Exige chave com escopo de número.\"\n }), \" Uma chave de tenant precisa nomear o número no header \", _jsx(_components.code, {\n children: \"x-whatsapp-number-id\"\n }), \", senão recebe 403 \", _jsx(_components.code, {\n children: \"TENANT_SCOPE_NOT_ALLOWED\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"media[]\"\n }), \" leva os arquivos que a pessoa ANEXOU dentro do formulário (\", _jsx(_components.code, {\n children: \"PhotoPicker\"\n }), \" / \", _jsx(_components.code, {\n children: \"DocumentPicker\"\n }), \"). Eles NÃO estão em \", _jsx(_components.code, {\n children: \"response\"\n }), \": um picker exige \", _jsx(_components.code, {\n children: \"data_exchange\"\n }), \", portanto as referências chegam no pedido que o nosso endpoint decifra — uma troca HTTP diferente do \", _jsx(_components.code, {\n children: \"nfm_reply\"\n }), \" que produziu a linha — e este array é a cópia re-hospedada, ligada pelo \", _jsx(_components.code, {\n children: \"flowToken\"\n }), \". É o único lugar onde um chamador alcança os bytes: a Meta apaga o original após 20 dias. É SEMPRE um array, \", _jsx(_components.code, {\n children: \"[]\"\n }), \" quando nada foi anexado. \", _jsx(_components.code, {\n children: \"url\"\n }), \" é um link estável nosso e está presente assim que a linha existe, INCLUSIVE enquanto \", _jsx(_components.code, {\n children: \"status\"\n }), \" for \", _jsx(_components.code, {\n children: \"\\\"PENDING\\\"\"\n }), \". Buscá-lo antes de a re-hospedagem terminar não dá 404: a rota segura o pedido enquanto espera pelo arquivo e então o serve, toda busca posterior é um redirect, e uma espera que estoura responde 404 com o cabeçalho \", _jsx(_components.code, {\n children: \"Retry-After\"\n }), \". O valor não muda depois de os bytes chegarem, portanto é seguro guardá-lo logo na chegada, e o \", _jsx(_components.code, {\n children: \"status\"\n }), \" (\", _jsx(_components.code, {\n children: \"PENDING\"\n }), \"/\", _jsx(_components.code, {\n children: \"STORED\"\n }), \"/\", _jsx(_components.code, {\n children: \"FAILED\"\n }), \") continua sendo como o chamador sabe se eles chegaram. É a ordem que justifica esse link: o evento é emitido assim que o envio é guardado e a re-hospedagem roda depois dele, portanto o anúncio precede normalmente os bytes. \", _jsx(_components.code, {\n children: \"url\"\n }), \" só é nulo quando a instalação não tem segredo de assinatura configurado (aí volta ao comportamento antigo, a URL direta do objeto assim que ficar \", _jsx(_components.code, {\n children: \"STORED\"\n }), \"), quando a Meta não enviou \", _jsx(_components.code, {\n children: \"media_id\"\n }), \" para assinar uma identidade em cima, ou num número \", _jsx(_components.code, {\n children: \"RELAY_ONLY\"\n }), \" onde nada foi guardado — nunca apenas porque a transferência ainda não terminou. Trate-o como opaco: busque, nunca construa um. \", _jsx(_components.code, {\n children: \"mimeType\"\n }), \" é farejado dos bytes decifrados e nunca do nome do arquivo, e ele e \", _jsx(_components.code, {\n children: \"sizeBytes\"\n }), \" são \", _jsx(_components.code, {\n children: \"null\"\n }), \" até o arquivo ficar guardado. Nem \", _jsx(_components.code, {\n children: \"cdn_url\"\n }), \" nem material de cifra são alguma vez publicados.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"submitted[]\"\n }), \" é o que a pessoa de fato ESCREVEU, tela a tela. ⛔ Num Flow \", _jsx(_components.code, {\n children: \"data_exchange\"\n }), \" é o ÚNICO lugar onde essas respostas existem: ali o \", _jsx(_components.code, {\n children: \"response\"\n }), \" é o \", _jsx(_components.code, {\n children: \"nfm_reply\"\n }), \" da Meta, um envelope que leva o \", _jsx(_components.code, {\n children: \"flow_token\"\n }), \" e mais nada — quem abre o \", _jsx(_components.code, {\n children: \"response\"\n }), \" num Flow desses encontra uma sala vazia e conclui que o envio se perdeu. Num Flow SIMPLES, sem endpoint, as respostas CHEGAM no \", _jsx(_components.code, {\n children: \"response\"\n }), \" e o \", _jsx(_components.code, {\n children: \"submitted\"\n }), \" vem \", _jsx(_components.code, {\n children: \"[]\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Cada entrada é um pedido \", _jsx(_components.code, {\n children: \"data_exchange\"\n }), \" que a META NOS ENVIOU: \", _jsx(_components.code, {\n children: \"screen\"\n }), \" (a tela em que a pessoa estava, ou \", _jsx(_components.code, {\n children: \"null\"\n }), \"), \", _jsx(_components.code, {\n children: \"at\"\n }), \" (ISO 8601), \", _jsx(_components.code, {\n children: \"data\"\n }), \" (o objeto já parseado) e \", _jsx(_components.code, {\n children: \"omitted\"\n }), \". Nunca é o que o SEU endpoint respondeu — o \", _jsx(_components.code, {\n children: \"extension_message_response\"\n }), \" não é publicado em lugar nenhum do Pilot Status. E só as trocas \", _jsx(_components.code, {\n children: \"data_exchange\"\n }), \" são capturadas: o \", _jsx(_components.code, {\n children: \"INIT\"\n }), \" devolve o estado que NÓS semeamos quando o Flow foi enviado, e o \", _jsx(_components.code, {\n children: \"BACK\"\n }), \" é navegação, portanto esta lista é legitimamente MAIS CURTA do que o tráfego que o seu próprio endpoint viu. Essa diferença não é perda.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"NESTE endpoint o \", _jsx(_components.code, {\n children: \"submitted\"\n }), \" é sempre um array e nunca \", _jsx(_components.code, {\n children: \"null\"\n }), \" — \", _jsx(_components.code, {\n children: \"[]\"\n }), \" tanto quando não há nada como quando o número não guarda conteúdo de cliente, porque “nada foi capturado” e “não conseguimos olhar” seriam senão o mesmo valor. (No webhook \", _jsx(_components.code, {\n children: \"flow.response_received\"\n }), \" é o contrário, \", _jsx(_components.code, {\n children: \"null\"\n }), \" e nunca \", _jsx(_components.code, {\n children: \"[]\"\n }), \", porque lá o redator só apaga um campo que tenha algo dentro.) Nada é truncado em silêncio: ou a entrada leva \", _jsx(_components.code, {\n children: \"data\"\n }), \" com \", _jsx(_components.code, {\n children: \"omitted: null\"\n }), \", ou leva \", _jsx(_components.code, {\n children: \"data: null\"\n }), \" e diz o PORQUÊ. \", _jsx(_components.code, {\n children: \"DATA_TOO_LARGE\"\n }), \" é uma troca grande demais, que mantém a linha e o lugar dela na sequência — o teto que ela passou conta-se em BYTES, não em caracteres, portanto texto com acentos chega lá antes do que o comprimento sugere. \", _jsx(_components.code, {\n children: \"LIMIT_REACHED\"\n }), \" é o teto de 50 trocas por formulário: uma entrada final de marcação, e nada depois dela ficou guardado. \", _jsx(_components.code, {\n children: \"UNREADABLE\"\n }), \" é uma troca que ficou guardada mas cujo conteúdo não se conseguiu reler. Não há terceira forma.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A lista só cresce e nunca é de-duplicada: quem volta atrás numa tela e responde de novo produz uma segunda entrada GENUÍNA, e é o \", _jsx(_components.code, {\n children: \"at\"\n }), \" que distingue duas passagens debaixo do mesmo \", _jsx(_components.code, {\n children: \"flowToken\"\n }), \". As trocas ficam 30 dias + 1 — um dia a MAIS do que a linha da resposta — porque a troca é capturada enquanto a pessoa ainda está preenchendo, minutos ANTES do envio que cria a linha; com uma janela igual elas expirariam primeiro, e uma resposta ainda dentro da retenção dela publicaria \", _jsx(_components.code, {\n children: \"submitted: []\"\n }), \" nos seus últimos minutos. Num número com \", _jsx(_components.code, {\n children: \"piiMode: \\\"RELAY_ONLY\\\"\"\n }), \" não fica aqui nada: nem uma entrada ocultada, nenhuma entrada.\"]\n })]\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Listar respostas do Flow","sidebarTitle":"Listar respostas do Flow","openapi":"openapi.pt.json GET /v1/flows/{id}/responses","description":"Os formulários que os clientes enviaram para UM Flow, os mais novos primeiro. O Flow é resolvido primeiro dentro da WABA da própria chave, e essa resolução é a única coisa que escopa o resto — um Flow de outra WABA (inclusive outra WABA do mesmo tenant) responde 404 e nenhuma resposta chega a ser lida.\n\nRespostas fora da janela de retenção são excluídas AQUI, não só pela tarefa de poda, para que ninguém leia um envio que a janela publicada diz ter sumido. `contactPhone` vem `null` quando o telefone já não é nosso para publicar. `externalMessageId` é o `wamid` da Meta e é NOMEADO como id de provedor de propósito — todo outro id desta superfície é local.\n\n`notice: \"FLOW_RESPONSES_WINDOW_TRUNCATED\"` aparece na página quando o Flow cunhou mais envios do que uma requisição correlaciona (teto de 10.000 sessões). Uma resposta curta que não diz que é curta é o que faz o cliente concluir que perdeu envios. Permissão `flows:read`.\n\n**Exige chave com escopo de número.** Uma chave de tenant precisa nomear o número no header `x-whatsapp-number-id`, senão recebe 403 `TENANT_SCOPE_NOT_ALLOWED`.\n\n`media[]` leva os arquivos que a pessoa ANEXOU dentro do formulário (`PhotoPicker` / `DocumentPicker`). Eles NÃO estão em `response`: um picker exige `data_exchange`, portanto as referências chegam no pedido que o nosso endpoint decifra — uma troca HTTP diferente do `nfm_reply` que produziu a linha — e este array é a cópia re-hospedada, ligada pelo `flowToken`. É o único lugar onde um chamador alcança os bytes: a Meta apaga o original após 20 dias. É SEMPRE um array, `[]` quando nada foi anexado. `url` é um link estável nosso e está presente assim que a linha existe, INCLUSIVE enquanto `status` for `\"PENDING\"`. Buscá-lo antes de a re-hospedagem terminar não dá 404: a rota segura o pedido enquanto espera pelo arquivo e então o serve, toda busca posterior é um redirect, e uma espera que estoura responde 404 com o cabeçalho `Retry-After`. O valor não muda depois de os bytes chegarem, portanto é seguro guardá-lo logo na chegada, e o `status` (`PENDING`/`STORED`/`FAILED`) continua sendo como o chamador sabe se eles chegaram. É a ordem que justifica esse link: o evento é emitido assim que o envio é guardado e a re-hospedagem roda depois dele, portanto o anúncio precede normalmente os bytes. `url` só é nulo quando a instalação não tem segredo de assinatura configurado (aí volta ao comportamento antigo, a URL direta do objeto assim que ficar `STORED`), quando a Meta não enviou `media_id` para assinar uma identidade em cima, ou num número `RELAY_ONLY` onde nada foi guardado — nunca apenas porque a transferência ainda não terminou. Trate-o como opaco: busque, nunca construa um. `mimeType` é farejado dos bytes decifrados e nunca do nome do arquivo, e ele e `sizeBytes` são `null` até o arquivo ficar guardado. Nem `cdn_url` nem material de cifra são alguma vez publicados.\n\n`submitted[]` é o que a pessoa de fato ESCREVEU, tela a tela. ⛔ Num Flow `data_exchange` é o ÚNICO lugar onde essas respostas existem: ali o `response` é o `nfm_reply` da Meta, um envelope que leva o `flow_token` e mais nada — quem abre o `response` num Flow desses encontra uma sala vazia e conclui que o envio se perdeu. Num Flow SIMPLES, sem endpoint, as respostas CHEGAM no `response` e o `submitted` vem `[]`.\n\nCada entrada é um pedido `data_exchange` que a META NOS ENVIOU: `screen` (a tela em que a pessoa estava, ou `null`), `at` (ISO 8601), `data` (o objeto já parseado) e `omitted`. Nunca é o que o SEU endpoint respondeu — o `extension_message_response` não é publicado em lugar nenhum do Pilot Status. E só as trocas `data_exchange` são capturadas: o `INIT` devolve o estado que NÓS semeamos quando o Flow foi enviado, e o `BACK` é navegação, portanto esta lista é legitimamente MAIS CURTA do que o tráfego que o seu próprio endpoint viu. Essa diferença não é perda.\n\nNESTE endpoint o `submitted` é sempre um array e nunca `null` — `[]` tanto quando não há nada como quando o número não guarda conteúdo de cliente, porque \"nada foi capturado\" e \"não conseguimos olhar\" seriam senão o mesmo valor. (No webhook `flow.response_received` é o contrário, `null` e nunca `[]`, porque lá o redator só apaga um campo que tenha algo dentro.) Nada é truncado em silêncio: ou a entrada leva `data` com `omitted: null`, ou leva `data: null` e diz o PORQUÊ. `DATA_TOO_LARGE` é uma troca grande demais, que mantém a linha e o lugar dela na sequência — o teto que ela passou conta-se em BYTES, não em caracteres, portanto texto com acentos chega lá antes do que o comprimento sugere. `LIMIT_REACHED` é o teto de 50 trocas por formulário: uma entrada final de marcação, e nada depois dela ficou guardado. `UNREADABLE` é uma troca que ficou guardada mas cujo conteúdo não se conseguiu reler. Não há terceira forma.\n\nA lista só cresce e nunca é de-duplicada: quem volta atrás numa tela e responde de novo produz uma segunda entrada GENUÍNA, e é o `at` que distingue duas passagens debaixo do mesmo `flowToken`. As trocas ficam 30 dias + 1 — um dia a MAIS do que a linha da resposta — porque a troca é capturada enquanto a pessoa ainda está preenchendo, minutos ANTES do envio que cria a linha; com uma janela igual elas expirariam primeiro, e uma resposta ainda dentro da retenção dela publicaria `submitted: []` nos seus últimos minutos. Num número com `piiMode: \"RELAY_ONLY\"` não fica aqui nada: nem uma entrada ocultada, nenhuma entrada.","href":"/pt-BR/playground/flows/list-flow-responses"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Listar respostas do Flow","description":"Os formulários que os clientes enviaram para UM Flow, os mais novos primeiro. O Flow é resolvido primeiro dentro da WABA da própria chave, e essa resolução é a única coisa que escopa o resto — um Flow de outra WABA (inclusive outra WABA do mesmo tenant) responde 404 e nenhuma resposta chega a ser lida.\n\nRespostas fora da janela de retenção são excluídas AQUI, não só pela tarefa de poda, para que ninguém leia um envio que a janela publicada diz ter sumido. `contactPhone` vem `null` quando o telefone já não é nosso para publicar. `externalMessageId` é o `wamid` da Meta e é NOMEADO como id de provedor de propósito — todo outro id desta superfície é local.\n\n`notice: \"FLOW_RESPONSES_WINDOW_TRUNCATED\"` aparece na página quando o Flow cunhou mais envios do que uma requisição correlaciona (teto de 10.000 sessões). Uma resposta curta que não diz que é curta é o que faz o cliente concluir que perdeu envios. Permissão `flows:read`.\n\n**Exige chave com escopo de número.** Uma chave de tenant precisa nomear o número no header `x-whatsapp-number-id`, senão recebe 403 `TENANT_SCOPE_NOT_ALLOWED`.\n\n`media[]` leva os arquivos que a pessoa ANEXOU dentro do formulário (`PhotoPicker` / `DocumentPicker`). Eles NÃO estão em `response`: um picker exige `data_exchange`, portanto as referências chegam no pedido que o nosso endpoint decifra — uma troca HTTP diferente do `nfm_reply` que produziu a linha — e este array é a cópia re-hospedada, ligada pelo `flowToken`. É o único lugar onde um chamador alcança os bytes: a Meta apaga o original após 20 dias. É SEMPRE um array, `[]` quando nada foi anexado. `url` é um link estável nosso e está presente assim que a linha existe, INCLUSIVE enquanto `status` for `\"PENDING\"`. Buscá-lo antes de a re-hospedagem terminar não dá 404: a rota segura o pedido enquanto espera pelo arquivo e então o serve, toda busca posterior é um redirect, e uma espera que estoura responde 404 com o cabeçalho `Retry-After`. O valor não muda depois de os bytes chegarem, portanto é seguro guardá-lo logo na chegada, e o `status` (`PENDING`/`STORED`/`FAILED`) continua sendo como o chamador sabe se eles chegaram. É a ordem que justifica esse link: o evento é emitido assim que o envio é guardado e a re-hospedagem roda depois dele, portanto o anúncio precede normalmente os bytes. `url` só é nulo quando a instalação não tem segredo de assinatura configurado (aí volta ao comportamento antigo, a URL direta do objeto assim que ficar `STORED`), quando a Meta não enviou `media_id` para assinar uma identidade em cima, ou num número `RELAY_ONLY` onde nada foi guardado — nunca apenas porque a transferência ainda não terminou. Trate-o como opaco: busque, nunca construa um. `mimeType` é farejado dos bytes decifrados e nunca do nome do arquivo, e ele e `sizeBytes` são `null` até o arquivo ficar guardado. Nem `cdn_url` nem material de cifra são alguma vez publicados.\n\n`submitted[]` é o que a pessoa de fato ESCREVEU, tela a tela. ⛔ Num Flow `data_exchange` é o ÚNICO lugar onde essas respostas existem: ali o `response` é o `nfm_reply` da Meta, um envelope que leva o `flow_token` e mais nada — quem abre o `response` num Flow desses encontra uma sala vazia e conclui que o envio se perdeu. Num Flow SIMPLES, sem endpoint, as respostas CHEGAM no `response` e o `submitted` vem `[]`.\n\nCada entrada é um pedido `data_exchange` que a META NOS ENVIOU: `screen` (a tela em que a pessoa estava, ou `null`), `at` (ISO 8601), `data` (o objeto já parseado) e `omitted`. Nunca é o que o SEU endpoint respondeu — o `extension_message_response` não é publicado em lugar nenhum do Pilot Status. E só as trocas `data_exchange` são capturadas: o `INIT` devolve o estado que NÓS semeamos quando o Flow foi enviado, e o `BACK` é navegação, portanto esta lista é legitimamente MAIS CURTA do que o tráfego que o seu próprio endpoint viu. Essa diferença não é perda.\n\nNESTE endpoint o `submitted` é sempre um array e nunca `null` — `[]` tanto quando não há nada como quando o número não guarda conteúdo de cliente, porque \"nada foi capturado\" e \"não conseguimos olhar\" seriam senão o mesmo valor. (No webhook `flow.response_received` é o contrário, `null` e nunca `[]`, porque lá o redator só apaga um campo que tenha algo dentro.) Nada é truncado em silêncio: ou a entrada leva `data` com `omitted: null`, ou leva `data: null` e diz o PORQUÊ. `DATA_TOO_LARGE` é uma troca grande demais, que mantém a linha e o lugar dela na sequência — o teto que ela passou conta-se em BYTES, não em caracteres, portanto texto com acentos chega lá antes do que o comprimento sugere. `LIMIT_REACHED` é o teto de 50 trocas por formulário: uma entrada final de marcação, e nada depois dela ficou guardado. `UNREADABLE` é uma troca que ficou guardada mas cujo conteúdo não se conseguiu reler. Não há terceira forma.\n\nA lista só cresce e nunca é de-duplicada: quem volta atrás numa tela e responde de novo produz uma segunda entrada GENUÍNA, e é o `at` que distingue duas passagens debaixo do mesmo `flowToken`. As trocas ficam 30 dias + 1 — um dia a MAIS do que a linha da resposta — porque a troca é capturada enquanto a pessoa ainda está preenchendo, minutos ANTES do envio que cria a linha; com uma janela igual elas expirariam primeiro, e uma resposta ainda dentro da retenção dela publicaria `submitted: []` nos seus últimos minutos. Num número com `piiMode: \"RELAY_ONLY\"` não fica aqui nada: nem uma entrada ocultada, nenhuma entrada.","tags":["Flows"],"operationId":"get_flows_id_responses","parameters":["63bd2d65-783d-414a-b316-1c91a5f49fa5","ace52227-d9c0-48f9-8d87-17c7046e65ce","e6aff7fe-119c-449d-b0a7-2fccd5ebafa2"],"responses":{"200":"05fe9a8f-3c9a-44f4-81af-63a893ae366f","400":"36c49890-4b3f-40d4-951a-3c1fcc9a7f1e","401":"30f8cc68-7b9c-4435-bff0-6a21d7bc0583","403":"370d95c0-fa86-4585-a5c3-e66ced6b0e4d","404":"b512ddb8-9ade-4058-be7b-f950d1e83e19","422":"04d1a508-776f-486e-b04f-53ce252c7335","429":"97eb3dcf-25c5-4812-9542-f0937fe10077","500":"cfa62807-bc68-4b04-8dab-43bdef0c6292"},"method":"get","type":"path","servers":["1ba6474d-0921-4218-9fb0-3c32c889d4fc"],"security":["a31d1d74-461a-4e47-a7cd-aa1b6a90c248","40d1c058-9774-4a41-b5de-da67e113ac1e"],"path":"/v1/flows/{id}/responses","baseUrlOptions":["https://pilotstatus.com.br"],"title":"Listar respostas do Flow","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"63bd2d65-783d-414a-b316-1c91a5f49fa5":{"name":"id","in":"path","required":true,"description":"O id **local** do Flow — o campo `id` que `GET /v1/flows` devolve, nunca o `metaFlowId`.","schema":{"type":"string","isRequired":true,"description":"O id **local** do Flow — o campo `id` que `GET /v1/flows` devolve, nunca o `metaFlowId`.","uniqueKey":"","typeLabel":"string"},"example":"cmf1a2b3c4d5e6f7g8h9i0j1"},"ace52227-d9c0-48f9-8d87-17c7046e65ce":{"name":"page","in":"query","required":false,"description":"Número da página, começando em 1.","schema":{"type":"integer","minimum":1,"default":1,"isRequired":false,"description":"Número da página, começando em 1.","uniqueKey":"","typeLabel":"integer"},"example":1},"e6aff7fe-119c-449d-b0a7-2fccd5ebafa2":{"name":"pageSize","in":"query","required":false,"description":"Linhas por página. Padrão 30, máximo 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":30,"isRequired":false,"description":"Linhas por página. Padrão 30, máximo 100.","uniqueKey":"","typeLabel":"integer"},"example":30}},"responses":{"05fe9a8f-3c9a-44f4-81af-63a893ae366f":{"description":"Listar respostas do Flow","content":{"application/json":{"schema":{"type":"object","properties":{"responses":{"type":"array","description":"Os envios desta página, os mais novos primeiro.","items":{"type":"object","properties":{"id":{"type":"string","description":"Id local do envio.","uniqueKey":"responses.items.[INDEX].id","typeLabel":"string"},"flowId":{"type":"string","description":"O id LOCAL do Flow por onde isto foi lido, ecoado do caminho — uma resposta nomeia sempre o recurso por onde foi lida.","uniqueKey":"responses.items.[INDEX].flowId","typeLabel":"string"},"contactPhone":{"oneOf":[{"type":"string","description":"Telefone de quem respondeu. `null` quando o telefone já não é nosso para publicar — a sessão por trás do token foi podada, ou a janela de retenção dela fechou. A resposta sobrevive ao telefone por desenho, portanto o envio continua listado e contado; só o telefone vai embora.","uniqueKey":"responses.items.[INDEX].contactPhone.oneOf.0","typeLabel":"string"},{"type":"null","description":"Telefone de quem respondeu. `null` quando o telefone já não é nosso para publicar — a sessão por trás do token foi podada, ou a janela de retenção dela fechou. A resposta sobrevive ao telefone por desenho, portanto o envio continua listado e contado; só o telefone vai embora.","uniqueKey":"responses.items.[INDEX].contactPhone.oneOf.1","typeLabel":"null"}],"uniqueKey":"responses.items.[INDEX].contactPhone","typeLabel":"string | null"},"flowToken":{"type":"string","description":"O `flow_token` sob o qual este envio chegou. É ele que liga `media[]` e `submitted[]` à linha.","uniqueKey":"responses.items.[INDEX].flowToken","typeLabel":"string"},"externalMessageId":{"type":"string","description":"O `wamid` da Meta da mensagem que carregou o envio. NOMEADO como id de provedor de propósito — todo outro id desta superfície é local — e é o mesmo valor que `/v1/messages` publica como `externalMessageId`.","uniqueKey":"responses.items.[INDEX].externalMessageId","typeLabel":"string"},"response":{"oneOf":[{"type":"object","description":"O que o endpoint do próprio cliente devolveu para o envio, já parseado. ⚠️ Num Flow com endpoint `data_exchange` isto vem vazio mesmo num número que guarda: o `nfm_reply` da Meta leva apenas o `flow_token`, e o que a pessoa escreveu está no `submitted`. `null` quando o payload guardado estava corrompido ou não era um conjunto de respostas, quando a Meta não entregou `response_json` nenhum, ou quando o número não guarda conteúdo de cliente. Nada distingue os três aqui, de propósito: um discriminador publicaria, por envio, se um número guarda conteúdo de cliente.","uniqueKey":"responses.items.[INDEX].response.oneOf.0","typeLabel":"object"},{"type":"null","description":"O que o endpoint do próprio cliente devolveu para o envio, já parseado. ⚠️ Num Flow com endpoint `data_exchange` isto vem vazio mesmo num número que guarda: o `nfm_reply` da Meta leva apenas o `flow_token`, e o que a pessoa escreveu está no `submitted`. `null` quando o payload guardado estava corrompido ou não era um conjunto de respostas, quando a Meta não entregou `response_json` nenhum, ou quando o número não guarda conteúdo de cliente. Nada distingue os três aqui, de propósito: um discriminador publicaria, por envio, se um número guarda conteúdo de cliente.","uniqueKey":"responses.items.[INDEX].response.oneOf.1","typeLabel":"null"}],"uniqueKey":"responses.items.[INDEX].response","typeLabel":"object | null"},"media":{"type":"array","description":"Os arquivos que a pessoa ANEXOU dentro do formulário (`PhotoPicker` / `DocumentPicker`) — a cópia re-hospedada, e o único lugar onde um chamador alcança os bytes, já que a Meta apaga o original após 20 dias. É SEMPRE um array, `[]` quando nada foi anexado: \"sem anexos\" e \"não conseguimos olhar\" seriam senão o mesmo valor. ⚠️ Eles NÃO estão no `response`.","items":{"type":"object","properties":{"field":{"type":"string","description":"A chave do formulário sob a qual o arquivo foi listado — o nome que o AUTOR do Flow deu ao componente. Os anexos são casados por FORMA e nunca por nome, portanto `photo_picker` é o exemplo da documentação da Meta e não uma palavra reservada.","uniqueKey":"responses.items.[INDEX].media.items.[INDEX].field","typeLabel":"string"},"fileName":{"oneOf":[{"type":"string","description":"O nome que o aparelho de quem enviou reportou, quando reportou algum.","uniqueKey":"responses.items.[INDEX].media.items.[INDEX].fileName.oneOf.0","typeLabel":"string"},{"type":"null","description":"O nome que o aparelho de quem enviou reportou, quando reportou algum.","uniqueKey":"responses.items.[INDEX].media.items.[INDEX].fileName.oneOf.1","typeLabel":"null"}],"uniqueKey":"responses.items.[INDEX].media.items.[INDEX].fileName","typeLabel":"string | null"},"mimeType":{"oneOf":[{"type":"string","description":"Farejado dos bytes DECIFRADOS, nunca tirado do nome do arquivo. `null` enquanto o `status` for `PENDING`: os bytes de onde ele se lê ainda não existem.","uniqueKey":"responses.items.[INDEX].media.items.[INDEX].mimeType.oneOf.0","typeLabel":"string"},{"type":"null","description":"Farejado dos bytes DECIFRADOS, nunca tirado do nome do arquivo. `null` enquanto o `status` for `PENDING`: os bytes de onde ele se lê ainda não existem.","uniqueKey":"responses.items.[INDEX].media.items.[INDEX].mimeType.oneOf.1","typeLabel":"null"}],"uniqueKey":"responses.items.[INDEX].media.items.[INDEX].mimeType","typeLabel":"string | null"},"sizeBytes":{"oneOf":[{"type":"integer","description":"Tamanho do arquivo DECIFRADO, em bytes. `null` enquanto o `status` for `PENDING`, pela mesma razão que o `mimeType` é.","uniqueKey":"responses.items.[INDEX].media.items.[INDEX].sizeBytes.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Tamanho do arquivo DECIFRADO, em bytes. `null` enquanto o `status` for `PENDING`, pela mesma razão que o `mimeType` é.","uniqueKey":"responses.items.[INDEX].media.items.[INDEX].sizeBytes.oneOf.1","typeLabel":"null"}],"uniqueKey":"responses.items.[INDEX].media.items.[INDEX].sizeBytes","typeLabel":"integer | null"},"status":{"type":"string","description":"`PENDING` enquanto a transferência está em curso, depois `STORED` ou `FAILED`. De propósito não é um conjunto fechado: um estado novo tem de ser gravável no dia em que existir.","uniqueKey":"responses.items.[INDEX].media.items.[INDEX].status","typeLabel":"string"},"url":{"oneOf":[{"type":"string","description":"Um link estável NOSSO, presente desde o momento em que a linha existe — INCLUSIVE enquanto o `status` for `PENDING`. Trate-o como opaco: busque, nunca construa nem interprete um. Ele não muda depois de os bytes chegarem, portanto é seguro guardá-lo logo na chegada, e o `status` continua sendo o que diz se eles chegaram. `null` em três casos, e nenhum deles é \"ainda não transferiu\": a instalação não tem segredo de assinatura nem URL base para cunhar um link (aí volta à URL direta do objeto assim que ficar `STORED`), a Meta não enviou `media_id` para assinar uma identidade em cima, ou o número não guarda conteúdo de cliente e não há linha nenhuma. Nem `cdn_url` nem material de cifra são alguma vez publicados.","uniqueKey":"responses.items.[INDEX].media.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","description":"Um link estável NOSSO, presente desde o momento em que a linha existe — INCLUSIVE enquanto o `status` for `PENDING`. Trate-o como opaco: busque, nunca construa nem interprete um. Ele não muda depois de os bytes chegarem, portanto é seguro guardá-lo logo na chegada, e o `status` continua sendo o que diz se eles chegaram. `null` em três casos, e nenhum deles é \"ainda não transferiu\": a instalação não tem segredo de assinatura nem URL base para cunhar um link (aí volta à URL direta do objeto assim que ficar `STORED`), a Meta não enviou `media_id` para assinar uma identidade em cima, ou o número não guarda conteúdo de cliente e não há linha nenhuma. Nem `cdn_url` nem material de cifra são alguma vez publicados.","uniqueKey":"responses.items.[INDEX].media.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"uniqueKey":"responses.items.[INDEX].media.items.[INDEX].url","typeLabel":"string | null"}},"uniqueKey":"responses.items.[INDEX].media.items.[INDEX]","typeLabel":"object"},"uniqueKey":"responses.items.[INDEX].media","typeLabel":"object[]"},"submitted":{"type":"array","description":"O QUE A PESSOA ESCREVEU, tela a tela, num Flow `data_exchange` — uma entrada por pedido `data_exchange` que a Meta nos enviou, na ordem de envio. ⛔ NÃO é o `response`: o `response` é o que o SEU endpoint devolveu, isto é o que o APARELHO nos mandou pelo caminho. ⛔ Uma lista e nunca um objeto fundido — cada troca leva apenas os campos DA SUA tela, e fundir deixaria o último campo de nome repetido vencer em silêncio. É SEMPRE um array, `[]` quando nada foi capturado: \"nada foi capturado\" e \"não conseguimos olhar\" seriam senão o mesmo valor. ⚠️ `[]` NÃO é \"a pessoa não escreveu nada\" — é também um Flow só de NAVIGATE (nenhuma troca chegou ao nosso endpoint; as respostas estão todas no `response`), um número que não guarda conteúdo de cliente, ou um envio anterior a isto existir. ⚠️ Legitimamente MAIS CURTA do que o registro de trocas que o painel de diagnóstico de um Flow mostra: só o `data_exchange` produz uma entrada, o `INIT` devolve o estado que NÓS semeamos no envio e o `BACK` é navegação. Cada entrada tem uma de exatamente duas formas, e não há terceira: `data` com `omitted: null`, ou `data: null` com o `omitted` dizendo o porquê.","items":{"oneOf":[{"type":"object","title":"Respondida","description":"A troca leva `data`, e o `omitted` vem `null`.","properties":{"screen":{"oneOf":[{"type":"string","description":"A tela em que a pessoa estava, ou `null` quando a Meta não nomeou nenhuma. ⚠️ Um nome de tela repetido NÃO é duplicata: quem envia uma tela, volta atrás e envia de novo produz duas entradas para ela, em ordem, com respostas diferentes.","uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.0.screen.oneOf.0","typeLabel":"string"},{"type":"null","description":"A tela em que a pessoa estava, ou `null` quando a Meta não nomeou nenhuma. ⚠️ Um nome de tela repetido NÃO é duplicata: quem envia uma tela, volta atrás e envia de novo produz duas entradas para ela, em ordem, com respostas diferentes.","uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.0.screen.oneOf.1","typeLabel":"null"}],"uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.0.screen","typeLabel":"string | null"},"at":{"type":"string","format":"date-time","description":"Quando o NOSSO proxy viu a troca — minutos ANTES do `receivedAt`, porque a pessoa ainda estava preenchendo o formulário.","uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.0.at","typeLabel":"string\u003cdate-time>"},"data":{"type":"object","description":"Os campos DAQUELA tela, exatamente como o aparelho os enviou. As chaves são o que o autor do Flow chamou aos componentes dele.","uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.0.data","typeLabel":"object"},"omitted":{"type":"null","description":"`null` porque o `data` está lá.","uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.0.omitted","typeLabel":"null"}},"uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.0","typeLabel":"Respondida · object"},{"type":"object","title":"Não guardada","description":"A troca leva `data: null` e DIZ o porquê. Ela mantém a linha, a ordem e o nome da tela — meio documento JSON não é meia resposta.","properties":{"screen":{"oneOf":[{"type":"string","description":"A tela em que a pessoa estava, ou `null` quando a Meta não nomeou nenhuma. ⚠️ Um nome de tela repetido NÃO é duplicata: quem envia uma tela, volta atrás e envia de novo produz duas entradas para ela, em ordem, com respostas diferentes.","uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.1.screen.oneOf.0","typeLabel":"string"},{"type":"null","description":"A tela em que a pessoa estava, ou `null` quando a Meta não nomeou nenhuma. ⚠️ Um nome de tela repetido NÃO é duplicata: quem envia uma tela, volta atrás e envia de novo produz duas entradas para ela, em ordem, com respostas diferentes.","uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.1.screen.oneOf.1","typeLabel":"null"}],"uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.1.screen","typeLabel":"string | null"},"at":{"type":"string","format":"date-time","description":"Quando o NOSSO proxy viu a troca — minutos ANTES do `receivedAt`, porque a pessoa ainda estava preenchendo o formulário.","uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.1.at","typeLabel":"string\u003cdate-time>"},"data":{"type":"null","description":"`null`; o `omitted` diz o porquê.","uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.1.data","typeLabel":"null"},"omitted":{"type":"string","description":"Por que o `data` é `null`. Hoje estão definidos três valores — `DATA_TOO_LARGE`, esta troca sozinha passou do teto por troca; `LIMIT_REACHED`, o teto por formulário foi atingido NESTA troca, portanto a entrada é uma marcação, nada depois dela ficou guardado e ela é sempre a última entrada da lista; e `UNREADABLE`, bytes guardados que já não se leem como um objeto JSON. ⚠️ De propósito NÃO é um conjunto fechado, pela mesma razão que o `media[].status` não é: um motivo de que o seu cliente nunca ouviu falar tem de chegar mesmo assim em vez de rebentar um parse, e um cliente gerado é regerado raramente.","uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.1.omitted","typeLabel":"string"}},"uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX].oneOf.1","typeLabel":"Não guardada · object"}],"uniqueKey":"responses.items.[INDEX].submitted.items.[INDEX]","typeLabel":"Respondida · object | Não guardada · object"},"uniqueKey":"responses.items.[INDEX].submitted","typeLabel":"(Respondida · object | Não guardada · object)[]"},"receivedAt":{"type":"string","format":"date-time","description":"Quando a resposta CHEGOU.","uniqueKey":"responses.items.[INDEX].receivedAt","typeLabel":"string\u003cdate-time>"},"expiresAt":{"type":"string","format":"date-time","description":"Quando esta resposta deixa de ser legível — 30 dias a contar da chegada. Linhas fora dela são excluídas desta própria listagem, não só pela tarefa de poda.","uniqueKey":"responses.items.[INDEX].expiresAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"responses.items.[INDEX]","typeLabel":"object"},"uniqueKey":"responses","typeLabel":"object[]"},"total":{"type":"integer","description":"Envios que casam com a leitura em todas as páginas, não o tamanho desta página.","uniqueKey":"total","typeLabel":"integer"},"page":{"type":"integer","uniqueKey":"page","typeLabel":"integer"},"pageSize":{"type":"integer","uniqueKey":"pageSize","typeLabel":"integer"},"totalPages":{"type":"integer","uniqueKey":"totalPages","typeLabel":"integer"},"notice":{"type":"string","enum":["FLOW_RESPONSES_WINDOW_TRUNCATED"],"description":"Presente APENAS quando o Flow cunhou mais envios do que uma requisição correlaciona (teto de 10.000 sessões); ausente caso contrário. A página fica então CURTA — leia isso como \"pode haver mais\", nunca como \"estes são todos os envios\".","uniqueKey":"notice","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"example":{"responses":[{"id":"cmf9z8y7x6w5v4u3t2s1r0q9","flowId":"cmf1a2b3c4d5e6f7g8h9i0j1","contactPhone":"5564999978874","flowToken":"b7c1e4f2a9d84c6e8f0a1b2c3d4e5f60","externalMessageId":"wamid.HBgNNTU2NDk5OTc4ODc0FQIAERgSN0E5...","response":{"flow_token":"b7c1e4f2a9d84c6e8f0a1b2c3d4e5f60"},"submitted":[{"screen":"WELCOME_SCREEN","at":"2026-09-01T18:21:44.318Z","data":{"screen_0_nome":"Amanda","screen_0_nota":"9"},"omitted":null},{"screen":"COMENTARIO_SCREEN","at":"2026-09-01T18:22:03.907Z","data":null,"omitted":"DATA_TOO_LARGE"}],"media":[{"field":"photo_picker","fileName":"documento.jpg","mimeType":"image/jpeg","sizeBytes":184320,"status":"STORED","url":"https://media.pilotstatus.com.br/public/tenants/tenant_01HZX.../flow-media/8f2c1a4b9d.jpg"},{"field":"document_picker","fileName":"comprovante.pdf","mimeType":null,"sizeBytes":null,"status":"PENDING","url":"https://pilotstatus.com.br/api/flows/media/eyJ0IjoiY21xc2N4MXczIiwiayI6ImZvdG8ifQ.9f2c1a4b8e0d6c73"}],"receivedAt":"2026-09-01T18:22:11.000Z","expiresAt":"2026-10-01T18:22:11.000Z"}],"total":1,"page":1,"pageSize":30,"totalPages":1},"examples":{"Example":{"title":"Example","value":{"responses":[{"id":"cmf9z8y7x6w5v4u3t2s1r0q9","flowId":"cmf1a2b3c4d5e6f7g8h9i0j1","contactPhone":"5564999978874","flowToken":"b7c1e4f2a9d84c6e8f0a1b2c3d4e5f60","externalMessageId":"wamid.HBgNNTU2NDk5OTc4ODc0FQIAERgSN0E5...","response":{"flow_token":"b7c1e4f2a9d84c6e8f0a1b2c3d4e5f60"},"submitted":[{"screen":"WELCOME_SCREEN","at":"2026-09-01T18:21:44.318Z","data":{"screen_0_nome":"Amanda","screen_0_nota":"9"},"omitted":null},{"screen":"COMENTARIO_SCREEN","at":"2026-09-01T18:22:03.907Z","data":null,"omitted":"DATA_TOO_LARGE"}],"media":[{"field":"photo_picker","fileName":"documento.jpg","mimeType":"image/jpeg","sizeBytes":184320,"status":"STORED","url":"https://media.pilotstatus.com.br/public/tenants/tenant_01HZX.../flow-media/8f2c1a4b9d.jpg"},{"field":"document_picker","fileName":"comprovante.pdf","mimeType":null,"sizeBytes":null,"status":"PENDING","url":"https://pilotstatus.com.br/api/flows/media/eyJ0IjoiY21xc2N4MXczIiwiayI6ImZvdG8ifQ.9f2c1a4b8e0d6c73"}],"receivedAt":"2026-09-01T18:22:11.000Z","expiresAt":"2026-10-01T18:22:11.000Z"}],"total":1,"page":1,"pageSize":30,"totalPages":1}}},"exampleType":"examples"}},"exampleType":"examples"},"36c49890-4b3f-40d4-951a-3c1fcc9a7f1e":{"description":"Paginação profunda demais (`page` × `pageSize` além do teto)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Metade em português","uniqueKey":"error","typeLabel":"string"},"errorEN":{"type":"string","description":"Metade em inglês","uniqueKey":"errorEN","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"Paginação profunda demais: page × pageSize não pode passar de 10000.","errorEN":"Pagination too deep: page × pageSize must not exceed 10000.","code":"INVALID_PAGINATION"},"examples":{"Example":{"title":"Example","value":{"error":"Paginação profunda demais: page × pageSize não pode passar de 10000.","errorEN":"Pagination too deep: page × pageSize must not exceed 10000.","code":"INVALID_PAGINATION"}}},"exampleType":"examples"}},"exampleType":"examples"},"30f8cc68-7b9c-4435-bff0-6a21d7bc0583":{"description":"Header `x-api-key` / `x-api-key-id` ausente ou inválido","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"Unauthorized"},"examples":{"Example":{"title":"Example","value":{"error":"Unauthorized"}}},"exampleType":"examples"}},"exampleType":"examples"},"370d95c0-fa86-4585-a5c3-e66ced6b0e4d":{"description":"Chave com escopo de tenant usada em endpoint com escopo de número, ou o papel da chave não tem a permissão","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"Tenant-scoped keys cannot call number endpoints","code":"TENANT_SCOPE_NOT_ALLOWED"},"examples":{"Example":{"title":"Example","value":{"error":"Tenant-scoped keys cannot call number endpoints","code":"TENANT_SCOPE_NOT_ALLOWED"}}},"exampleType":"examples"}},"exampleType":"examples"},"b512ddb8-9ade-4058-be7b-f950d1e83e19":{"description":"Nenhum Flow com esse id dentro da WABA da própria chave. Nunca 403: um Flow de outro tenant é indistinguível de um que não existe, de propósito — um 403 confirmaria o id alheio a quem o adivinhou","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Metade em português","uniqueKey":"error","typeLabel":"string"},"errorEN":{"type":"string","description":"Metade em inglês","uniqueKey":"errorEN","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"Flow não encontrado para o número desta chave.","errorEN":"Flow not found for this key's number.","code":"FLOW_NOT_FOUND"},"examples":{"Example":{"title":"Example","value":{"error":"Flow não encontrado para o número desta chave.","errorEN":"Flow not found for this key's number.","code":"FLOW_NOT_FOUND"}}},"exampleType":"examples"}},"exampleType":"examples"},"04d1a508-776f-486e-b04f-53ce252c7335":{"description":"O número da chave não é Meta (API Oficial), ou não tem WABA associada","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Metade em português","uniqueKey":"error","typeLabel":"string"},"errorEN":{"type":"string","description":"Metade em inglês","uniqueKey":"errorEN","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"Flows existem apenas em números Meta (API Oficial). O número desta chave não é Meta ou não tem uma WABA associada — use uma chave de um número Meta.","errorEN":"Flows only exist on Meta (Cloud API) numbers. This key's number is not a Meta number, or has no WABA behind it — use a key bound to a Meta number.","code":"FLOW_REQUIRES_META_NUMBER"},"examples":{"Example":{"title":"Example","value":{"error":"Flows existem apenas em números Meta (API Oficial). O número desta chave não é Meta ou não tem uma WABA associada — use uma chave de um número Meta.","errorEN":"Flows only exist on Meta (Cloud API) numbers. This key's number is not a Meta number, or has no WABA behind it — use a key bound to a Meta number.","code":"FLOW_REQUIRES_META_NUMBER"}}},"exampleType":"examples"}},"exampleType":"examples"},"97eb3dcf-25c5-4812-9542-f0937fe10077":{"description":"Limite de taxa excedido","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"Too many requests"},"examples":{"Example":{"title":"Example","value":{"error":"Too many requests"}}},"exampleType":"examples"}},"exampleType":"examples"},"cfa62807-bc68-4b04-8dab-43bdef0c6292":{"description":"Erro interno. Nunca carrega a mensagem interna — essa fica no log","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Metade em português","uniqueKey":"error","typeLabel":"string"},"errorEN":{"type":"string","description":"Metade em inglês","uniqueKey":"errorEN","typeLabel":"string"},"code":{"type":"string","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"Erro interno do servidor.","errorEN":"Internal server error.","code":"INTERNAL_ERROR"},"examples":{"Example":{"title":"Example","value":{"error":"Erro interno do servidor.","errorEN":"Internal server error.","code":"INTERNAL_ERROR"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"a31d1d74-461a-4e47-a7cd-aa1b6a90c248":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Sua chave de API ps_","scopes":[],"schemeName":"apiKey"}},"40d1c058-9774-4a41-b5de-da67e113ac1e":{"apiKeyId":{"type":"apiKey","in":"header","name":"x-api-key-id","description":"Id da chave de API (alternativa ao x-api-key)","scopes":[],"schemeName":"apiKeyId"}}},"servers":{"1ba6474d-0921-4218-9fb0-3c32c889d4fc":{"url":"https://pilotstatus.com.br"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"Sua chave de API ps_","scopes":[],"schemeName":"apiKey"},"schema":{"title":"x-api-key","type":"string","description":"Sua chave de API ps_","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"x-api-key"}],"title":"apiKey"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key-id","description":"Id da chave de API (alternativa ao x-api-key)","scopes":[],"schemeName":"apiKeyId"},"schema":{"title":"x-api-key-id","type":"string","description":"Id da chave de API (alternativa ao x-api-key)","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKeyId","name":"x-api-key-id"}],"title":"apiKeyId"}]},"originalFileLocation":"openapi.pt.json"},"subdomain":"iaxp","siteName":"Pilot Status","title":"Listar respostas do Flow - Pilot Status","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/playground/flows/list-flow-responses","matchLevel":1},"pt-BR":{"href":"/pt-BR/playground/flows/list-flow-responses","matchLevel":0}}},"lastModified":"2026-10-31T13:22:51.483Z","originalFileLocation":"pt-BR/playground/flows/list-flow-responses.mdx","locale":"pt-BR"},"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=\"Os formulários que os clientes enviaram para UM Flow, os mais novos primeiro. O Flow é resolvido primeiro dentro da WABA da própria chave, e essa resolução é a única coisa que escopa o resto — um Flow de outra WABA (inclusive outra WABA do mesmo tenant) responde 404 e nenhuma resposta chega a ser lida. Respostas fora da janela de retenção são excluídas AQUI, não só pela tarefa de poda, para que ninguém leia um envio que a janela publicada diz ter sumido. contactPhone vem null quando o telefone já não é nosso para publicar. externalMessageId é o wamid da Meta e é NOMEADO como id de provedor de propósito — todo outro id desta superfície é local. notice: \u0026quot;FLOW_RESPONSES_WINDOW_TRUNCATED\u0026quot; aparece na página quando o Flow cunhou mais envios do que uma requisição correlaciona (teto de 10.000 sessões). Uma resposta curta que não diz que é curta é o que faz o cliente concluir que perdeu envios. Permissão flows:read. Exige chave com escopo de número. Uma chave de tenant precisa nomear o número no header x-whatsapp-number-id, senão recebe 403 TENANT_SCOPE_NOT_ALLOWED. media[] leva os arquivos que a pessoa ANEXOU dentro do formulário (PhotoPicker / DocumentPicker). Eles NÃO estão em response: um picker exige data_exchange, portanto as referências chegam no pedido que o nosso endpoint decifra — uma troca HTTP diferente do nfm_reply que produziu a linha — e este array é a cópia re-hospedada, ligada pelo flowToken. É o único lugar onde um chamador alcança os bytes: a Meta apaga o original após 20 dias. É SEMPRE um array, [] quando nada foi anexado. url é um link estável nosso e está presente assim que a linha existe, INCLUSIVE enquanto status for \u0026quot;PENDING\u0026quot;. Buscá-lo antes de a re-hospedagem terminar não dá 404: a rota segura o pedido enquanto espera pelo arquivo e então o serve, toda busca posterior é um redirect, e uma espera que estoura responde 404 com o cabeçalho Retry-After. O valor não muda depois de os bytes chegarem, portanto é seguro guardá-lo logo na chegada, e o status (PENDING/STORED/FAILED) continua sendo como o chamador sabe se eles chegaram. É a ordem que justifica esse link: o evento é emitido assim que o envio é guardado e a re-hospedagem roda depois dele, portanto o anúncio precede normalmente os bytes. url só é nulo quando a instalação não tem segredo de assinatura configurado (aí volta ao comportamento antigo, a URL direta do objeto assim que ficar STORED), quando a Meta não enviou media_id para assinar uma identidade em cima, ou num número RELAY_ONLY onde nada foi guardado — nunca apenas porque a transferência ainda não terminou. Trate-o como opaco: busque, nunca construa um. mimeType é farejado dos bytes decifrados e nunca do nome do arquivo, e ele e sizeBytes são null até o arquivo ficar guardado. Nem cdn_url nem material de cifra são alguma vez publicados. submitted[] é o que a pessoa de fato ESCREVEU, tela a tela. ⛔ Num Flow data_exchange é o ÚNICO lugar onde essas respostas existem: ali o response é o nfm_reply da Meta, um envelope que leva o flow_token e mais nada — quem abre o response num Flow desses encontra uma sala vazia e conclui que o envio se perdeu. Num Flow SIMPLES, sem endpoint, as respostas CHEGAM no response e o submitted vem []. Cada entrada é um pedido data_exchange que a META NOS ENVIOU: screen (a tela em que a pessoa estava, ou null), at (ISO 8601), data (o objeto já parseado) e omitted. Nunca é o que o SEU endpoint respondeu — o extension_message_response não é publicado em lugar nenhum do Pilot Status. E só as trocas data_exchange são capturadas: o INIT devolve o estado que NÓS semeamos quando o Flow foi enviado, e o BACK é navegação, portanto esta lista é legitimamente MAIS CURTA do que o tráfego que o seu próprio endpoint viu. Essa diferença não é perda. NESTE endpoint o submitted é sempre um array e nunca null — [] tanto quando não há nada como quando o número não guarda conteúdo de cliente, porque \u0026quot;nada foi capturado\u0026quot; e \u0026quot;não conseguimos olhar\u0026quot; seriam senão o mesmo valor. (No webhook flow.response_received é o contrário, null e nunca [], porque lá o redator só apaga um campo que tenha algo dentro.) Nada é truncado em silêncio: ou a entrada leva data com omitted: null, ou leva data: null e diz o PORQUÊ. DATA_TOO_LARGE é uma troca grande demais, que mantém a linha e o lugar dela na sequência — o teto que ela passou conta-se em BYTES, não em caracteres, portanto texto com acentos chega lá antes do que o comprimento sugere. LIMIT_REACHED é o teto de 50 trocas por formulário: uma entrada final de marcação, e nada depois dela ficou guardado. UNREADABLE é uma troca que ficou guardada mas cujo conteúdo não se conseguiu reler. Não há terceira forma. A lista só cresce e nunca é de-duplicada: quem volta atrás numa tela e responde de novo produz uma segunda entrada GENUÍNA, e é o at que distingue duas passagens debaixo do mesmo flowToken. As trocas ficam 30 dias + 1 — um dia a MAIS do que a linha da resposta — porque a troca é capturada enquanto a pessoa ainda está preenchendo, minutos ANTES do envio que cria a linha; com uma janela igual elas expirariam primeiro, e uma resposta ainda dentro da retenção dela publicaria submitted: [] nos seus últimos minutos. Num número com piiMode: \u0026quot;RELAY_ONLY\u0026quot; não fica aqui nada: nem uma entrada ocultada, nenhuma entrada.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Pilot Status\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/svg+xml\" sizes=\"180x180\" href=\"https://media.brand.dev/75fcb4cf-8fa0-40cb-b428-c03cb409236b.svg\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"32x32\" href=\"https://media.brand.dev/75fcb4cf-8fa0-40cb-b428-c03cb409236b.svg\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"16x16\" href=\"https://media.brand.dev/75fcb4cf-8fa0-40cb-b428-c03cb409236b.svg\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/svg+xml\" href=\"https://media.brand.dev/75fcb4cf-8fa0-40cb-b428-c03cb409236b.svg\">\u003cmeta data-mint-head property=\"og:title\" content=\"Listar respostas do Flow - Pilot Status\">\u003cmeta data-mint-head property=\"og:description\" content=\"Os formulários que os clientes enviaram para UM Flow, os mais novos primeiro. O Flow é resolvido primeiro dentro da WABA da própria chave, e essa resolução é a única coisa que escopa o resto — um Flow de outra WABA (inclusive outra WABA do mesmo tenant) responde 404 e nenhuma resposta chega a ser lida. Respostas fora da janela de retenção são excluídas AQUI, não só pela tarefa de poda, para que ninguém leia um envio que a janela publicada diz ter sumido. contactPhone vem null quando o telefone já não é nosso para publicar. externalMessageId é o wamid da Meta e é NOMEADO como id de provedor de propósito — todo outro id desta superfície é local. notice: \u0026quot;FLOW_RESPONSES_WINDOW_TRUNCATED\u0026quot; aparece na página quando o Flow cunhou mais envios do que uma requisição correlaciona (teto de 10.000 sessões). Uma resposta curta que não diz que é curta é o que faz o cliente concluir que perdeu envios. Permissão flows:read. Exige chave com escopo de número. Uma chave de tenant precisa nomear o número no header x-whatsapp-number-id, senão recebe 403 TENANT_SCOPE_NOT_ALLOWED. media[] leva os arquivos que a pessoa ANEXOU dentro do formulário (PhotoPicker / DocumentPicker). Eles NÃO estão em response: um picker exige data_exchange, portanto as referências chegam no pedido que o nosso endpoint decifra — uma troca HTTP diferente do nfm_reply que produziu a linha — e este array é a cópia re-hospedada, ligada pelo flowToken. É o único lugar onde um chamador alcança os bytes: a Meta apaga o original após 20 dias. É SEMPRE um array, [] quando nada foi anexado. url é um link estável nosso e está presente assim que a linha existe, INCLUSIVE enquanto status for \u0026quot;PENDING\u0026quot;. Buscá-lo antes de a re-hospedagem terminar não dá 404: a rota segura o pedido enquanto espera pelo arquivo e então o serve, toda busca posterior é um redirect, e uma espera que estoura responde 404 com o cabeçalho Retry-After. O valor não muda depois de os bytes chegarem, portanto é seguro guardá-lo logo na chegada, e o status (PENDING/STORED/FAILED) continua sendo como o chamador sabe se eles chegaram. É a ordem que justifica esse link: o evento é emitido assim que o envio é guardado e a re-hospedagem roda depois dele, portanto o anúncio precede normalmente os bytes. url só é nulo quando a instalação não tem segredo de assinatura configurado (aí volta ao comportamento antigo, a URL direta do objeto assim que ficar STORED), quando a Meta não enviou media_id para assinar uma identidade em cima, ou num número RELAY_ONLY onde nada foi guardado — nunca apenas porque a transferência ainda não terminou. Trate-o como opaco: busque, nunca construa um. mimeType é farejado dos bytes decifrados e nunca do nome do arquivo, e ele e sizeBytes são null até o arquivo ficar guardado. Nem cdn_url nem material de cifra são alguma vez publicados. submitted[] é o que a pessoa de fato ESCREVEU, tela a tela. ⛔ Num Flow data_exchange é o ÚNICO lugar onde essas respostas existem: ali o response é o nfm_reply da Meta, um envelope que leva o flow_token e mais nada — quem abre o response num Flow desses encontra uma sala vazia e conclui que o envio se perdeu. Num Flow SIMPLES, sem endpoint, as respostas CHEGAM no response e o submitted vem []. Cada entrada é um pedido data_exchange que a META NOS ENVIOU: screen (a tela em que a pessoa estava, ou null), at (ISO 8601), data (o objeto já parseado) e omitted. Nunca é o que o SEU endpoint respondeu — o extension_message_response não é publicado em lugar nenhum do Pilot Status. E só as trocas data_exchange são capturadas: o INIT devolve o estado que NÓS semeamos quando o Flow foi enviado, e o BACK é navegação, portanto esta lista é legitimamente MAIS CURTA do que o tráfego que o seu próprio endpoint viu. Essa diferença não é perda. NESTE endpoint o submitted é sempre um array e nunca null — [] tanto quando não há nada como quando o número não guarda conteúdo de cliente, porque \u0026quot;nada foi capturado\u0026quot; e \u0026quot;não conseguimos olhar\u0026quot; seriam senão o mesmo valor. (No webhook flow.response_received é o contrário, null e nunca [], porque lá o redator só apaga um campo que tenha algo dentro.) Nada é truncado em silêncio: ou a entrada leva data com omitted: null, ou leva data: null e diz o PORQUÊ. DATA_TOO_LARGE é uma troca grande demais, que mantém a linha e o lugar dela na sequência — o teto que ela passou conta-se em BYTES, não em caracteres, portanto texto com acentos chega lá antes do que o comprimento sugere. LIMIT_REACHED é o teto de 50 trocas por formulário: uma entrada final de marcação, e nada depois dela ficou guardado. UNREADABLE é uma troca que ficou guardada mas cujo conteúdo não se conseguiu reler. Não há terceira forma. A lista só cresce e nunca é de-duplicada: quem volta atrás numa tela e responde de novo produz uma segunda entrada GENUÍNA, e é o at que distingue duas passagens debaixo do mesmo flowToken. As trocas ficam 30 dias + 1 — um dia a MAIS do que a linha da resposta — porque a troca é capturada enquanto a pessoa ainda está preenchendo, minutos ANTES do envio que cria a linha; com uma janela igual elas expirariam primeiro, e uma resposta ainda dentro da retenção dela publicaria submitted: [] nos seus últimos minutos. Num número com piiMode: \u0026quot;RELAY_ONLY\u0026quot; não fica aqui nada: nem uma entrada ocultada, nenhuma entrada.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Pilot Status\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.pilotstatus.com.br/pt-BR/playground/flows/list-flow-responses\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://iaxp.mintlify.app/_mintlify/api/og/v2?division=Flows\u0026amp;title=Listar+respostas+do+Flow\u0026amp;description=Os+formul%C3%A1rios+que+os+clientes+enviaram+para+UM+Flow%2C+os+mais+novos+primeiro.+O+Flow+%C3%A9+resolvido+primeiro+dentro+da+WABA+da+pr%C3%B3pria+chave%2C+e+essa+resolu%C3%A7%C3%A3o+%C3%A9+a+\u0026amp;theme=35ef0efd94d4b104966e83c5\u0026amp;signature=b8524dd130a2d309a8946ead67a8dff9daaf265b543d25f502e554a5f43b635b\">\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=\"Listar respostas do Flow - Pilot Status\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Os formulários que os clientes enviaram para UM Flow, os mais novos primeiro. O Flow é resolvido primeiro dentro da WABA da própria chave, e essa resolução é a única coisa que escopa o resto — um Flow de outra WABA (inclusive outra WABA do mesmo tenant) responde 404 e nenhuma resposta chega a ser lida. Respostas fora da janela de retenção são excluídas AQUI, não só pela tarefa de poda, para que ninguém leia um envio que a janela publicada diz ter sumido. contactPhone vem null quando o telefone já não é nosso para publicar. externalMessageId é o wamid da Meta e é NOMEADO como id de provedor de propósito — todo outro id desta superfície é local. notice: \u0026quot;FLOW_RESPONSES_WINDOW_TRUNCATED\u0026quot; aparece na página quando o Flow cunhou mais envios do que uma requisição correlaciona (teto de 10.000 sessões). Uma resposta curta que não diz que é curta é o que faz o cliente concluir que perdeu envios. Permissão flows:read. Exige chave com escopo de número. Uma chave de tenant precisa nomear o número no header x-whatsapp-number-id, senão recebe 403 TENANT_SCOPE_NOT_ALLOWED. media[] leva os arquivos que a pessoa ANEXOU dentro do formulário (PhotoPicker / DocumentPicker). Eles NÃO estão em response: um picker exige data_exchange, portanto as referências chegam no pedido que o nosso endpoint decifra — uma troca HTTP diferente do nfm_reply que produziu a linha — e este array é a cópia re-hospedada, ligada pelo flowToken. É o único lugar onde um chamador alcança os bytes: a Meta apaga o original após 20 dias. É SEMPRE um array, [] quando nada foi anexado. url é um link estável nosso e está presente assim que a linha existe, INCLUSIVE enquanto status for \u0026quot;PENDING\u0026quot;. Buscá-lo antes de a re-hospedagem terminar não dá 404: a rota segura o pedido enquanto espera pelo arquivo e então o serve, toda busca posterior é um redirect, e uma espera que estoura responde 404 com o cabeçalho Retry-After. O valor não muda depois de os bytes chegarem, portanto é seguro guardá-lo logo na chegada, e o status (PENDING/STORED/FAILED) continua sendo como o chamador sabe se eles chegaram. É a ordem que justifica esse link: o evento é emitido assim que o envio é guardado e a re-hospedagem roda depois dele, portanto o anúncio precede normalmente os bytes. url só é nulo quando a instalação não tem segredo de assinatura configurado (aí volta ao comportamento antigo, a URL direta do objeto assim que ficar STORED), quando a Meta não enviou media_id para assinar uma identidade em cima, ou num número RELAY_ONLY onde nada foi guardado — nunca apenas porque a transferência ainda não terminou. Trate-o como opaco: busque, nunca construa um. mimeType é farejado dos bytes decifrados e nunca do nome do arquivo, e ele e sizeBytes são null até o arquivo ficar guardado. Nem cdn_url nem material de cifra são alguma vez publicados. submitted[] é o que a pessoa de fato ESCREVEU, tela a tela. ⛔ Num Flow data_exchange é o ÚNICO lugar onde essas respostas existem: ali o response é o nfm_reply da Meta, um envelope que leva o flow_token e mais nada — quem abre o response num Flow desses encontra uma sala vazia e conclui que o envio se perdeu. Num Flow SIMPLES, sem endpoint, as respostas CHEGAM no response e o submitted vem []. Cada entrada é um pedido data_exchange que a META NOS ENVIOU: screen (a tela em que a pessoa estava, ou null), at (ISO 8601), data (o objeto já parseado) e omitted. Nunca é o que o SEU endpoint respondeu — o extension_message_response não é publicado em lugar nenhum do Pilot Status. E só as trocas data_exchange são capturadas: o INIT devolve o estado que NÓS semeamos quando o Flow foi enviado, e o BACK é navegação, portanto esta lista é legitimamente MAIS CURTA do que o tráfego que o seu próprio endpoint viu. Essa diferença não é perda. NESTE endpoint o submitted é sempre um array e nunca null — [] tanto quando não há nada como quando o número não guarda conteúdo de cliente, porque \u0026quot;nada foi capturado\u0026quot; e \u0026quot;não conseguimos olhar\u0026quot; seriam senão o mesmo valor. (No webhook flow.response_received é o contrário, null e nunca [], porque lá o redator só apaga um campo que tenha algo dentro.) Nada é truncado em silêncio: ou a entrada leva data com omitted: null, ou leva data: null e diz o PORQUÊ. DATA_TOO_LARGE é uma troca grande demais, que mantém a linha e o lugar dela na sequência — o teto que ela passou conta-se em BYTES, não em caracteres, portanto texto com acentos chega lá antes do que o comprimento sugere. LIMIT_REACHED é o teto de 50 trocas por formulário: uma entrada final de marcação, e nada depois dela ficou guardado. UNREADABLE é uma troca que ficou guardada mas cujo conteúdo não se conseguiu reler. Não há terceira forma. A lista só cresce e nunca é de-duplicada: quem volta atrás numa tela e responde de novo produz uma segunda entrada GENUÍNA, e é o at que distingue duas passagens debaixo do mesmo flowToken. As trocas ficam 30 dias + 1 — um dia a MAIS do que a linha da resposta — porque a troca é capturada enquanto a pessoa ainda está preenchendo, minutos ANTES do envio que cria a linha; com uma janela igual elas expirariam primeiro, e uma resposta ainda dentro da retenção dela publicaria submitted: [] nos seus últimos minutos. Num número com piiMode: \u0026quot;RELAY_ONLY\u0026quot; não fica aqui nada: nem uma entrada ocultada, nenhuma entrada.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://iaxp.mintlify.app/_mintlify/api/og/v2?division=Flows\u0026amp;title=Listar+respostas+do+Flow\u0026amp;description=Os+formul%C3%A1rios+que+os+clientes+enviaram+para+UM+Flow%2C+os+mais+novos+primeiro.+O+Flow+%C3%A9+resolvido+primeiro+dentro+da+WABA+da+pr%C3%B3pria+chave%2C+e+essa+resolu%C3%A7%C3%A3o+%C3%A9+a+\u0026amp;theme=35ef0efd94d4b104966e83c5\u0026amp;signature=b8524dd130a2d309a8946ead67a8dff9daaf265b543d25f502e554a5f43b635b\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/iaxp/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Pilot Status\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#19E17D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.pilotstatus.com.br/pt-BR/playground/flows/list-flow-responses\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/pt-BR/playground/flows/list-flow-responses.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://docs.pilotstatus.com.br/pt-BR/playground/flows/list-flow-responses\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.pilotstatus.com.br/playground/flows/list-flow-responses\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.pilotstatus.com.br/playground/flows/list-flow-responses\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.pilotstatus.com.br/#organization\",\"name\":\"Pilot Status\",\"url\":\"https://docs.pilotstatus.com.br\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/iaxp/bFY4-GIf_icRI6gv/images/wordmark-light.svg?fit=max\u0026auto=format\u0026n=bFY4-GIf_icRI6gv\u0026q=85\u0026s=956be78168490eaf8ae153ff8c58b4a7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.pilotstatus.com.br#website\",\"name\":\"Pilot Status\",\"url\":\"https://docs.pilotstatus.com.br\",\"publisher\":{\"@id\":\"https://docs.pilotstatus.com.br/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.pilotstatus.com.br/pt-BR/playground/flows/list-flow-responses#webpage\",\"url\":\"https://docs.pilotstatus.com.br/pt-BR/playground/flows/list-flow-responses\",\"name\":\"Listar respostas do Flow\",\"description\":\"Os formulários que os clientes enviaram para UM Flow, os mais novos primeiro. O Flow é resolvido primeiro dentro da WABA da própria chave, e essa resolução é a única coisa que escopa o resto — um Flow de outra WABA (inclusive outra WABA do mesmo tenant) responde 404 e nenhuma resposta chega a ser lida. Respostas fora da janela de retenção são excluídas AQUI, não só pela tarefa de poda, para que ninguém leia um envio que a janela publicada diz ter sumido. contactPhone vem null quando o telefone já não é nosso para publicar. externalMessageId é o wamid da Meta e é NOMEADO como id de provedor de propósito — todo outro id desta superfície é local. notice: \\\"FLOW_RESPONSES_WINDOW_TRUNCATED\\\" aparece na página quando o Flow cunhou mais envios do que uma requisição correlaciona (teto de 10.000 sessões). Uma resposta curta que não diz que é curta é o que faz o cliente concluir que perdeu envios. Permissão flows:read. Exige chave com escopo de número. Uma chave de tenant precisa nomear o número no header x-whatsapp-number-id, senão recebe 403 TENANT_SCOPE_NOT_ALLOWED. media[] leva os arquivos que a pessoa ANEXOU dentro do formulário (PhotoPicker / DocumentPicker). Eles NÃO estão em response: um picker exige data_exchange, portanto as referências chegam no pedido que o nosso endpoint decifra — uma troca HTTP diferente do nfm_reply que produziu a linha — e este array é a cópia re-hospedada, ligada pelo flowToken. É o único lugar onde um chamador alcança os bytes: a Meta apaga o original após 20 dias. É SEMPRE um array, [] quando nada foi anexado. url é um link estável nosso e está presente assim que a linha existe, INCLUSIVE enquanto status for \\\"PENDING\\\". Buscá-lo antes de a re-hospedagem terminar não dá 404: a rota segura o pedido enquanto espera pelo arquivo e então o serve, toda busca posterior é um redirect, e uma espera que estoura responde 404 com o cabeçalho Retry-After. O valor não muda depois de os bytes chegarem, portanto é seguro guardá-lo logo na chegada, e o status (PENDING/STORED/FAILED) continua sendo como o chamador sabe se eles chegaram. É a ordem que justifica esse link: o evento é emitido assim que o envio é guardado e a re-hospedagem roda depois dele, portanto o anúncio precede normalmente os bytes. url só é nulo quando a instalação não tem segredo de assinatura configurado (aí volta ao comportamento antigo, a URL direta do objeto assim que ficar STORED), quando a Meta não enviou media_id para assinar uma identidade em cima, ou num número RELAY_ONLY onde nada foi guardado — nunca apenas porque a transferência ainda não terminou. Trate-o como opaco: busque, nunca construa um. mimeType é farejado dos bytes decifrados e nunca do nome do arquivo, e ele e sizeBytes são null até o arquivo ficar guardado. Nem cdn_url nem material de cifra são alguma vez publicados. submitted[] é o que a pessoa de fato ESCREVEU, tela a tela. ⛔ Num Flow data_exchange é o ÚNICO lugar onde essas respostas existem: ali o response é o nfm_reply da Meta, um envelope que leva o flow_token e mais nada — quem abre o response num Flow desses encontra uma sala vazia e conclui que o envio se perdeu. Num Flow SIMPLES, sem endpoint, as respostas CHEGAM no response e o submitted vem []. Cada entrada é um pedido data_exchange que a META NOS ENVIOU: screen (a tela em que a pessoa estava, ou null), at (ISO 8601), data (o objeto já parseado) e omitted. Nunca é o que o SEU endpoint respondeu — o extension_message_response não é publicado em lugar nenhum do Pilot Status. E só as trocas data_exchange são capturadas: o INIT devolve o estado que NÓS semeamos quando o Flow foi enviado, e o BACK é navegação, portanto esta lista é legitimamente MAIS CURTA do que o tráfego que o seu próprio endpoint viu. Essa diferença não é perda. NESTE endpoint o submitted é sempre um array e nunca null — [] tanto quando não há nada como quando o número não guarda conteúdo de cliente, porque \\\"nada foi capturado\\\" e \\\"não conseguimos olhar\\\" seriam senão o mesmo valor. (No webhook flow.response_received é o contrário, null e nunca [], porque lá o redator só apaga um campo que tenha algo dentro.) Nada é truncado em silêncio: ou a entrada leva data com omitted: null, ou leva data: null e diz o PORQUÊ. DATA_TOO_LARGE é uma troca grande demais, que mantém a linha e o lugar dela na sequência — o teto que ela passou conta-se em BYTES, não em caracteres, portanto texto com acentos chega lá antes do que o comprimento sugere. LIMIT_REACHED é o teto de 50 trocas por formulário: uma entrada final de marcação, e nada depois dela ficou guardado. UNREADABLE é uma troca que ficou guardada mas cujo conteúdo não se conseguiu reler. Não há terceira forma. A lista só cresce e nunca é de-duplicada: quem volta atrás numa tela e responde de novo produz uma segunda entrada GENUÍNA, e é o at que distingue duas passagens debaixo do mesmo flowToken. As trocas ficam 30 dias + 1 — um dia a MAIS do que a linha da resposta — porque a troca é capturada enquanto a pessoa ainda está preenchendo, minutos ANTES do envio que cria a linha; com uma janela igual elas expirariam primeiro, e uma resposta ainda dentro da retenção dela publicaria submitted: [] nos seus últimos minutos. Num número com piiMode: \\\"RELAY_ONLY\\\" não fica aqui nada: nem uma entrada ocultada, nenhuma entrada.\",\"dateModified\":\"2026-10-31T13:22:51.483Z\",\"isPartOf\":{\"@id\":\"https://docs.pilotstatus.com.br#website\"},\"breadcrumb\":{\"@id\":\"https://docs.pilotstatus.com.br/pt-BR/playground/flows/list-flow-responses#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.pilotstatus.com.br/pt-BR/playground/flows/list-flow-responses#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.pilotstatus.com.br/pt-BR/playground/numbers/list-numbers\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flows\",\"item\":\"https://docs.pilotstatus.com.br/pt-BR/playground/flows/list-flows\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Listar respostas do Flow\",\"item\":\"https://docs.pilotstatus.com.br/pt-BR/playground/flows/list-flow-responses\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.pilotstatus.com.br/pt-BR/playground/flows/list-flow-responses#apireference\",\"headline\":\"Listar respostas do Flow\",\"name\":\"Listar respostas do Flow\",\"description\":\"Os formulários que os clientes enviaram para UM Flow, os mais novos primeiro. O Flow é resolvido primeiro dentro da WABA da própria chave, e essa resolução é a única coisa que escopa o resto — um Flow de outra WABA (inclusive outra WABA do mesmo tenant) responde 404 e nenhuma resposta chega a ser lida. Respostas fora da janela de retenção são excluídas AQUI, não só pela tarefa de poda, para que ninguém leia um envio que a janela publicada diz ter sumido. contactPhone vem null quando o telefone já não é nosso para publicar. externalMessageId é o wamid da Meta e é NOMEADO como id de provedor de propósito — todo outro id desta superfície é local. notice: \\\"FLOW_RESPONSES_WINDOW_TRUNCATED\\\" aparece na página quando o Flow cunhou mais envios do que uma requisição correlaciona (teto de 10.000 sessões). Uma resposta curta que não diz que é curta é o que faz o cliente concluir que perdeu envios. Permissão flows:read. Exige chave com escopo de número. Uma chave de tenant precisa nomear o número no header x-whatsapp-number-id, senão recebe 403 TENANT_SCOPE_NOT_ALLOWED. media[] leva os arquivos que a pessoa ANEXOU dentro do formulário (PhotoPicker / DocumentPicker). Eles NÃO estão em response: um picker exige data_exchange, portanto as referências chegam no pedido que o nosso endpoint decifra — uma troca HTTP diferente do nfm_reply que produziu a linha — e este array é a cópia re-hospedada, ligada pelo flowToken. É o único lugar onde um chamador alcança os bytes: a Meta apaga o original após 20 dias. É SEMPRE um array, [] quando nada foi anexado. url é um link estável nosso e está presente assim que a linha existe, INCLUSIVE enquanto status for \\\"PENDING\\\". Buscá-lo antes de a re-hospedagem terminar não dá 404: a rota segura o pedido enquanto espera pelo arquivo e então o serve, toda busca posterior é um redirect, e uma espera que estoura responde 404 com o cabeçalho Retry-After. O valor não muda depois de os bytes chegarem, portanto é seguro guardá-lo logo na chegada, e o status (PENDING/STORED/FAILED) continua sendo como o chamador sabe se eles chegaram. É a ordem que justifica esse link: o evento é emitido assim que o envio é guardado e a re-hospedagem roda depois dele, portanto o anúncio precede normalmente os bytes. url só é nulo quando a instalação não tem segredo de assinatura configurado (aí volta ao comportamento antigo, a URL direta do objeto assim que ficar STORED), quando a Meta não enviou media_id para assinar uma identidade em cima, ou num número RELAY_ONLY onde nada foi guardado — nunca apenas porque a transferência ainda não terminou. Trate-o como opaco: busque, nunca construa um. mimeType é farejado dos bytes decifrados e nunca do nome do arquivo, e ele e sizeBytes são null até o arquivo ficar guardado. Nem cdn_url nem material de cifra são alguma vez publicados. submitted[] é o que a pessoa de fato ESCREVEU, tela a tela. ⛔ Num Flow data_exchange é o ÚNICO lugar onde essas respostas existem: ali o response é o nfm_reply da Meta, um envelope que leva o flow_token e mais nada — quem abre o response num Flow desses encontra uma sala vazia e conclui que o envio se perdeu. Num Flow SIMPLES, sem endpoint, as respostas CHEGAM no response e o submitted vem []. Cada entrada é um pedido data_exchange que a META NOS ENVIOU: screen (a tela em que a pessoa estava, ou null), at (ISO 8601), data (o objeto já parseado) e omitted. Nunca é o que o SEU endpoint respondeu — o extension_message_response não é publicado em lugar nenhum do Pilot Status. E só as trocas data_exchange são capturadas: o INIT devolve o estado que NÓS semeamos quando o Flow foi enviado, e o BACK é navegação, portanto esta lista é legitimamente MAIS CURTA do que o tráfego que o seu próprio endpoint viu. Essa diferença não é perda. NESTE endpoint o submitted é sempre um array e nunca null — [] tanto quando não há nada como quando o número não guarda conteúdo de cliente, porque \\\"nada foi capturado\\\" e \\\"não conseguimos olhar\\\" seriam senão o mesmo valor. (No webhook flow.response_received é o contrário, null e nunca [], porque lá o redator só apaga um campo que tenha algo dentro.) Nada é truncado em silêncio: ou a entrada leva data com omitted: null, ou leva data: null e diz o PORQUÊ. DATA_TOO_LARGE é uma troca grande demais, que mantém a linha e o lugar dela na sequência — o teto que ela passou conta-se em BYTES, não em caracteres, portanto texto com acentos chega lá antes do que o comprimento sugere. LIMIT_REACHED é o teto de 50 trocas por formulário: uma entrada final de marcação, e nada depois dela ficou guardado. UNREADABLE é uma troca que ficou guardada mas cujo conteúdo não se conseguiu reler. Não há terceira forma. A lista só cresce e nunca é de-duplicada: quem volta atrás numa tela e responde de novo produz uma segunda entrada GENUÍNA, e é o at que distingue duas passagens debaixo do mesmo flowToken. As trocas ficam 30 dias + 1 — um dia a MAIS do que a linha da resposta — porque a troca é capturada enquanto a pessoa ainda está preenchendo, minutos ANTES do envio que cria a linha; com uma janela igual elas expirariam primeiro, e uma resposta ainda dentro da retenção dela publicaria submitted: [] nos seus últimos minutos. Num número com piiMode: \\\"RELAY_ONLY\\\" não fica aqui nada: nem uma entrada ocultada, nenhuma entrada.\",\"url\":\"https://docs.pilotstatus.com.br/pt-BR/playground/flows/list-flow-responses\",\"mainEntityOfPage\":{\"@id\":\"https://docs.pilotstatus.com.br/pt-BR/playground/flows/list-flow-responses#webpage\"},\"dateModified\":\"2026-10-31T13:22:51.483Z\",\"publisher\":{\"@id\":\"https://docs.pilotstatus.com.br/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.pilotstatus.com.br#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Pilot Status\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Pilot Status","nav":{"global":null,"languages":[{"language":"en","pages":[{"title":"en","href":"/playground/flows/list-flow-responses"}]},{"language":"pt-BR","navbar":{"links":[{"href":"https://wa.me/5585984387245?text=Ol%C3%A1%21%20Vim%20pela%20documenta%C3%A7%C3%A3o%20da%20Pilot%20Status%20e%20preciso%20de%20suporte.","label":"Suporte"}],"primary":{"type":"button","label":"Comece grátis","href":"https://pilotstatus.com.br"}},"tabs":[{"tab":"Documentação","pages":[{"title":"Documentação","href":"/pt-BR"}]},{"tab":"Referência da API","pages":[{"title":"Referência da API","href":"/pt-BR/api/overview"}]},{"tab":"Playground","groups":[{"group":"Endpoints","pages":[{"group":"Números","pages":[{"title":"Listar números","sidebarTitle":"Listar números","openapi":"openapi.pt.json GET /v1/numbers","href":"/pt-BR/playground/numbers/list-numbers"},{"title":"Criar número (PILOT_STATUS)","sidebarTitle":"Criar número","openapi":"openapi.pt.json POST /v1/numbers","href":"/pt-BR/playground/numbers/create-number-pilot-status"},{"title":"Pareamento remoto (link de conexão)","sidebarTitle":"Pareamento remoto","openapi":"openapi.pt.json POST /v1/numbers/remote-pairing","href":"/pt-BR/playground/numbers/remote-pairing-connection-link"},{"title":"Remover número","sidebarTitle":"Remover número","openapi":"openapi.pt.json DELETE /v1/numbers/{id}","href":"/pt-BR/playground/numbers/delete-number"},{"title":"Restaurar número","sidebarTitle":"Restaurar número","openapi":"openapi.pt.json POST /v1/numbers/{id}/restore","href":"/pt-BR/playground/numbers/restore-number"},{"title":"Purgar número","sidebarTitle":"Purgar número","openapi":"openapi.pt.json DELETE /v1/numbers/{id}/purge","href":"/pt-BR/playground/numbers/purge-number"},{"title":"Status de conexão do número","sidebarTitle":"Status de conexão do número","openapi":"openapi.pt.json GET /v1/numbers/{id}/status","href":"/pt-BR/playground/numbers/number-connection-status"},{"title":"Reconectar número (QR / pairing)","sidebarTitle":"Reconectar número","openapi":"openapi.pt.json GET /v1/numbers/{id}/connect","href":"/pt-BR/playground/numbers/reconnect-number-qr-pairing"},{"title":"Desconectar Instância WhatsApp","openapi":"openapi.pt.json POST /v1/numbers/{id}/logout","href":"/pt-BR/playground/numbers/logout-instance"},{"title":"Pagar número extra","sidebarTitle":"Pagar número extra","openapi":"openapi.pt.json POST /v1/numbers/{id}/pay","href":"/pt-BR/playground/numbers/pay-extra-number-charge"},{"title":"Atualizar número (privacidade + settings)","sidebarTitle":"Atualizar número","openapi":"openapi.pt.json PATCH /v1/numbers/{id}","href":"/pt-BR/playground/numbers/update-number"}]},{"group":"Meta","pages":[{"title":"Criar número Meta (Cloud API)","sidebarTitle":"Criar número Meta","openapi":"openapi.pt.json POST /v1/numbers/meta","href":"/pt-BR/playground/numbers/create-meta-number-cloud-api"},{"title":"Concluir Embedded Signup (Meta)","sidebarTitle":"Concluir Embedded Signup","openapi":"openapi.pt.json POST /v1/meta-embedded/{token}/complete","href":"/pt-BR/playground/meta-onboarding/complete-embedded-signup-meta"},{"title":"Obter número (detalhes Meta)","sidebarTitle":"Obter número","openapi":"openapi.pt.json GET /v1/numbers/{id}","href":"/pt-BR/playground/numbers/get-number-meta-details"},{"title":"Baixar mídia (Meta)","sidebarTitle":"Baixar mídia","openapi":"openapi.pt.json GET /v1/media/{mediaId}","href":"/pt-BR/playground/media/download-media-meta"}]},{"group":"Assinatura","pages":[{"title":"Prévia de comprar número extra (On Demand)","sidebarTitle":"Prévia de comprar número ex…","openapi":"openapi.pt.json GET /v1/subscription/extra-numbers","href":"/pt-BR/playground/subscription/preview-buying-an-extra-number-on-demand"},{"title":"Comprar número extra (On Demand)","sidebarTitle":"Comprar número extra","openapi":"openapi.pt.json POST /v1/subscription/extra-numbers","href":"/pt-BR/playground/subscription/buy-an-extra-number-on-demand"},{"title":"Remover número extra (On Demand)","sidebarTitle":"Remover número extra","openapi":"openapi.pt.json DELETE /v1/subscription/extra-numbers","href":"/pt-BR/playground/subscription/remove-an-extra-number-on-demand"}]},{"group":"Cobrança","pages":[{"title":"Recarga da carteira (cartão ou Pix) / adicionar cartão","sidebarTitle":"Recarga / adicionar cartão","openapi":"openapi.pt.json POST /v1/billing/checkout","href":"/pt-BR/playground/billing/generate-checkout-link-stripe"},{"title":"Consultar um pedido de recarga","sidebarTitle":"Consultar um pedido de recarga","openapi":"openapi.pt.json GET /v1/billing/topups/{id}","href":"/pt-BR/playground/billing/get-topup"},{"title":"Iniciar o salvamento de cartão (Stripe Elements)","sidebarTitle":"Iniciar o salvamento de cartão (Stripe Elements)","openapi":"openapi.pt.json POST /v1/billing/card/setup-intent","href":"/pt-BR/playground/billing/create-card-setup-intent"},{"title":"Sincronizar o salvamento de cartão","sidebarTitle":"Sincronizar o salvamento de cartão","openapi":"openapi.pt.json POST /v1/billing/card/setup-intent/{id}/sync","href":"/pt-BR/playground/billing/sync-card-setup-intent"},{"title":"Iniciar uma recarga com cartão (Stripe Elements)","sidebarTitle":"Iniciar uma recarga com cartão (Stripe Elements)","openapi":"openapi.pt.json POST /v1/billing/payment-intents","href":"/pt-BR/playground/billing/create-payment-intent"},{"title":"Sincronizar uma recarga com cartão","sidebarTitle":"Sincronizar uma recarga com cartão","openapi":"openapi.pt.json POST /v1/billing/payment-intents/{id}/sync","href":"/pt-BR/playground/billing/sync-payment-intent"}]},{"group":"Preços","pages":[{"title":"Obter preços de mensagens","sidebarTitle":"Obter preços de mensagens","openapi":"openapi.pt.json GET /v1/meta/pricing","href":"/pt-BR/playground/pricing/get-message-rates"}]},{"group":"Mensagens","pages":[{"title":"Enviar mensagem","sidebarTitle":"Enviar mensagem","openapi":"openapi.pt.json POST /v1/messages/send","href":"/pt-BR/playground/messages/send-message"},{"title":"Obter mensagem","sidebarTitle":"Obter mensagem","openapi":"openapi.pt.json GET /v1/messages/{id}","href":"/pt-BR/playground/messages/get-message"},{"title":"Cancelar mensagens agendadas","sidebarTitle":"Cancelar mensagens agendadas","openapi":"openapi.pt.json DELETE /v1/messages/cancel","href":"/pt-BR/playground/messages/cancel-scheduled-messages"},{"title":"Status da janela de atendimento","sidebarTitle":"Status da janela de atendimento","openapi":"openapi.pt.json GET /v1/service-window","href":"/pt-BR/playground/messages/service-window"}]},{"group":"Conversas","pages":[{"title":"Listar conversas","sidebarTitle":"Listar conversas","openapi":"openapi.pt.json GET /v1/conversations","href":"/pt-BR/playground/conversations/list-conversations"},{"title":"Mensagens de grupos","sidebarTitle":"Mensagens de grupos","openapi":"openapi.pt.json GET /v1/messages/group","href":"/pt-BR/playground/conversations/group-messages"},{"title":"Histórico de mensagens","sidebarTitle":"Histórico de mensagens","openapi":"openapi.pt.json GET /v1/messages/history","href":"/pt-BR/playground/conversations/message-history"},{"title":"Mensagens não lidas","sidebarTitle":"Mensagens não lidas","openapi":"openapi.pt.json GET /v1/messages/unread","href":"/pt-BR/playground/conversations/unread-messages"},{"title":"Origens de anúncio (CTWA)","sidebarTitle":"Origens de anúncio","openapi":"openapi.pt.json GET /v1/referrals","href":"/pt-BR/playground/conversations/ad-referrals"},{"title":"Resumo de anúncios (CTWA)","sidebarTitle":"Resumo de anúncios","openapi":"openapi.pt.json GET /v1/referrals/summary","href":"/pt-BR/playground/conversations/ad-referral-summary"},{"title":"Leads do Meta Lead Ads","sidebarTitle":"Leads (Lead Ads)","openapi":"openapi.pt.json GET /v1/leads","href":"/pt-BR/playground/conversations/leads"},{"title":"Obter um lead (Lead Ads)","sidebarTitle":"Obter um lead","openapi":"openapi.pt.json GET /v1/leads/{id}","href":"/pt-BR/playground/conversations/get-lead"}]},{"group":"Anúncios","pages":[{"title":"Listar contas de anúncios","sidebarTitle":"Listar contas de anúncios","openapi":"openapi.pt.json GET /v1/ads/accounts","href":"/pt-BR/playground/ads/list-ad-accounts"},{"title":"Vincular conta de anúncios","sidebarTitle":"Vincular conta de anúncios","openapi":"openapi.pt.json POST /v1/ads/accounts","href":"/pt-BR/playground/ads/link-ad-account"},{"title":"Desvincular conta de anúncios","sidebarTitle":"Desvincular conta de anúncios","openapi":"openapi.pt.json DELETE /v1/ads/accounts/{adAccountId}","href":"/pt-BR/playground/ads/unlink-ad-account"},{"title":"Resumo por anúncio","sidebarTitle":"Resumo por anúncio","openapi":"openapi.pt.json GET /v1/ads/summary","href":"/pt-BR/playground/ads/ads-summary"},{"title":"Listar Páginas do Lead Ads","sidebarTitle":"Listar Páginas do Lead Ads","openapi":"openapi.pt.json GET /v1/lead-pages","href":"/pt-BR/playground/ads/list-lead-pages"},{"title":"Vincular Página do Lead Ads","sidebarTitle":"Vincular Página do Lead Ads","openapi":"openapi.pt.json POST /v1/lead-pages","href":"/pt-BR/playground/ads/link-lead-page"},{"title":"Mover Página do Lead Ads","sidebarTitle":"Mover Página do Lead Ads","openapi":"openapi.pt.json PATCH /v1/lead-pages/{pageLinkId}","href":"/pt-BR/playground/ads/move-lead-page"},{"title":"Desvincular Página do Lead Ads","sidebarTitle":"Desvincular Página do Lead Ads","openapi":"openapi.pt.json DELETE /v1/lead-pages/{pageLinkId}","href":"/pt-BR/playground/ads/unlink-lead-page"},{"title":"Ressincronizar Página do Lead Ads","sidebarTitle":"Ressincronizar Página do Lead Ads","openapi":"openapi.pt.json POST /v1/lead-pages/{pageLinkId}/resync","href":"/pt-BR/playground/ads/resync-lead-page"},{"title":"Listar Formulários Instantâneos","sidebarTitle":"Listar Formulários Instantâneos","openapi":"openapi.pt.json GET /v1/lead-pages/{pageLinkId}/forms","href":"/pt-BR/playground/ads/list-lead-forms"},{"title":"Configurar Formulário Instantâneo","sidebarTitle":"Configurar Formulário Instantâneo","openapi":"openapi.pt.json PUT /v1/lead-pages/{pageLinkId}/forms/{formId}","href":"/pt-BR/playground/ads/configure-lead-form"}]},{"group":"Grupos","pages":[{"title":"Listar grupos","sidebarTitle":"Listar grupos","openapi":"openapi.pt.json GET /v1/groups","href":"/pt-BR/playground/groups/list-groups"}]},{"group":"Canais","pages":[{"title":"Listar canais (newsletters)","sidebarTitle":"Listar canais","openapi":"openapi.pt.json GET /v1/newsletters","href":"/pt-BR/playground/newsletters/list-channels-newsletters"}]},{"group":"Templates","pages":[{"title":"Listar templates","sidebarTitle":"Listar templates","openapi":"openapi.pt.json GET /v1/templates","href":"/pt-BR/playground/templates/list-templates"},{"title":"Criar template","sidebarTitle":"Criar template","openapi":"openapi.pt.json POST /v1/templates","href":"/pt-BR/playground/templates/create-template"},{"title":"Atualizar template","sidebarTitle":"Atualizar template","openapi":"openapi.pt.json PUT /v1/templates/{id}","href":"/pt-BR/playground/templates/update-template"},{"title":"Obter template","sidebarTitle":"Obter template","openapi":"openapi.pt.json GET /v1/templates/{id}","href":"/pt-BR/playground/templates/get-template"},{"title":"Obter insights do template","sidebarTitle":"Obter insights do template","openapi":"openapi.pt.json GET /v1/templates/{id}/insights","href":"/pt-BR/playground/templates/get-template-insights"},{"title":"Remover template","sidebarTitle":"Remover template","openapi":"openapi.pt.json DELETE /v1/templates/{id}","href":"/pt-BR/playground/templates/delete-template"}]},{"group":"Flows","pages":[{"title":"Listar Flows","sidebarTitle":"Listar Flows","openapi":"openapi.pt.json GET /v1/flows","href":"/pt-BR/playground/flows/list-flows"},{"title":"Criar ou clonar Flow","sidebarTitle":"Criar ou clonar Flow","openapi":"openapi.pt.json POST /v1/flows","href":"/pt-BR/playground/flows/create-flow"},{"title":"Atualizar Flow","sidebarTitle":"Atualizar Flow","openapi":"openapi.pt.json PATCH /v1/flows/{id}","href":"/pt-BR/playground/flows/update-flow"},{"title":"Apagar Flow","sidebarTitle":"Apagar Flow","openapi":"openapi.pt.json DELETE /v1/flows/{id}","href":"/pt-BR/playground/flows/delete-flow"},{"title":"Subir o Flow JSON","sidebarTitle":"Subir o Flow JSON","openapi":"openapi.pt.json POST /v1/flows/{id}/json","href":"/pt-BR/playground/flows/upload-flow-json"},{"title":"Ver a chave de endpoint do Flow","sidebarTitle":"Ver a chave de endpoint do Flow","openapi":"openapi.pt.json GET /v1/numbers/{id}/flow-endpoint-key","href":"/pt-BR/playground/numbers/get-flow-endpoint-key"},{"title":"Gerar ou importar a chave de endpoint do Flow","sidebarTitle":"Gerar ou importar a chave de endpoint do Flow","openapi":"openapi.pt.json POST /v1/numbers/{id}/flow-endpoint-key","href":"/pt-BR/playground/numbers/generate-flow-endpoint-key"},{"title":"Ver config do endpoint do Flow","sidebarTitle":"Ver config do endpoint do Flow","openapi":"openapi.pt.json GET /v1/flows/{id}/endpoint","href":"/pt-BR/playground/flows/get-flow-endpoint-config"},{"title":"Definir destino do endpoint do Flow","sidebarTitle":"Definir destino do endpoint do Flow","openapi":"openapi.pt.json PUT /v1/flows/{id}/endpoint","href":"/pt-BR/playground/flows/set-flow-endpoint-destination"},{"title":"Definir destino do endpoint do Flow (alias de PUT)","sidebarTitle":"Definir destino do endpoint do Flow (alias de PUT)","openapi":"openapi.pt.json PATCH /v1/flows/{id}/endpoint","href":"/pt-BR/playground/flows/set-flow-endpoint-destination-patch"},{"title":"Registrar o endpoint do Flow na Meta","sidebarTitle":"Registrar o endpoint do Flow na Meta","openapi":"openapi.pt.json POST /v1/flows/{id}/endpoint","href":"/pt-BR/playground/flows/register-flow-endpoint-at-meta"},{"title":"Publicar Flow","sidebarTitle":"Publicar Flow","openapi":"openapi.pt.json POST /v1/flows/{id}/publish","href":"/pt-BR/playground/flows/publish-flow"},{"title":"Depreciar Flow","sidebarTitle":"Depreciar Flow","openapi":"openapi.pt.json POST /v1/flows/{id}/deprecate","description":"Aposenta um Flow na Meta sem apagá-lo, e sem apagar as respostas já enviadas. Não é o mesmo que `DELETE /v1/flows/{id}`: apagar só funciona em `DRAFT` e remove a linha; depreciar age sobre um Flow que chegou à Meta e apenas o marca.\n\n`supersededByFlowId` fecha o par com `clonedFromFlowId`: o clone aponta para trás, a depreciação para frente. Como publicar é irreversível, esse ponteiro é a única coisa que liga as versões de um mesmo formulário ao longo do tempo.\n\n`supersededBy` é ecoado na resposta **sempre**, `null` incluído — é a única forma de distinguir \"o sucessor que mandei foi gravado\" de \"o campo se perdeu entre o meu cliente e a linha\". Corpo truncado dá 400, e não corpo vazio, porque corpo vazio é um pedido legítimo aqui. Permissão `flows:manage`.\n\n**Exige chave com escopo de número.** Uma chave de tenant precisa nomear o número no header `x-whatsapp-number-id`, senão recebe 403 `TENANT_SCOPE_NOT_ALLOWED`.","href":"/pt-BR/playground/flows/deprecate-flow"},{"title":"Listar respostas do Flow","sidebarTitle":"Listar respostas do Flow","openapi":"openapi.pt.json GET /v1/flows/{id}/responses","href":"/pt-BR/playground/flows/list-flow-responses"}]},{"group":"Analytics","pages":[{"title":"Dashboard de analytics","sidebarTitle":"Dashboard de analytics","openapi":"openapi.pt.json GET /v1/analytics/dashboard","description":"Retorna métricas agregadas de envio do número vinculado (séries para gráficos). Aceita period (7d|30d|90d, padrão 30d) e timezone (ou tz, padrão UTC). 409 se a key não estiver vinculada a um número. Requer key escopada a número.\n\n**Requer uma chave com escopo de número.**","href":"/pt-BR/playground/analytics/analytics-dashboard"}]},{"group":"API Keys","pages":[{"title":"Listar API keys","sidebarTitle":"Listar API keys","openapi":"openapi.pt.json GET /v1/api-keys","href":"/pt-BR/playground/api-keys/list-api-keys"},{"title":"Regenerar API key de um número","sidebarTitle":"Regenerar API key de um núm…","openapi":"openapi.pt.json POST /v1/api-keys","href":"/pt-BR/playground/api-keys/regenerate-a-number-s-api-key"},{"title":"Rotacionar API key","sidebarTitle":"Rotacionar API key","openapi":"openapi.pt.json POST /v1/api-keys/regenerate","href":"/pt-BR/playground/api-keys/regenerate-api-key"}]},{"group":"Webhooks","pages":[{"title":"Listar webhooks","sidebarTitle":"Listar webhooks","openapi":"openapi.pt.json GET /v1/webhooks","href":"/pt-BR/playground/webhooks/list-webhooks"},{"title":"Criar webhook","sidebarTitle":"Criar webhook","openapi":"openapi.pt.json POST /v1/webhooks","href":"/pt-BR/playground/webhooks/create-webhook"},{"title":"Detalhar webhook","sidebarTitle":"Detalhar webhook","openapi":"openapi.pt.json GET /v1/webhooks/{id}","href":"/pt-BR/playground/webhooks/get-webhook"},{"title":"Atualizar webhook","sidebarTitle":"Atualizar webhook","openapi":"openapi.pt.json PATCH /v1/webhooks/{id}","href":"/pt-BR/playground/webhooks/update-webhook"},{"title":"Excluir webhook","sidebarTitle":"Excluir webhook","openapi":"openapi.pt.json DELETE /v1/webhooks/{id}","href":"/pt-BR/playground/webhooks/delete-webhook"},{"title":"Eventos de entrega do webhook","sidebarTitle":"Eventos de entrega do webho…","openapi":"openapi.pt.json GET /v1/webhooks/{id}/logs","href":"/pt-BR/playground/webhooks/webhook-delivery-events"}]},{"group":"Chatwoot","pages":[{"title":"Status do Chatwoot","sidebarTitle":"Status do Chatwoot","openapi":"openapi.pt.json GET /v1/chatwoot","href":"/pt-BR/playground/chatwoot/chatwoot-status"},{"title":"Conectar o Chatwoot","sidebarTitle":"Conectar o Chatwoot","openapi":"openapi.pt.json POST /v1/chatwoot","href":"/pt-BR/playground/chatwoot/connect-chatwoot"},{"title":"Atualizar o Chatwoot","sidebarTitle":"Atualizar o Chatwoot","openapi":"openapi.pt.json PATCH /v1/chatwoot","href":"/pt-BR/playground/chatwoot/update-chatwoot"},{"title":"Desconectar o Chatwoot","sidebarTitle":"Desconectar o Chatwoot","openapi":"openapi.pt.json DELETE /v1/chatwoot","href":"/pt-BR/playground/chatwoot/disconnect-chatwoot"},{"title":"Testar credenciais do Chatwoot","sidebarTitle":"Testar credenciais do Chatwoot","openapi":"openapi.pt.json POST /v1/chatwoot/test","href":"/pt-BR/playground/chatwoot/test-chatwoot-credentials"}]},{"group":"Pareamento Remoto","pages":[{"title":"Info do pareamento remoto","sidebarTitle":"Info do pareamento remoto","openapi":"openapi.pt.json GET /v1/remote-pairing/{token}","href":"/pt-BR/playground/remote-pairing/remote-pairing-info"},{"title":"Conectar via token (QR / pairing)","sidebarTitle":"Conectar via token","openapi":"openapi.pt.json POST /v1/remote-pairing/{token}/connect","href":"/pt-BR/playground/remote-pairing/connect-via-token-qr-pairing"},{"title":"Status do pareamento remoto","sidebarTitle":"Status do pareamento remoto","openapi":"openapi.pt.json GET /v1/remote-pairing/{token}/status","href":"/pt-BR/playground/remote-pairing/remote-pairing-status"}]},{"group":"Marca","pages":[{"title":"Ler a marca do tenant","sidebarTitle":"Ler a marca do tenant","openapi":"openapi.pt.json GET /v1/branding","href":"/pt-BR/playground/branding/read-tenant-branding"},{"title":"Atualizar a marca do tenant","sidebarTitle":"Atualizar a marca do tenant","openapi":"openapi.pt.json PUT /v1/branding","href":"/pt-BR/playground/branding/update-tenant-branding"},{"title":"Marca resolvida da página de conexão","sidebarTitle":"Marca resolvida da página d…","openapi":"openapi.pt.json GET /v1/connect/{token}/branding","href":"/pt-BR/playground/branding/resolved-connect-page-branding"}]},{"group":"Embed","pages":[{"title":"Criar sessão de embed","sidebarTitle":"Criar sessão de embed","openapi":"openapi.pt.json POST /v1/embed/sessions","href":"/pt-BR/playground/embed/create-embed-session"}]},{"group":"Chamadas","pages":[{"title":"Listar chamadas","sidebarTitle":"Listar chamadas","openapi":"openapi.pt.json GET /v1/calls","href":"/pt-BR/playground/calls/list-calls"},{"title":"Iniciar chamada (BIC)","sidebarTitle":"Iniciar chamada","openapi":"openapi.pt.json POST /v1/calls","href":"/pt-BR/playground/calls/start-call-bic"},{"title":"Detalhe da chamada","sidebarTitle":"Detalhe da chamada","openapi":"openapi.pt.json GET /v1/calls/{callId}","href":"/pt-BR/playground/calls/get-call"},{"title":"Pré-aceitar chamada (opcional)","sidebarTitle":"Pré-aceitar chamada","openapi":"openapi.pt.json POST /v1/calls/{callId}/pre-accept","href":"/pt-BR/playground/calls/pre-accept-call-optional"},{"title":"Atender chamada","sidebarTitle":"Atender chamada","openapi":"openapi.pt.json POST /v1/calls/{callId}/accept","href":"/pt-BR/playground/calls/accept-call"},{"title":"Rejeitar chamada","sidebarTitle":"Rejeitar chamada","openapi":"openapi.pt.json POST /v1/calls/{callId}/reject","href":"/pt-BR/playground/calls/reject-call"},{"title":"Encerrar chamada","sidebarTitle":"Encerrar chamada","openapi":"openapi.pt.json POST /v1/calls/{callId}/terminate","href":"/pt-BR/playground/calls/terminate-call"},{"title":"Tocar áudio na chamada (web)","sidebarTitle":"Tocar áudio na chamada","openapi":"openapi.pt.json POST /v1/calls/{callId}/play","href":"/pt-BR/playground/calls/play-audio-into-call-web"},{"title":"Sessão de mídia em tempo real (web)","sidebarTitle":"Sessão de mídia em tempo re…","openapi":"openapi.pt.json POST /v1/calls/{callId}/realtime-session","href":"/pt-BR/playground/calls/realtime-media-session-web"},{"title":"Ler configurações de chamadas","sidebarTitle":"Ler configurações de chamad…","openapi":"openapi.pt.json GET /v1/calls/settings","href":"/pt-BR/playground/calls/get-calling-settings"},{"title":"Atualizar configurações de chamadas","sidebarTitle":"Atualizar configurações de…","openapi":"openapi.pt.json PUT /v1/calls/settings","href":"/pt-BR/playground/calls/update-calling-settings"},{"title":"Consultar permissão de chamada","sidebarTitle":"Consultar permissão de cham…","openapi":"openapi.pt.json GET /v1/calls/permissions","href":"/pt-BR/playground/calls/get-call-permission"},{"title":"Pedir permissão de chamada","sidebarTitle":"Pedir permissão de chamada","openapi":"openapi.pt.json POST /v1/calls/permissions/request","href":"/pt-BR/playground/calls/request-call-permission"}]},{"group":"Linhas telefônicas","pages":[{"title":"Buscar números disponíveis","sidebarTitle":"Buscar números disponíveis","openapi":"openapi.pt.json GET /v1/phone-lines/available","href":"/pt-BR/playground/phone-lines/search-available-numbers"},{"title":"Comprar linhas","sidebarTitle":"Comprar linhas","openapi":"openapi.pt.json POST /v1/phone-lines","href":"/pt-BR/playground/phone-lines/buy-phone-lines"},{"title":"Listar linhas","sidebarTitle":"Listar linhas","openapi":"openapi.pt.json GET /v1/phone-lines","href":"/pt-BR/playground/phone-lines/list-phone-lines"},{"title":"Obter linha","sidebarTitle":"Obter linha","openapi":"openapi.pt.json GET /v1/phone-lines/{id}","href":"/pt-BR/playground/phone-lines/get-phone-line"},{"title":"Cancelar linha","sidebarTitle":"Cancelar linha","openapi":"openapi.pt.json DELETE /v1/phone-lines/{id}","href":"/pt-BR/playground/phone-lines/cancel-phone-line"},{"title":"Ler verificação do titular","sidebarTitle":"Ler verificação do titular","openapi":"openapi.pt.json GET /v1/phone-lines/verification","href":"/pt-BR/playground/phone-lines/get-verification"},{"title":"Enviar verificação do titular","sidebarTitle":"Enviar verificação do titular","openapi":"openapi.pt.json POST /v1/phone-lines/verification","href":"/pt-BR/playground/phone-lines/submit-verification"},{"title":"Enviar código de contato","sidebarTitle":"Enviar código de contato","openapi":"openapi.pt.json POST /v1/phone-lines/verification/contact/{channel}/send","href":"/pt-BR/playground/phone-lines/send-contact-code"},{"title":"Confirmar código de contato","sidebarTitle":"Confirmar código de contato","openapi":"openapi.pt.json POST /v1/phone-lines/verification/contact/{channel}/confirm","href":"/pt-BR/playground/phone-lines/confirm-contact-code"},{"title":"Enviar novo documento","sidebarTitle":"Enviar novo documento","openapi":"openapi.pt.json POST /v1/phone-lines/verification/document","href":"/pt-BR/playground/phone-lines/send-new-document"},{"title":"Solicitar código de ativação","sidebarTitle":"Solicitar código de ativação","openapi":"openapi.pt.json POST /v1/phone-lines/{id}/activations","href":"/pt-BR/playground/phone-lines/request-activation-code"},{"title":"Consultar ativação","sidebarTitle":"Consultar ativação","openapi":"openapi.pt.json GET /v1/phone-lines/activations/{activationId}","href":"/pt-BR/playground/phone-lines/get-activation"},{"title":"Baixar gravação da chamada","sidebarTitle":"Baixar gravação da chamada","openapi":"openapi.pt.json GET /v1/phone-lines/activations/{activationId}/audio","href":"/pt-BR/playground/phone-lines/download-call-recording"},{"title":"Histórico de códigos","sidebarTitle":"Histórico de códigos","openapi":"openapi.pt.json GET /v1/phone-lines/{id}/activations","href":"/pt-BR/playground/phone-lines/list-activations"},{"title":"Cancelar espera de ativação","sidebarTitle":"Cancelar espera de ativação","openapi":"openapi.pt.json POST /v1/phone-lines/{id}/activations/{activationId}/cancel","href":"/pt-BR/playground/phone-lines/cancel-activation-wait"},{"title":"Listar webhooks das linhas","sidebarTitle":"Listar webhooks das linhas","openapi":"openapi.pt.json GET /v1/phone-lines/webhooks","href":"/pt-BR/playground/phone-lines/list-line-webhooks"},{"title":"Criar webhook de linha","sidebarTitle":"Criar webhook de linha","openapi":"openapi.pt.json POST /v1/phone-lines/webhooks","href":"/pt-BR/playground/phone-lines/create-line-webhook"},{"title":"Obter webhook de linha","sidebarTitle":"Obter webhook de linha","openapi":"openapi.pt.json GET /v1/phone-lines/webhooks/{id}","href":"/pt-BR/playground/phone-lines/get-line-webhook"},{"title":"Atualizar webhook de linha","sidebarTitle":"Atualizar webhook de linha","openapi":"openapi.pt.json PATCH /v1/phone-lines/webhooks/{id}","href":"/pt-BR/playground/phone-lines/update-line-webhook"},{"title":"Excluir webhook de linha","sidebarTitle":"Excluir webhook de linha","openapi":"openapi.pt.json DELETE /v1/phone-lines/webhooks/{id}","href":"/pt-BR/playground/phone-lines/delete-line-webhook"},{"title":"Listar entregas do webhook de linha","sidebarTitle":"Listar entregas do webhook","openapi":"openapi.pt.json GET /v1/phone-lines/webhooks/{id}/deliveries","href":"/pt-BR/playground/phone-lines/list-line-webhook-deliveries"},{"title":"Obter entrega do webhook de linha","sidebarTitle":"Obter entrega do webhook","openapi":"openapi.pt.json GET /v1/phone-lines/webhooks/{id}/deliveries/{deliveryId}","href":"/pt-BR/playground/phone-lines/get-line-webhook-delivery"}]},{"group":"Evolution GO","pages":[{"title":"Iniciar chamada de saída","openapi":"openapi.evolution-go.pt.json POST /call/start","href":"/pt-BR/playground/evolution-go/call-start"},{"title":"Listar chamadas ativas","openapi":"openapi.evolution-go.pt.json GET /call/list","href":"/pt-BR/playground/evolution-go/call-list"},{"title":"Obter chamada por id","openapi":"openapi.evolution-go.pt.json POST /call/get","href":"/pt-BR/playground/evolution-go/call-get"},{"title":"Atender chamada recebida","openapi":"openapi.evolution-go.pt.json POST /call/answer","href":"/pt-BR/playground/evolution-go/call-answer"},{"title":"Rejeitar chamada","openapi":"openapi.evolution-go.pt.json POST /call/reject","href":"/pt-BR/playground/evolution-go/call-reject"},{"title":"Rejeitar chamada monitorada","openapi":"openapi.evolution-go.pt.json POST /call/reject/by-id","href":"/pt-BR/playground/evolution-go/call-reject-by-id"},{"title":"Rejeitar última oferta","openapi":"openapi.evolution-go.pt.json POST /call/reject/latest","href":"/pt-BR/playground/evolution-go/call-reject-latest"},{"title":"Encerrar chamada","openapi":"openapi.evolution-go.pt.json POST /call/hangup","href":"/pt-BR/playground/evolution-go/call-hangup"},{"title":"Reproduzir áudio na chamada","openapi":"openapi.evolution-go.pt.json POST /call/media/play","href":"/pt-BR/playground/evolution-go/call-media-play"},{"title":"Criar sessão em tempo real","openapi":"openapi.evolution-go.pt.json POST /call/media/realtime/session","href":"/pt-BR/playground/evolution-go/call-media-realtime-session"},{"title":"Fixar uma conversa","openapi":"openapi.evolution-go.pt.json POST /chat/pin","href":"/pt-BR/playground/evolution-go/chat-pin"},{"title":"Desafixar uma conversa","openapi":"openapi.evolution-go.pt.json POST /chat/unpin","href":"/pt-BR/playground/evolution-go/chat-unpin"},{"title":"Arquivar uma conversa","openapi":"openapi.evolution-go.pt.json POST /chat/archive","href":"/pt-BR/playground/evolution-go/chat-archive"},{"title":"Desarquivar uma conversa","openapi":"openapi.evolution-go.pt.json POST /chat/unarchive","href":"/pt-BR/playground/evolution-go/chat-unarchive"},{"title":"Silenciar uma conversa","openapi":"openapi.evolution-go.pt.json POST /chat/mute","href":"/pt-BR/playground/evolution-go/chat-mute"},{"title":"Reativar notificações de uma conversa","openapi":"openapi.evolution-go.pt.json POST /chat/unmute","href":"/pt-BR/playground/evolution-go/chat-unmute"},{"title":"Solicitar sincronização de histórico","openapi":"openapi.evolution-go.pt.json POST /chat/history-sync","href":"/pt-BR/playground/evolution-go/chat-history-sync"},{"title":"Criar comunidade","openapi":"openapi.evolution-go.pt.json POST /community/create","href":"/pt-BR/playground/evolution-go/community-create"},{"title":"Adicionar grupos","openapi":"openapi.evolution-go.pt.json POST /community/add","href":"/pt-BR/playground/evolution-go/community-add"},{"title":"Remover grupos","openapi":"openapi.evolution-go.pt.json POST /community/remove","href":"/pt-BR/playground/evolution-go/community-remove"},{"title":"Listar grupos dos quais participa","openapi":"openapi.evolution-go.pt.json GET /group/list","href":"/pt-BR/playground/evolution-go/group-list"},{"title":"Obter informações do grupo","openapi":"openapi.evolution-go.pt.json POST /group/info","href":"/pt-BR/playground/evolution-go/group-info"},{"title":"Obter link de convite","openapi":"openapi.evolution-go.pt.json POST /group/invitelink","href":"/pt-BR/playground/evolution-go/group-invitelink"},{"title":"Definir foto do grupo","openapi":"openapi.evolution-go.pt.json POST /group/photo","href":"/pt-BR/playground/evolution-go/group-photo"},{"title":"Definir nome do grupo","openapi":"openapi.evolution-go.pt.json POST /group/name","href":"/pt-BR/playground/evolution-go/group-name"},{"title":"Definir descrição do grupo","openapi":"openapi.evolution-go.pt.json POST /group/description","href":"/pt-BR/playground/evolution-go/group-description"},{"title":"Criar grupo","openapi":"openapi.evolution-go.pt.json POST /group/create","href":"/pt-BR/playground/evolution-go/group-create"},{"title":"Atualizar participantes","openapi":"openapi.evolution-go.pt.json POST /group/participant","href":"/pt-BR/playground/evolution-go/group-participant"},{"title":"Listar grupos próprios","openapi":"openapi.evolution-go.pt.json GET /group/myall","href":"/pt-BR/playground/evolution-go/group-myall"},{"title":"Entrar via convite","openapi":"openapi.evolution-go.pt.json POST /group/join","href":"/pt-BR/playground/evolution-go/group-join"},{"title":"Sair do grupo","openapi":"openapi.evolution-go.pt.json POST /group/leave","href":"/pt-BR/playground/evolution-go/group-leave"},{"title":"Adicionar etiqueta à conversa","openapi":"openapi.evolution-go.pt.json POST /label/chat","href":"/pt-BR/playground/evolution-go/label-chat"},{"title":"Adicionar etiqueta à mensagem","openapi":"openapi.evolution-go.pt.json POST /label/message","href":"/pt-BR/playground/evolution-go/label-message"},{"title":"Editar etiqueta","openapi":"openapi.evolution-go.pt.json POST /label/edit","href":"/pt-BR/playground/evolution-go/label-edit"},{"title":"Listar todas as etiquetas","openapi":"openapi.evolution-go.pt.json GET /label/list","href":"/pt-BR/playground/evolution-go/label-list"},{"title":"Remover etiqueta da conversa","openapi":"openapi.evolution-go.pt.json POST /unlabel/chat","href":"/pt-BR/playground/evolution-go/unlabel-chat"},{"title":"Remover etiqueta da mensagem","openapi":"openapi.evolution-go.pt.json POST /unlabel/message","href":"/pt-BR/playground/evolution-go/unlabel-message"},{"title":"Reagir a uma mensagem","openapi":"openapi.evolution-go.pt.json POST /message/react","href":"/pt-BR/playground/evolution-go/message-react"},{"title":"Enviar presença na conversa","openapi":"openapi.evolution-go.pt.json POST /message/presence","href":"/pt-BR/playground/evolution-go/message-presence"},{"title":"Marcar mensagens como lidas","openapi":"openapi.evolution-go.pt.json POST /message/markread","href":"/pt-BR/playground/evolution-go/message-markread"},{"title":"Baixar mídia","openapi":"openapi.evolution-go.pt.json POST /message/downloadmedia","href":"/pt-BR/playground/evolution-go/message-downloadmedia"},{"title":"Obter status da mensagem","openapi":"openapi.evolution-go.pt.json POST /message/status","href":"/pt-BR/playground/evolution-go/message-status"},{"title":"Apagar para todos","openapi":"openapi.evolution-go.pt.json POST /message/delete","href":"/pt-BR/playground/evolution-go/message-delete"},{"title":"Editar uma mensagem","openapi":"openapi.evolution-go.pt.json POST /message/edit","href":"/pt-BR/playground/evolution-go/message-edit"},{"title":"Criar newsletter","openapi":"openapi.evolution-go.pt.json POST /newsletter/create","href":"/pt-BR/playground/evolution-go/newsletter-create"},{"title":"Listar newsletters","openapi":"openapi.evolution-go.pt.json GET /newsletter/list","href":"/pt-BR/playground/evolution-go/newsletter-list"},{"title":"Obter newsletter","openapi":"openapi.evolution-go.pt.json POST /newsletter/info","href":"/pt-BR/playground/evolution-go/newsletter-info"},{"title":"Resolver convite","openapi":"openapi.evolution-go.pt.json POST /newsletter/link","href":"/pt-BR/playground/evolution-go/newsletter-link"},{"title":"Inscrever-se para atualizações ao vivo","openapi":"openapi.evolution-go.pt.json POST /newsletter/subscribe","href":"/pt-BR/playground/evolution-go/newsletter-subscribe"},{"title":"Obter mensagens da newsletter","openapi":"openapi.evolution-go.pt.json POST /newsletter/messages","href":"/pt-BR/playground/evolution-go/newsletter-messages"},{"title":"Enviar mensagem de texto","openapi":"openapi.evolution-go.pt.json POST /send/text","href":"/pt-BR/playground/evolution-go/send-text"},{"title":"Enviar pré-visualização de link","openapi":"openapi.evolution-go.pt.json POST /send/link","href":"/pt-BR/playground/evolution-go/send-link"},{"title":"Enviar mensagem de mídia","openapi":"openapi.evolution-go.pt.json POST /send/media","href":"/pt-BR/playground/evolution-go/send-media"},{"title":"Enviar enquete","openapi":"openapi.evolution-go.pt.json POST /send/poll","href":"/pt-BR/playground/evolution-go/send-poll"},{"title":"Enviar figurinha","openapi":"openapi.evolution-go.pt.json POST /send/sticker","href":"/pt-BR/playground/evolution-go/send-sticker"},{"title":"Enviar localização","openapi":"openapi.evolution-go.pt.json POST /send/location","href":"/pt-BR/playground/evolution-go/send-location"},{"title":"Enviar cartão de contato","openapi":"openapi.evolution-go.pt.json POST /send/contact","href":"/pt-BR/playground/evolution-go/send-contact"},{"title":"Enviar botões interativos","openapi":"openapi.evolution-go.pt.json POST /send/button","href":"/pt-BR/playground/evolution-go/send-button"},{"title":"Enviar menu de lista","openapi":"openapi.evolution-go.pt.json POST /send/list","href":"/pt-BR/playground/evolution-go/send-list"},{"title":"Enviar cartões de carrossel","openapi":"openapi.evolution-go.pt.json POST /send/carousel","href":"/pt-BR/playground/evolution-go/send-carousel"},{"title":"Obter informações do usuário","openapi":"openapi.evolution-go.pt.json POST /user/info","href":"/pt-BR/playground/evolution-go/user-info"},{"title":"Verificar no WhatsApp","openapi":"openapi.evolution-go.pt.json POST /user/check","href":"/pt-BR/playground/evolution-go/user-check"},{"title":"Obter avatar do usuário","openapi":"openapi.evolution-go.pt.json POST /user/avatar","href":"/pt-BR/playground/evolution-go/user-avatar"},{"title":"Listar contatos","openapi":"openapi.evolution-go.pt.json GET /user/contacts","href":"/pt-BR/playground/evolution-go/user-contacts"},{"title":"Obter configurações de privacidade","openapi":"openapi.evolution-go.pt.json GET /user/privacy","href":"/pt-BR/playground/evolution-go/user-privacy"},{"title":"Definir configurações de privacidade","openapi":"openapi.evolution-go.pt.json POST /user/privacy","href":"/pt-BR/playground/evolution-go/user-privacy-post"},{"title":"Bloquear um contato","openapi":"openapi.evolution-go.pt.json POST /user/block","href":"/pt-BR/playground/evolution-go/user-block"},{"title":"Desbloquear um contato","openapi":"openapi.evolution-go.pt.json POST /user/unblock","href":"/pt-BR/playground/evolution-go/user-unblock"},{"title":"Listar contatos bloqueados","openapi":"openapi.evolution-go.pt.json GET /user/blocklist","href":"/pt-BR/playground/evolution-go/user-blocklist"},{"title":"Definir foto de perfil","openapi":"openapi.evolution-go.pt.json POST /user/profilePicture","href":"/pt-BR/playground/evolution-go/user-profilepicture"},{"title":"Definir nome de perfil","openapi":"openapi.evolution-go.pt.json POST /user/profileName","href":"/pt-BR/playground/evolution-go/user-profilename"},{"title":"Definir status de perfil","openapi":"openapi.evolution-go.pt.json POST /user/profileStatus","href":"/pt-BR/playground/evolution-go/user-profilestatus"}]},{"group":"Evolution V2","pages":[{"title":"Oferecer uma chamada","openapi":"openapi.evolution-v2.pt.json POST /call/offer/{instance}","href":"/pt-BR/playground/evolution-v2/call-offer"},{"title":"Buscar catálogo de produtos","openapi":"openapi.evolution-v2.pt.json POST /business/getCatalog/{instance}","href":"/pt-BR/playground/evolution-v2/business-getcatalog"},{"title":"Buscar coleções","openapi":"openapi.evolution-v2.pt.json POST /business/getCollections/{instance}","href":"/pt-BR/playground/evolution-v2/business-getcollections"},{"title":"Verificar números de WhatsApp","openapi":"openapi.evolution-v2.pt.json POST /chat/whatsappNumbers/{instance}","href":"/pt-BR/playground/evolution-v2/chat-whatsappnumbers"},{"title":"Marcar mensagens como lidas","openapi":"openapi.evolution-v2.pt.json POST /chat/markMessageAsRead/{instance}","href":"/pt-BR/playground/evolution-v2/chat-markmessageasread"},{"title":"Arquivar ou desarquivar conversa","openapi":"openapi.evolution-v2.pt.json POST /chat/archiveChat/{instance}","href":"/pt-BR/playground/evolution-v2/chat-archivechat"},{"title":"Marcar conversa como não lida","openapi":"openapi.evolution-v2.pt.json POST /chat/markChatUnread/{instance}","href":"/pt-BR/playground/evolution-v2/chat-markchatunread"},{"title":"Apagar mensagem para todos","openapi":"openapi.evolution-v2.pt.json DELETE /chat/deleteMessageForEveryone/{instance}","href":"/pt-BR/playground/evolution-v2/chat-deletemessageforeveryone"},{"title":"Obter mídia como base64","openapi":"openapi.evolution-v2.pt.json POST /chat/getBase64FromMediaMessage/{instance}","href":"/pt-BR/playground/evolution-v2/chat-getbase64frommediamessage"},{"title":"Editar mensagem enviada","openapi":"openapi.evolution-v2.pt.json POST /chat/updateMessage/{instance}","href":"/pt-BR/playground/evolution-v2/chat-updatemessage"},{"title":"Enviar atualização de presença","openapi":"openapi.evolution-v2.pt.json POST /chat/sendPresence/{instance}","href":"/pt-BR/playground/evolution-v2/chat-sendpresence"},{"title":"Bloquear ou desbloquear contato","openapi":"openapi.evolution-v2.pt.json POST /chat/updateBlockStatus/{instance}","href":"/pt-BR/playground/evolution-v2/chat-updateblockstatus"},{"title":"Buscar conversa por JID","openapi":"openapi.evolution-v2.pt.json GET /chat/findChatByRemoteJid/{instance}","href":"/pt-BR/playground/evolution-v2/chat-findchatbyremotejid"},{"title":"Buscar contatos","openapi":"openapi.evolution-v2.pt.json POST /chat/findContacts/{instance}","href":"/pt-BR/playground/evolution-v2/chat-findcontacts"},{"title":"Buscar mensagens","openapi":"openapi.evolution-v2.pt.json POST /chat/findMessages/{instance}","href":"/pt-BR/playground/evolution-v2/chat-findmessages"},{"title":"Buscar status de mensagens","openapi":"openapi.evolution-v2.pt.json POST /chat/findStatusMessage/{instance}","href":"/pt-BR/playground/evolution-v2/chat-findstatusmessage"},{"title":"Buscar conversas","openapi":"openapi.evolution-v2.pt.json POST /chat/findChats/{instance}","href":"/pt-BR/playground/evolution-v2/chat-findchats"},{"title":"Criar grupo","openapi":"openapi.evolution-v2.pt.json POST /group/create/{instance}","href":"/pt-BR/playground/evolution-v2/group-create"},{"title":"Atualizar assunto","openapi":"openapi.evolution-v2.pt.json POST /group/updateGroupSubject/{instance}","href":"/pt-BR/playground/evolution-v2/group-updategroupsubject"},{"title":"Atualizar foto","openapi":"openapi.evolution-v2.pt.json POST /group/updateGroupPicture/{instance}","href":"/pt-BR/playground/evolution-v2/group-updategrouppicture"},{"title":"Atualizar descrição","openapi":"openapi.evolution-v2.pt.json POST /group/updateGroupDescription/{instance}","href":"/pt-BR/playground/evolution-v2/group-updategroupdescription"},{"title":"Obter informações do grupo","openapi":"openapi.evolution-v2.pt.json GET /group/findGroupInfos/{instance}","href":"/pt-BR/playground/evolution-v2/group-findgroupinfos"},{"title":"Listar todos os grupos","openapi":"openapi.evolution-v2.pt.json GET /group/fetchAllGroups/{instance}","href":"/pt-BR/playground/evolution-v2/group-fetchallgroups"},{"title":"Listar participantes","openapi":"openapi.evolution-v2.pt.json GET /group/participants/{instance}","href":"/pt-BR/playground/evolution-v2/group-participants"},{"title":"Obter código de convite","openapi":"openapi.evolution-v2.pt.json GET /group/inviteCode/{instance}","href":"/pt-BR/playground/evolution-v2/group-invitecode"},{"title":"Obter informações do convite","openapi":"openapi.evolution-v2.pt.json GET /group/inviteInfo/{instance}","href":"/pt-BR/playground/evolution-v2/group-inviteinfo"},{"title":"Aceitar convite","openapi":"openapi.evolution-v2.pt.json GET /group/acceptInviteCode/{instance}","href":"/pt-BR/playground/evolution-v2/group-acceptinvitecode"},{"title":"Enviar convite","openapi":"openapi.evolution-v2.pt.json POST /group/sendInvite/{instance}","href":"/pt-BR/playground/evolution-v2/group-sendinvite"},{"title":"Revogar convite","openapi":"openapi.evolution-v2.pt.json POST /group/revokeInviteCode/{instance}","href":"/pt-BR/playground/evolution-v2/group-revokeinvitecode"},{"title":"Atualizar participantes","openapi":"openapi.evolution-v2.pt.json POST /group/updateParticipant/{instance}","href":"/pt-BR/playground/evolution-v2/group-updateparticipant"},{"title":"Atualizar configuração","openapi":"openapi.evolution-v2.pt.json POST /group/updateSetting/{instance}","href":"/pt-BR/playground/evolution-v2/group-updatesetting"},{"title":"Atualizar modo de adição de membros","openapi":"openapi.evolution-v2.pt.json POST /group/updateMemberAddMode/{instance}","href":"/pt-BR/playground/evolution-v2/group-updatememberaddmode"},{"title":"Alternar mensagens temporárias","openapi":"openapi.evolution-v2.pt.json POST /group/toggleEphemeral/{instance}","href":"/pt-BR/playground/evolution-v2/group-toggleephemeral"},{"title":"Sair do grupo","openapi":"openapi.evolution-v2.pt.json DELETE /group/leaveGroup/{instance}","href":"/pt-BR/playground/evolution-v2/group-leavegroup"},{"title":"Listar etiquetas","openapi":"openapi.evolution-v2.pt.json GET /label/findLabels/{instance}","href":"/pt-BR/playground/evolution-v2/label-findlabels"},{"title":"Adicionar ou remover etiqueta","openapi":"openapi.evolution-v2.pt.json POST /label/handleLabel/{instance}","href":"/pt-BR/playground/evolution-v2/label-handlelabel"},{"title":"Enviar template","openapi":"openapi.evolution-v2.pt.json POST /message/sendTemplate/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendtemplate"},{"title":"Enviar texto","openapi":"openapi.evolution-v2.pt.json POST /message/sendText/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendtext"},{"title":"Enviar mídia","openapi":"openapi.evolution-v2.pt.json POST /message/sendMedia/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendmedia"},{"title":"Enviar nota de vídeo","openapi":"openapi.evolution-v2.pt.json POST /message/sendPtv/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendptv"},{"title":"Enviar áudio de voz","openapi":"openapi.evolution-v2.pt.json POST /message/sendWhatsAppAudio/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendwhatsappaudio"},{"title":"Enviar status","openapi":"openapi.evolution-v2.pt.json POST /message/sendStatus/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendstatus"},{"title":"Enviar figurinha","openapi":"openapi.evolution-v2.pt.json POST /message/sendSticker/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendsticker"},{"title":"Enviar localização","openapi":"openapi.evolution-v2.pt.json POST /message/sendLocation/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendlocation"},{"title":"Enviar contato","openapi":"openapi.evolution-v2.pt.json POST /message/sendContact/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendcontact"},{"title":"Enviar reação","openapi":"openapi.evolution-v2.pt.json POST /message/sendReaction/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendreaction"},{"title":"Enviar enquete","openapi":"openapi.evolution-v2.pt.json POST /message/sendPoll/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendpoll"},{"title":"Enviar lista","openapi":"openapi.evolution-v2.pt.json POST /message/sendList/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendlist"},{"title":"Enviar botões","openapi":"openapi.evolution-v2.pt.json POST /message/sendButtons/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendbuttons"},{"title":"Enviar carrossel","openapi":"openapi.evolution-v2.pt.json POST /message/sendCarousel/{instance}","href":"/pt-BR/playground/evolution-v2/message-sendcarousel"},{"title":"Obter URL da foto de perfil","openapi":"openapi.evolution-v2.pt.json POST /chat/fetchProfilePictureUrl/{instance}","href":"/pt-BR/playground/evolution-v2/chat-fetchprofilepictureurl"},{"title":"Obter perfil comercial","openapi":"openapi.evolution-v2.pt.json POST /chat/fetchBusinessProfile/{instance}","href":"/pt-BR/playground/evolution-v2/chat-fetchbusinessprofile"},{"title":"Obter perfil do contato","openapi":"openapi.evolution-v2.pt.json POST /chat/fetchProfile/{instance}","href":"/pt-BR/playground/evolution-v2/chat-fetchprofile"},{"title":"Atualizar o próprio nome de exibição","openapi":"openapi.evolution-v2.pt.json POST /chat/updateProfileName/{instance}","href":"/pt-BR/playground/evolution-v2/chat-updateprofilename"},{"title":"Atualizar o próprio texto de status","openapi":"openapi.evolution-v2.pt.json POST /chat/updateProfileStatus/{instance}","href":"/pt-BR/playground/evolution-v2/chat-updateprofilestatus"},{"title":"Atualizar a própria foto de perfil","openapi":"openapi.evolution-v2.pt.json POST /chat/updateProfilePicture/{instance}","href":"/pt-BR/playground/evolution-v2/chat-updateprofilepicture"},{"title":"Remover a própria foto de perfil","openapi":"openapi.evolution-v2.pt.json DELETE /chat/removeProfilePicture/{instance}","href":"/pt-BR/playground/evolution-v2/chat-removeprofilepicture"},{"title":"Obter configurações de privacidade","openapi":"openapi.evolution-v2.pt.json GET /chat/fetchPrivacySettings/{instance}","href":"/pt-BR/playground/evolution-v2/chat-fetchprivacysettings"},{"title":"Atualizar configurações de privacidade","openapi":"openapi.evolution-v2.pt.json POST /chat/updatePrivacySettings/{instance}","href":"/pt-BR/playground/evolution-v2/chat-updateprivacysettings"},{"title":"Atualizar configurações","openapi":"openapi.evolution-v2.pt.json POST /settings/set/{instance}","href":"/pt-BR/playground/evolution-v2/settings-set"},{"title":"Ler configurações","openapi":"openapi.evolution-v2.pt.json GET /settings/find/{instance}","href":"/pt-BR/playground/evolution-v2/settings-find"},{"title":"Configurar proxy","openapi":"openapi.evolution-v2.pt.json POST /proxy/set/{instance}","href":"/pt-BR/playground/evolution-v2/proxy-set"},{"title":"Ler proxy","openapi":"openapi.evolution-v2.pt.json GET /proxy/find/{instance}","href":"/pt-BR/playground/evolution-v2/proxy-find"},{"title":"Listar mídias armazenadas","openapi":"openapi.evolution-v2.pt.json POST /s3/getMedia/{instance}","href":"/pt-BR/playground/evolution-v2/s3-getmedia"},{"title":"Obter URL de mídia pré-assinada","openapi":"openapi.evolution-v2.pt.json POST /s3/getMediaUrl/{instance}","href":"/pt-BR/playground/evolution-v2/s3-getmediaurl"},{"title":"Criar template","openapi":"openapi.evolution-v2.pt.json POST /template/create/{instance}","href":"/pt-BR/playground/evolution-v2/template-create"},{"title":"Editar template","openapi":"openapi.evolution-v2.pt.json POST /template/edit/{instance}","href":"/pt-BR/playground/evolution-v2/template-edit"},{"title":"Excluir template","openapi":"openapi.evolution-v2.pt.json DELETE /template/delete/{instance}","href":"/pt-BR/playground/evolution-v2/template-delete"},{"title":"Listar templates","openapi":"openapi.evolution-v2.pt.json GET /template/find/{instance}","href":"/pt-BR/playground/evolution-v2/template-find"}]},{"group":"Meta Cloud API","pages":[{"title":"Enviar mensagem","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/messages","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-messages"},{"title":"Marcar como lida / digitando","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/messages/status","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-messages-status"},{"title":"Enviar mídia (upload)","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/media","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-media"},{"title":"Criar sessão de upload","openapi":"openapi.meta.pt.json POST /{appId}/uploads","href":"/pt-BR/playground/meta-cloud-api/post-appid-uploads"},{"title":"Buscar por id","openapi":"openapi.meta.pt.json GET /{id}","href":"/pt-BR/playground/meta-cloud-api/get-id"},{"title":"Atualizar por id","openapi":"openapi.meta.pt.json POST /{id}","href":"/pt-BR/playground/meta-cloud-api/post-id"},{"title":"Excluir por id","openapi":"openapi.meta.pt.json DELETE /{id}","href":"/pt-BR/playground/meta-cloud-api/delete-id"},{"title":"Listar templates","openapi":"openapi.meta.pt.json GET /{wabaId}/message_templates","href":"/pt-BR/playground/meta-cloud-api/get-wabaid-message-templates"},{"title":"Criar template","openapi":"openapi.meta.pt.json POST /{wabaId}/message_templates","href":"/pt-BR/playground/meta-cloud-api/post-wabaid-message-templates"},{"title":"Excluir template","openapi":"openapi.meta.pt.json DELETE /{wabaId}/message_templates","href":"/pt-BR/playground/meta-cloud-api/delete-wabaid-message-templates"},{"title":"Listar números","openapi":"openapi.meta.pt.json GET /{wabaId}/phone_numbers","href":"/pt-BR/playground/meta-cloud-api/get-wabaid-phone-numbers"},{"title":"Ler perfil comercial","openapi":"openapi.meta.pt.json GET /{phoneNumberId}/whatsapp_business_profile","href":"/pt-BR/playground/meta-cloud-api/get-phonenumberid-whatsapp-business-profile"},{"title":"Atualizar perfil comercial","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/whatsapp_business_profile","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-whatsapp-business-profile"},{"title":"Criar grupo","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/groups","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-groups"},{"title":"Listar grupos","openapi":"openapi.meta.pt.json GET /{phoneNumberId}/groups","href":"/pt-BR/playground/meta-cloud-api/get-phonenumberid-groups"},{"title":"Adicionar participantes","openapi":"openapi.meta.pt.json POST /{groupId}/participants","href":"/pt-BR/playground/meta-cloud-api/post-groupid-participants"},{"title":"Remover participantes","openapi":"openapi.meta.pt.json DELETE /{groupId}/participants","href":"/pt-BR/playground/meta-cloud-api/delete-groupid-participants"},{"title":"Promover a admin","openapi":"openapi.meta.pt.json POST /{groupId}/admins","href":"/pt-BR/playground/meta-cloud-api/post-groupid-admins"},{"title":"Rebaixar admin","openapi":"openapi.meta.pt.json DELETE /{groupId}/admins","href":"/pt-BR/playground/meta-cloud-api/delete-groupid-admins"},{"title":"Obter link de convite","openapi":"openapi.meta.pt.json GET /{groupId}/invites","href":"/pt-BR/playground/meta-cloud-api/get-groupid-invites"},{"title":"Redefinir link de convite","openapi":"openapi.meta.pt.json POST /{groupId}/invites","href":"/pt-BR/playground/meta-cloud-api/post-groupid-invites"},{"title":"Fixar mensagem no grupo","openapi":"openapi.meta.pt.json POST /{groupId}/pins","href":"/pt-BR/playground/meta-cloud-api/post-groupid-pins"},{"title":"Ação de chamada","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/calls","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-calls"},{"title":"Ler configurações de chamada","openapi":"openapi.meta.pt.json GET /{phoneNumberId}/settings","href":"/pt-BR/playground/meta-cloud-api/get-phonenumberid-settings"},{"title":"Atualizar configurações de chamada","openapi":"openapi.meta.pt.json POST /{phoneNumberId}/settings","href":"/pt-BR/playground/meta-cloud-api/post-phonenumberid-settings"},{"title":"Consultar permissão de chamada","openapi":"openapi.meta.pt.json GET /{phoneNumberId}/call_permissions","href":"/pt-BR/playground/meta-cloud-api/get-phonenumberid-call-permissions"}]}]},{"group":"Workspace","pages":[{"title":"Ler o workspace","sidebarTitle":"Ler o workspace","openapi":"openapi.pt.json GET /v1/workspace","href":"/pt-BR/playground/workspace/get-workspace"},{"title":"Listar membros","sidebarTitle":"Listar membros","openapi":"openapi.pt.json GET /v1/workspace/members","href":"/pt-BR/playground/workspace/list-members"},{"title":"Convidar membro","sidebarTitle":"Convidar membro","openapi":"openapi.pt.json POST /v1/workspace/members","href":"/pt-BR/playground/workspace/invite-member"},{"title":"Reenviar convite","sidebarTitle":"Reenviar convite","openapi":"openapi.pt.json POST /v1/workspace/members/{id}/resend","href":"/pt-BR/playground/workspace/resend-invitation"},{"title":"Mudar papel do membro","sidebarTitle":"Mudar papel do membro","openapi":"openapi.pt.json PATCH /v1/workspace/members/{id}","href":"/pt-BR/playground/workspace/change-member-role"},{"title":"Definir quais números o membro vê","sidebarTitle":"Definir números do membro","openapi":"openapi.pt.json PATCH /v1/workspace/members/{id}/numbers","href":"/pt-BR/playground/workspace/set-member-numbers"},{"title":"Remover membro","sidebarTitle":"Remover membro","openapi":"openapi.pt.json DELETE /v1/workspace/members/{id}","href":"/pt-BR/playground/workspace/remove-member"},{"title":"Listar seus workspaces","sidebarTitle":"Listar seus workspaces","openapi":"openapi.pt.json GET /v1/workspaces","href":"/pt-BR/playground/workspace/list-workspaces"},{"title":"Criar um workspace","sidebarTitle":"Criar um workspace","openapi":"openapi.pt.json POST /v1/workspaces","href":"/pt-BR/playground/workspace/create-workspace"},{"title":"Listar as chaves do workspace","sidebarTitle":"Listar as chaves do workspace","openapi":"openapi.pt.json GET /v1/workspaces/{workspaceId}/api-keys","href":"/pt-BR/playground/workspace/list-workspace-keys"},{"title":"Criar uma chave de workspace com nome","sidebarTitle":"Criar uma chave de workspace com nome","openapi":"openapi.pt.json POST /v1/workspaces/{workspaceId}/api-keys","href":"/pt-BR/playground/workspace/create-workspace-key"},{"title":"Revogar uma chave de workspace com nome","sidebarTitle":"Revogar uma chave de workspace com nome","openapi":"openapi.pt.json DELETE /v1/workspaces/{workspaceId}/api-keys/{keyId}","href":"/pt-BR/playground/workspace/revoke-workspace-key"},{"title":"Vincular o cartão compartilhado","sidebarTitle":"Vincular o cartão compartilhado","openapi":"openapi.pt.json PUT /v1/workspaces/{workspaceId}/shared-card","href":"/pt-BR/playground/workspace/link-shared-card"},{"title":"Desvincular o cartão compartilhado","sidebarTitle":"Desvincular o cartão compartilhado","openapi":"openapi.pt.json DELETE /v1/workspaces/{workspaceId}/shared-card","href":"/pt-BR/playground/workspace/unlink-shared-card"},{"title":"Listar os webhooks do workspace","sidebarTitle":"Listar os webhooks do workspace","openapi":"openapi.pt.json GET /v1/workspace/webhooks","href":"/pt-BR/playground/workspace/list-workspace-webhooks"},{"title":"Criar webhook do workspace","sidebarTitle":"Criar webhook do workspace","openapi":"openapi.pt.json POST /v1/workspace/webhooks","href":"/pt-BR/playground/workspace/create-workspace-webhook"},{"title":"Obter webhook do workspace","sidebarTitle":"Obter webhook do workspace","openapi":"openapi.pt.json GET /v1/workspace/webhooks/{id}","href":"/pt-BR/playground/workspace/get-workspace-webhook"},{"title":"Atualizar webhook do workspace","sidebarTitle":"Atualizar webhook do workspace","openapi":"openapi.pt.json PATCH /v1/workspace/webhooks/{id}","href":"/pt-BR/playground/workspace/update-workspace-webhook"},{"title":"Excluir webhook do workspace","sidebarTitle":"Excluir webhook do workspace","openapi":"openapi.pt.json DELETE /v1/workspace/webhooks/{id}","href":"/pt-BR/playground/workspace/delete-workspace-webhook"},{"title":"Listar entregas do webhook do workspace","sidebarTitle":"Listar entregas do webhook do workspace","openapi":"openapi.pt.json GET /v1/workspace/webhooks/{id}/deliveries","href":"/pt-BR/playground/workspace/list-workspace-webhook-deliveries"},{"title":"Obter entrega do webhook do workspace","sidebarTitle":"Obter entrega do webhook do workspace","openapi":"openapi.pt.json GET /v1/workspace/webhooks/{id}/deliveries/{deliveryId}","href":"/pt-BR/playground/workspace/get-workspace-webhook-delivery"}]}]}]}]},"basePath":"","title":"Listar respostas do Flow - Pilot Status","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-DSVu9Ucl.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js","Markdown-D7QRHV3m.js","clsx-D1Z-ELXV.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-lvhuD9Du.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CKfC4ywL.js"]}