# Mensagens de texto simples WhatsApp

Texto simples é o tipo de conteúdo livre mais básico: um corpo sem anexo e uma pré-visualização opcional para o primeiro link dentro dele.

## Enviar uma mensagem de texto

Defina `text.body`:

**TypeScript**

```typescript
const msg = await bird.whatsapp.send({
  to: "+16505551234",
  from: "+13124495648",
  text: { body: "Your driver is 2 minutes away." },
});
console.log(msg.id, msg.status);
```

Examples: [TypeScript](/pt-br/documentacao/guides/whatsapp/message-types/plain-text.ts.md) · [Python](/pt-br/documentacao/guides/whatsapp/message-types/plain-text.py.md) · [Go](/pt-br/documentacao/guides/whatsapp/message-types/plain-text.go.md) · [PHP](/pt-br/documentacao/guides/whatsapp/message-types/plain-text.php.md) · [CLI](/pt-br/documentacao/guides/whatsapp/message-types/plain-text.cli.md) · [MCP](/pt-br/documentacao/guides/whatsapp/message-types/plain-text.mcp.md) · [cURL](/pt-br/documentacao/guides/whatsapp/message-types/plain-text.curl.md)

A estrutura completa adiciona `preview_url` mais os campos que qualquer envio de conteúdo livre pode conter:

```json
{
  "to": "+16505551234",
  "from": "+13124495648",
  "text": {
    "body": "Your order shipped: https://example.com/track/A1B2C3",
    "preview_url": true
  },
  "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
  "tags": [{ "name": "category", "value": "shipping" }],
  "metadata": { "order_id": "A1B2C3" }
}
```

`from` é obrigatório em toda mensagem de serviço: um número que seu espaço de trabalho possui, não um gerenciado pelo Bird. `in_reply_to_message_id` cita uma mensagem anterior na mesma conversa; consulte [Citando uma mensagem](/docs/guides/whatsapp/sending-whatsapp#quoting-a-message) para saber contra o que ele resolve e o que pode faltar.

## Limites

| Campo         | Limite                   | Aplicado por            |
| ------------- | ------------------------ | ----------------------- |
| `body`        | 1 a 4.096 caracteres     | Bird, no aceite (`422`) |
| `preview_url` | booleano, padrão `false` | N/A, informativo        |

Um `body` contendo apenas espaços em branco passa na validação do próprio schema `minLength: 1`, mas Bird ainda o captura: `body` que está vazio após o trim é recusado com `422` [`E15015`](/docs/api/errors/E15015) `WhatsAppContentRequired`. Um corpo acima de 4.096 caracteres é recusado com um `422` simples e sem código de catálogo dedicado.

## Lendo uma mensagem de texto recebida

Uma mensagem de texto recebida contém o mesmo campo `text.body`, e nada mais nesse tipo. Consulte [Recebendo mensagens de texto WhatsApp](/docs/guides/whatsapp/receiving-whatsapp/plain-text) para a leitura completa de entrada, o payload `whatsapp.received` e o que observar.

## Limites e casos especiais

- **A janela de atendimento ao cliente precisa estar aberta.** Texto simples é uma mensagem de serviço, entregável apenas dentro de uma janela aberta; consulte a [janela de atendimento ao cliente](/docs/guides/whatsapp/message-types#the-customer-service-window) do hub.
- **`preview_url` afeta apenas o primeiro link, e apenas o que o cliente do destinatário renderiza.** O padrão é `false`. Defina-o para pré-visualizar a primeira URL em `body`; uma URL posterior no mesmo corpo nunca recebe pré-visualização. Se o cliente do destinatário não conseguir buscar uma pré-visualização para esse link, ele volta silenciosamente a um link clicável simples. Nada na leitura informa se a pré-visualização foi de fato renderizada.
- **O markdown WhatsApp é a renderização do cliente do destinatário de `body`, não parte do contrato API.** Bird repassa `body` sem alterações; não valida, remove nem codifica `*bold*`, `_italic_`, `~strikethrough~` ou monoespaçado com três crases. Se esses marcadores são renderizados depende inteiramente do cliente que abre a mensagem.
- **Uma mensagem recebida `body` não tem garantia de ser não vazia, apesar do que o schema de leitura diz.** A Meta pode relatar uma mensagem recebida como `"text": {}` ou com um `body` vazio, e Bird armazena-a literalmente em vez de sintetizar um placeholder. Essa é uma lacuna conhecida e em aberto: não escreva um consumidor que confie no `required: body` do schema aqui.

## Próximos passos

- [Mensagens de serviço WhatsApp](/docs/guides/whatsapp/message-types): a janela de atendimento ao cliente e o modelo que toda mensagem de serviço compartilha
- [Enviando mensagens WhatsApp](/docs/guides/whatsapp/sending-whatsapp): o envelope da solicitação, o modelo `202` e tentativas seguras de reenvio
- [Mensagens interativas](/docs/guides/whatsapp/message-types/interactive): quando você quer um toque em vez de uma resposta digitada

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/products/whatsapp) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
