Skip to main content

Gerenciar Flows

O comando Flows gerencia os WhatsApp Flows do canal do WhatsApp Oficial. Flows são experiências interativas (formulários, cadastros, fluxos de atendimento) que rodam dentro do próprio WhatsApp. As operações usam POST /api/v1/message/SendCommand com content.type: "FLOWS", variando o commandType conforme a operação desejada. Resposta síncrona: { "packageId": "..." }; resultado via webhook.

Operações disponíveis

A Meta só aceita algumas operações em determinados status. Fora do status exigido, a operação falha e o webhook chega com success: false.
Os Flows pertencem ao business (WABA), não a um número específico. O channelId identifica a conta cujas credenciais autenticam a requisição à Meta.

Respostas

Cada operação responde por webhook. O type indica o formato do payload e o commandType indica a operação que o originou, no padrão FLOWS_<OPERAÇÃO>_RESPONSE: O formato é o mesmo no sucesso e na falha: se um CREATE falhar, o webhook continua sendo FLOWS_DETAIL_RESPONSE / FLOWS_CREATE_RESPONSE, com success: false e o motivo em error.

Listar Flows

uuid
Filtro opcional. Quando informado, retorna apenas o Flow específico (GET unitário) em vez da lista completa. Ambos os caminhos respondem FLOWS_LIST_RESPONSE. Se o Flow não existir, a resposta vem com success: false e error iniciando com FLOW_NOT_FOUND — não como lista vazia.
string
Filtro opcional. Restringe à WABA deste número.

Webhook de resposta

Campos do Flow (flows[])

Criar Flow

O CREATE exige que o canal tenha um número conectado: o Flow é criado na WABA desse número. As demais operações usam apenas as credenciais da conta.
string
required
Nome do Flow.
string[]
required
Categorias do Flow (ex.: SIGN_UP, CUSTOMER_SUPPORT, APPOINTMENT_BOOKING). Deve conter pelo menos uma.
string
Endpoint HTTPS do Flow, quando ele é data_channel (o Flow troca dados com seu servidor em tempo real).
string
Id na Meta (wabaFlowId, não o id da MessageFy) de um Flow existente para clonar. A Flows API da Meta duplica a estrutura.
object
Flow JSON opaco (a estrutura do formulário). Opcional no CREATE — pode ser enviado depois via UPLOAD_ASSET.
boolean
default:"false"
Publica o Flow logo após criá-lo. Quando true, o Flow já nasce publicado.

Webhook de resposta

O CREATE retorna FLOWS_DETAIL_RESPONSE:
Guarde o flow.id — é o flowId usado nas demais operações.

Upload de asset (Flow JSON)

Envia a estrutura do formulário (Flow JSON) para um Flow existente.
uuid
required
Identificador do Flow alvo.
object
required
Flow JSON opaco. A MessageFy não valida o conteúdo — a Meta valida contra o schema da versão.

Webhook de resposta

Retorna FLOWS_DETAIL_RESPONSE com o Flow atualizado.

Atualizar Flow

Atualiza nome, categorias ou endpoint de um Flow em Draft — a Meta não permite editar os metadados de um Flow publicado. Pelo menos um campo deve ser informado.
uuid
required
Identificador do Flow a atualizar.
string
Novo nome do Flow.
string[]
Novas categorias do Flow.
string
Novo endpoint HTTPS do Flow.

Webhook de resposta

Retorna FLOWS_DETAIL_RESPONSE com o Flow atualizado.

Publicar Flow

Publica um Flow em rascunho, tornando-o utilizável em mensagens.

Webhook de resposta

Retorna FLOWS_DETAIL_RESPONSE com status: "Published".

Deprecar Flow

Depreca um Flow em Published. Um Flow deprecado não pode mais ser enviado em novas mensagens.

Webhook de resposta

Retorna FLOWS_DETAIL_RESPONSE com status: "Deprecated".

Deletar Flow

Remove um Flow em Draft. A Meta não permite excluir um Flow já publicado — para tirá-lo de uso, depreque-o.

Webhook de resposta

Retorna FLOWS_RESPONSE com commandType: "FLOWS_DELETE_RESPONSE", sem payload além de success.

Preview do Flow

Gera uma URL de preview do Flow, válida por 30 dias.
boolean
default:"false"
Quando true, força a Meta a gerar uma nova URL de preview em vez de reaproveitar a atual.

Webhook de resposta

Sincronizar Flows

Sincroniza os Flows da Meta com a plataforma. Útil para importar Flows criados diretamente no Meta Business Manager.
string
Restringe a sincronização à WABA deste número.

Webhook de resposta

Campos de wabas[]

Atualizar cache (Refresh)

Atualiza o cache local de um Flow específico, buscando os dados mais recentes da Meta.

Webhook de resposta

Retorna FLOWS_DETAIL_RESPONSE com os dados atualizados do Flow.

Erros

Validação na entrada (HTTP 400)

A estrutura mínima do comando é validada antes de o pacote ser aceito. Nesses casos o SendCommand responde 400 na hora, sem webhook:

Falha no processamento (webhook)

Falhas depois que o pacote foi aceito (Flow em status incompatível, erro da Meta, Flow inexistente) chegam no webhook da própria operação, com success: false. Exemplo de um PUBLISH recusado:
Um 200 OK no SendCommand significa apenas que o pacote foi aceito para processamento. O resultado real (sucesso ou falha) chega via webhook. Monitore o success do webhook para confirmar o desfecho.

Exemplo completo

Após criar o Flow (CREATE), envie o Flow JSON via UPLOAD_ASSET e depois publique via PUBLISH. Use o Flow publicado em mensagens de template com botão flow — veja Mensagem de Template.