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

# Mensagens

> Enviar texto, mídia, respostas rápidas e templates com a ação send_message, conforme a janela de 24h.

Todo envio de WhatsApp sai por uma única ação, **`send_message`**, dentro do
endpoint `POST /conversation/actions`. Uma mesma ação cobre os quatro modos —texto,
mídia, resposta rápida e template—; qual você pode usar depende do estado da
[janela de 24h](/pt/conversations) da conversa.

## Qual modo se aplica conforme a janela

| Modo            | Janela aberta | Janela fechada      |
| --------------- | ------------- | ------------------- |
| Texto           | ✅             | ❌ `WINDOW_CLOSED`   |
| Mídia           | ✅             | ❌ `WINDOW_CLOSED`   |
| Resposta rápida | ✅             | ❌ `WINDOW_CLOSED`   |
| **Template**    | ✅             | ✅ — reabre a janela |

<Tip>
  O **template** é a única mensagem que você pode enviar com a janela fechada. Além
  disso, enviá-lo reabre a janela, habilitando texto, mídia e resposta rápida
  novamente.
</Tip>

## Os quatro modos de `send_message`

Cada `send_message` envia **um único tipo de conteúdo**: texto (`body`), mídia
(`file_uuid`), uma resposta rápida (`quick_reply`) ou um template (`template`).
Os três primeiros admitem ainda um template de *fallback* para quando a janela
está fechada (ver abaixo).

<Tabs>
  <Tab title="Texto">
    Texto livre, até 4096 caracteres.

    ```jsonc theme={null}
    {
      "type": "send_message",
      "body": "Olá 👋, como posso ajudar?"
    }
    ```
  </Tab>

  <Tab title="Mídia">
    Imagem, vídeo, áudio ou documento: passe um `file_uuid` de um arquivo já
    enviado e confirmado, com `body` como legenda opcional. O tipo é deduzido do
    arquivo; áudio não admite legenda. O fluxo de upload está em
    [Enviar mídia](/pt/action-groups/upload-media).

    ```jsonc theme={null}
    {
      "type": "send_message",
      "file_uuid": "7b8a1c2d-3e4f-5678-90ab-cdef12345678",
      "body": "Aqui está o seu comprovante 📄"
    }
    ```
  </Tab>

  <Tab title="Resposta rápida">
    Uma resposta pré-configurada no dashboard, identificada por `name`
    (sem distinguir maiúsculas). Pode emitir várias mensagens.

    ```jsonc theme={null}
    {
      "type": "send_message",
      "quick_reply": { "name": "Boas-vindas" }
    }
    ```
  </Tab>

  <Tab title="Template">
    Um template aprovado pelo Meta — o único modo que funciona com a janela
    fechada. `language` é obrigatório (formato Meta `lower_UPPER`, ex. `pt_BR`).
    Veja [Templates](/pt/templates).

    ```jsonc theme={null}
    {
      "type": "send_message",
      "template": {
        "name": "confirmacao_consulta",
        "language": "pt_BR",
        "body_variables": [{ "index": 1, "value": "Ana" }]
      }
    }
    ```
  </Tab>
</Tabs>

## Enviar

O envio é uma ação dentro do grupo. Faça um `POST /conversation/actions` com um
`send_message` no array `actions`:

```bash theme={null}
curl -X POST "https://app.1to1.ai/api/v1/public/{slug}/conversation/actions" \
  -H "Authorization: Bearer sk_1to1_sua_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "conversation": {
      "phone": "+5215512345678",
      "channel": "ch_7A9K2M4Q"
    },
    "actions": [
      {
        "type": "send_message",
        "body": "Olá 👋, como posso ajudar?"
      }
    ]
  }'
```

Responde `202`: o envio corre em background. Consulte o resultado no estado da
conversa ou no activity log. Para encadear vários envios ou outras ações em um
mesmo request, veja [Ações](/pt/action-groups/overview).

## Fallback de template para a janela fechada

Um `send_message` de texto, mídia ou resposta rápida pode incluir ainda um
`template` opcional: se ao executar a janela estiver **fechada**, envia-se o
template em vez do primário; se estiver **aberta**, envia-se o primário. Sem
`template`, um primário com a janela fechada falha com `WINDOW_CLOSED`.

```bash theme={null}
curl -X POST "https://app.1to1.ai/api/v1/public/{slug}/conversation/actions" \
  -H "Authorization: Bearer sk_1to1_sua_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "conversation": {
      "phone": "+5215512345678",
      "channel": "ch_7A9K2M4Q"
    },
    "actions": [
      {
        "type": "send_message",
        "body": "Olá 👋",
        "template": {
          "name": "lembrete",
          "language": "pt_BR"
        }
      }
    ]
  }'
```

## Próximos passos

<CardGroup cols={2}>
  <Card title="Templates" icon="file-lines" href="/pt/templates">
    Criar e enviar templates para reabrir a janela.
  </Card>

  <Card title="Ações" icon="layer-group" href="/pt/action-groups/overview">
    Encadear envios, etiquetas, notas e execução de AI em um request.
  </Card>
</CardGroup>
