> ## Documentation Index
> Fetch the complete documentation index at: https://docs.manybot.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Send Flow

> Envia um WhatsApp Flow diretamente (mensagem interativa). Para disparo proativo fora da janela de 24h, use send-template com um template que tenha botão de Flow.

Envia um **WhatsApp Flow** diretamente, como mensagem interativa.

> [!WARNING]
>
> O envio direto de flow só funciona **dentro da janela de 24h** (sessão aberta com o contato). Para disparo **proativo** (como um lembrete ou uma pesquisa), use **[Send Template](/api-reference/messages/send-template.md)** com um template que tenha botão de Flow.

## `flowData`

O **dataset completo** do flow, enviado de uma vez. Os dados entram pela **tela de entrada** (a única que o WhatsApp permite pré-preencher no disparo) e, em flows multi-tela, são repassados internamente para as telas seguintes via `navigate` — você **não** divide o `flowData` por tela. Os valores são referenciados no flow via `${data.campo}` e a Meta substitui os placeholders **no momento do envio**. Quando enviar `flowData`, informe também `screen` (a tela de entrada).

## `metadata`

Metadados livres gravados na mensagem para controle/consulta posterior (ex.: `{ "pedidoId": "...", "clienteId": "..." }`).

## Idempotência (`X-Request-Id`)

Mesmo comportamento do [Send Template](/api-reference/messages/send-template.md#idempot%C3%AAncia-x-request-id): envie um UUID no header `X-Request-Id` para evitar envio duplicado em retries.


## OpenAPI

````yaml POST /messages/send-flow
openapi: 3.0.0
info:
  title: API Manybot
  description: ''
  version: v1.0.0
  contact: {}
servers:
  - url: https://api-v2.manybot.com.br
security:
  - bearer: []
tags: []
paths:
  /messages/send-flow:
    post:
      tags:
        - Messages
      summary: Enviar Flow
      description: >-
        Envia um WhatsApp Flow diretamente (mensagem interativa). Para disparo
        proativo fora da janela de 24h, use send-template com um template que
        tenha botão de Flow.
      operationId: sendFlow
      parameters:
        - name: X-Request-Id
          in: header
          required: false
          description: >-
            Chave de idempotência gerada pelo integrador para evitar disparo
            duplicado da mesma mensagem em caso de retry. Gere um UUID por
            mensagem lógica e reenvie o mesmo valor se precisar repetir a
            requisição. A chave é única por canal (`channelId`). Se não for um
            UUID válido, a API responde 400 (`key: "invalid_request_id"`). Se
            omitido, não há deduplicação.
          schema:
            type: string
            format: uuid
            example: 11111111-1111-4111-8111-111111111111
      requestBody:
        required: true
        description: Dados para enviar um WhatsApp Flow
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendFlowRequestDto'
            examples:
              Flow com dados:
                summary: Flow com flowData
                value:
                  channelId: clh1234567890
                  phone: '+5511999999999'
                  flowId: '123456789012345'
                  body: Toque para escolher seu horário
                  flowCta: Agendar
                  screen: AGENDAMENTO
                  flowData:
                    agendamentoId: AG-1024
                    nome: Maria
                  metadata:
                    agendamentoId: AG-1024
                    clienteId: c_789
      responses:
        '200':
          description: >-
            Replay: uma requisição com o mesmo `X-Request-Id` já foi processada
            com sucesso neste canal. A mensagem não é reenviada e a resposta
            traz o mesmo resultado da primeira vez (mesmo `wamid`, `chatId`
            etc.).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendTemplateResponseDto'
        '201':
          description: Template enviado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendTemplateResponseDto'
        '400':
          description: Template não está aprovado ou dados inválidos
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    example: 400
                  message:
                    type: string
                    example: >-
                      Template "meu_template" não está aprovado (status:
                      REJECTED)
        '404':
          description: Template não encontrado na Meta
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    example: 404
                  message:
                    type: string
                    example: Template "meu_template" (pt_BR) não encontrado
        '409':
          description: >-
            Já existe uma requisição com o mesmo `X-Request-Id` em processamento
            neste canal. Tente novamente em instantes.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: number
                    example: 409
                  error:
                    type: string
                    example: request_in_progress
components:
  schemas:
    SendFlowRequestDto:
      type: object
      properties:
        channelId:
          type: string
          description: ID do canal para envio.
          example: clh1234567890
        phone:
          type: string
          description: Número do destinatário (formato internacional).
          example: '+5511999999999'
        flowId:
          type: string
          description: ID do WhatsApp Flow a enviar.
          example: '123456789012345'
        body:
          type: string
          description: Texto do corpo da mensagem que acompanha o botão do flow.
          example: Toque para escolher seu horário
        flowCta:
          type: string
          description: Rótulo do botão que abre o flow (CTA). Recomendado < 30 caracteres.
          example: Agendar
        screen:
          type: string
          description: Tela inicial do flow. Obrigatória quando enviar flowData.
          example: AGENDAMENTO
        flowData:
          type: object
          additionalProperties: true
          description: >-
            Dados iniciais para pré-preencher a 1ª tela (referenciados via
            ${data.campo}).
          example:
            agendamentoId: AG-1024
            nome: Maria
        mode:
          type: string
          enum:
            - draft
            - published
          description: draft (teste) ou published (padrão).
          example: published
        metadata:
          type: object
          additionalProperties: true
          description: >-
            Metadados livres gravados na mensagem (ex.: id do pedido, id do
            cliente).
          example:
            pedidoId: PED-5521
            clienteId: c_789
      required:
        - channelId
        - phone
        - flowId
        - body
        - flowCta
    SendTemplateResponseDto:
      type: object
      properties:
        success:
          type: boolean
          description: Indica se o envio foi bem-sucedido.
          example: true
        chatId:
          type: string
          description: ID interno do chat.
          example: clh0987654321
        externalChatId:
          type: string
          description: ID externo do chat (número do WhatsApp).
          example: 5511999999999@s.whatsapp.net
        wamid:
          type: string
          description: WhatsApp Message ID retornado pela Meta.
          example: wamid.HBgNNTUxMTk5OTk5OTk5FQIAERgSQjYxNzc2...
        message:
          type: string
          description: Mensagem de confirmação.
          example: Template enviado com sucesso
      required:
        - success
        - chatId
        - externalChatId
        - message
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Token JWT da sua conta. Use o formato: Bearer {seu-jwt-token}'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.