Skip to main content
Todo endpoint abaixo autentica com uma chave de API com escopo de número (x-api-key) cujo número seja Meta (API Oficial). A WABA é DERIVADA desse número — não existe parâmetro para nomear uma, de propósito.
flows:read é um slug próprio e não é templates:read. A listagem de templates devolve texto que o seu workspace escreveu; a resposta de um Flow devolve o que um cliente digitou num formulário — um nome, um telefone, às vezes um documento. As duas coisas são gateadas separadamente de propósito.

Listar Flows

id é o id local e é o único id que você manda de volta para nós. metaFlowId é o da Meta e é somente leitura — vem null enquanto o Flow existe aqui e ainda não chegou à Meta.

Criar ou clonar

Devolve 201 com o Flow novo em DRAFT. Omita cloneFromFlowId para começar do zero.
cloneFromFlowId é o id local do Flow de origem — o campo id, não o metaFlowId. Clonar é a única forma de mudar um Flow que já foi publicado.

Renomear e recategorizar

Aceita apenas name e categories. Nunca publica e nunca deprecia — essas têm endpoint próprio, para um engano num formulário não alcançar uma operação irreversível.

Subir o Flow JSON

Um 200 significa que o documento compilou, e aí validationErrors vem sempre vazio:
Documento que a Meta recusa volta como 422 FLOW_JSON_INVALID, com a lista dela anexada:
Isto NÃO é como a API da Meta se comporta, de propósito — e a diferença é o ponto.A Meta responde 200 com os problemas listados dentro do payload. Ou seja: lá, sucesso aparente sobre documento inválido é o caso normal, e um cliente que olha só o status publica um Flow que nunca compilou.Esta rota lê a LISTA em vez do status da Graph, e responde 422 sempre que ela não está vazia. Um 200 nosso significa, então, o que um 200 deve significar. Leia validationErrors no 422 — é a resposta da Meta, verbatim.flowJson é uma string, nunca um objeto aninhado: a Meta compila os bytes exatos, e re-serializar reordenaria em silêncio o que você escreveu.

Publicar

Irreversível na Meta. Um Flow publicado nunca mais pode ser editado nem despublicado — só clonado num novo. "confirm": true é obrigatório; sem ele a requisição é recusada com 400.

Depreciar

Aposenta o Flow sem apagar, e sem apagar as respostas já enviadas. supersededByFlowId é opcional — mas, se você mandar, tem de nomear um Flow real seu: string vazia é recusada em vez de ignorada em silêncio, porque cadeia de versões rompida é invisível depois.

Apagar

Só um DRAFT pode ser apagado. Qualquer outro estado devolve 409.

Ler as respostas dos formulários

Devolve o que os clientes enviaram, ligado ao contato que respondeu, dentro da janela de retenção. Resposta vencida nunca é servida.

Chave do endpoint data_exchange

Ainda não exposta na API pública. A gestão da chave do endpoint data_exchange — gerar o par, registrar a metade pública na Meta e conferir se a Meta ainda tem a nossa — está construída, mas ainda não tem rota REST. Esta seção lista os endpoints no dia em que existirem.O que o recurso faz, e o desenho por trás dele, está em Flows. Se você precisar antes de estar exposto, fale com o suporte.

Erros

Toda falha desta superfície responde o mesmo envelope — existe exatamente uma forma para ler, e uma grafia:
FLOW_JSON_INVALID acrescenta um array validationErrors; FLOW_UNKNOWN_FIELDS acrescenta as chaves recusadas. Nunca assuma que o conjunto de códigos é fechado — trate os que você conhece e caia no code para o resto.
Os dois últimos não têm prefixo FLOW_ — são compartilhados por toda a API pública e mantêm a grafia global. Um cliente que filtre por code.startsWith("FLOW_") perderia os dois.

Relacionado