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

# Templates

> O que é um template de WhatsApp e quando você precisa de um para enviar.

Um **template** é uma mensagem pré-aprovada pela Meta. É o único tipo de
mensagem que você pode enviar quando a **janela de 24 horas está fechada** — ou
seja, quando o contato não escreveu para você nas últimas 24 horas. Enquanto a
janela está aberta você pode enviar texto livre; uma vez fechada, apenas um
template chega ao cliente.

<Note>
  Os templates são criados e aprovados no dashboard. A API pública apenas os
  **consome** para enviar — não os cria nem os edita.
</Note>

## Como um template é resolvido

<Steps>
  <Step title="Identifique o template pelo nome">
    Um template é identificado pelo seu `template_name` — o mesmo nome que você vê
    no dashboard e que reporta à Meta.
  </Step>

  <Step title="Especifique o idioma se for necessário">
    Se o mesmo nome estiver aprovado em vários idiomas, adicione `language`
    (formato Meta `lower_UPPER`, ex. `pt_BR`) para escolher qual enviar. Se só
    existir em um idioma, é opcional.
  </Step>

  <Step title="Verifique que esteja aprovado">
    Só é possível enviar templates com status **`APPROVED`**. Um em `PENDING`
    ou `REJECTED` não é enviável.
  </Step>
</Steps>

## Componentes de um template

Ao enviar um template você preenche suas partes dinâmicas:

<CardGroup cols={3}>
  <Card title="body_variables" icon="brackets-curly">
    Os placeholders do corpo (`{{1}}`, `{{2}}`, ...). Array de objetos
    `{ index, value }`.
  </Card>

  <Card title="header" icon="image">
    O cabeçalho: texto, ou mídia via `file_uuid`.
  </Card>

  <Card title="button_parameters" icon="link">
    Parâmetros de botões dinâmicos (ex. o sufixo de um botão URL).
  </Card>
</CardGroup>

## Enviar um template

Um envio típico, com duas variáveis no corpo:

```bash theme={null}
curl -X POST "https://app.1to1.ai/api/v1/public/{slug}/conversation/messages/template" \
  -H "Authorization: Bearer sk_1to1_sua_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "conversation": { "phone": "+5215512345678" },
    "template_name": "confirmacao_consulta",
    "language": "pt_BR",
    "body_variables": [
      { "index": 1, "value": "Ana" },
      { "index": 2, "value": "10:00 AM" }
    ]
  }'
```

<Tip>
  Para descobrir quais templates você tem disponíveis e quais variáveis cada
  um espera, consulte os endpoints de catálogo de templates na Referência da API.
</Tip>

## Templates de teste para conversas tester

O dashboard permite criar **templates de teste** (`status: FAKE`) a partir do
módulo Tester sem passar pela aprovação da Meta. Existem para que o operador
e os integradores testem fluxos contra conversas tester sem esperar a revisão
da Meta.

Regras de envio via API pública:

* **Conversa tester** (`is_tester: true` em `GET /conversations`) — você pode
  enviar tanto templates APPROVED quanto templates FAKE. O envio replica o
  fluxo real mas não toca a Meta (`wamid` retorna `""`).
* **Conversa real** (`is_tester: false`) — **somente** templates APPROVED.
  Se você tentar enviar um template FAKE ou um template com `is_tester: true`
  para uma conversa real, a API responde com
  `TEMPLATE_FAKE_REQUIRES_TESTER_CONVERSATION` (422).

O catálogo público (`GET /templates` e `GET /templates/{name}/{language}`)
não inclui templates FAKE — apenas os APPROVED reais. Se você precisa do
nome de um template FAKE para enviá-lo, pergunte ao operador.

## Próximos passos

<CardGroup cols={2}>
  <Card title="Enviar mensagens" icon="paper-plane" href="/pt/messages">
    O envio de templates, texto, mídia e quick replies.
  </Card>

  <Card title="Conversas" icon="comments" href="/pt/conversations">
    A janela de 24 horas e o estado de uma conversa.
  </Card>
</CardGroup>
