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

# Mensagem de Texto

> Envie mensagens de texto simples via WhatsApp e outros canais

# Mensagem de Texto

O tipo `TEXT` é o mais básico e mais utilizado. Permite enviar mensagens de texto simples para qualquer destinatário.

## Payload

```json theme={null}
{
  "channelId": "uuid-do-canal",
  "content": {
    "type": "TEXT",
    "to": {
      "type": "WHATSAPP",
      "number": "5511999999999"
    },
    "text": "Ola! Como posso ajudar?"
  }
}
```

## Campos

<ParamField body="content.type" type="string" required>
  Deve ser `"TEXT"`.
</ParamField>

<ParamField body="content.to" type="Address" required>
  Endereço do destinatário. Veja [formatos de endereço](/mensagens/visao-geral#enderecamento-address).
</ParamField>

<ParamField body="content.text" type="string" required>
  Texto da mensagem. Suporta emojis e caracteres Unicode. O WhatsApp suporta formatação básica: `*negrito*`, `_italico_`, `~tachado~`, ` ```monospacado``` `.
</ParamField>

## Exemplos

### Mensagem simples

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api-dev.messagefy.io/api/v1/message/SendMessage \
    -H "Content-Type: application/json" \
    -H "X-API-KEY: sua-api-key-aqui" \
    -d '{
      "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "content": {
        "type": "TEXT",
        "to": {
          "type": "WHATSAPP",
          "number": "5511999999999"
        },
        "text": "Ola! Seu codigo de verificacao e: *482910*"
      }
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api-dev.messagefy.io/api/v1/message/SendMessage",
      headers={
          "Content-Type": "application/json",
          "X-API-KEY": "sua-api-key-aqui"
      },
      json={
          "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "content": {
              "type": "TEXT",
              "to": {
                  "type": "WHATSAPP",
                  "number": "5511999999999"
              },
              "text": "Ola! Seu codigo de verificacao e: *482910*"
          }
      }
  )
  print(response.json())
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    "https://api-dev.messagefy.io/api/v1/message/SendMessage",
    {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "X-API-KEY": "sua-api-key-aqui",
      },
      body: JSON.stringify({
        channelId: "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        content: {
          type: "TEXT",
          to: {
            type: "WHATSAPP",
            number: "5511999999999",
          },
          text: "Ola! Seu codigo de verificacao e: *482910*",
        },
      }),
    }
  );
  const data = await response.json();
  console.log(data);
  ```
</CodeGroup>

### Usando JID como endereço

```json theme={null}
{
  "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "content": {
    "type": "TEXT",
    "to": {
      "type": "WHATSAPP",
      "jid": "5511999999999@s.whatsapp.net"
    },
    "text": "Mensagem usando JID como endereco"
  }
}
```

### Mensagem para grupo

```json theme={null}
{
  "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "content": {
    "type": "TEXT",
    "to": {
      "type": "WHATSAPP",
      "jid": "120363402110764959@g.us"
    },
    "text": "Ola, grupo! Reuniao confirmada para amanha as 14h."
  }
}
```

<Note>
  Para enviar mensagens em grupos, use o formato JID com sufixo `@g.us`. Você pode obter os IDs dos grupos pelo comando [Listar Grupos](/comandos/grupos).
</Note>

### Respondendo a uma mensagem (Quote/Reply)

Para enviar uma mensagem como resposta a outra, inclua o campo `quotedMessage`:

```json theme={null}
{
  "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "content": {
    "type": "TEXT",
    "to": {
      "type": "WHATSAPP",
      "number": "5511999999999"
    },
    "text": "Sim, o pagamento foi confirmado!",
    "quotedMessage": {
      "messageId": "20CFBA298FAB68AA75D3B369EDB5C805",
      "participant": "5511999999999@s.whatsapp.net",
      "body": "O pagamento do boleto ja foi processado?",
      "type": "TEXT"
    }
  }
}
```

<Tip>
  O `messageId` da mensagem original é recebido nos webhooks de mensagem. Guarde-o caso precise responder posteriormente.
</Tip>

<Warning>
  Em **grupos**, o `participant` deve ser o **LID** do autor da mensagem citada
  (ex.: `252780317044848@lid`), recebido em `content.from.lid` nos webhooks -- **não use o JID**.
  Valor errado não gera erro: a mensagem é entregue **sem** a citação. Veja
  [Responder a uma mensagem](/mensagens/visao-geral#responder-a-uma-mensagem-quotedmessage).
</Warning>

### Com prioridade e estratégia de entrega

```json theme={null}
{
  "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "correlationId": "otp-login-user-42",
  "content": {
    "type": "TEXT",
    "to": {
      "type": "WHATSAPP",
      "number": "5511999999999"
    },
    "text": "Seu codigo OTP: *291847*. Valido por 5 minutos.",
    "deliveryStrategy": 10,
    "priority": 1
  }
}
```

## Resposta

```json theme={null}
{
  "packageId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
```

## Formatação de Texto (WhatsApp)

O WhatsApp suporta formatação básica no corpo da mensagem:

| Formato         | Sintaxe         | Exemplo         |
| --------------- | --------------- | --------------- |
| **Negrito**     | `*texto*`       | `*importante*`  |
| *Italico*       | `_texto_`       | `_observacao_`  |
| ~~Tachado~~     | `~texto~`       | `~cancelado~`   |
| `Monospacado`   | `` `texto` ``   | `` `código` ``  |
| Bloco de código | ` ```texto``` ` | ` ```bloco``` ` |

<Warning>
  A formatação depende do provedor de destino. Nem todos os canais suportam esses formatos -- no WhatsApp, todos funcionam nativamente.
</Warning>

## Recebimento

O tipo `TEXT` é o webhook de mensagem recebida mais comum. Sempre que um contato envia uma mensagem de texto para o seu canal, a plataforma entrega um `Package` com `content.type` igual a `"TEXT"` na URL do seu canal de webhook (`http-sender`). O conteúdo vem dentro do envelope `Package` (veja [Recebendo Eventos](/recebendo-eventos)).

<Note>
  Ao receber um webhook, responda com `200 OK` para confirmar o processamento. Qualquer outro status é tratado como falha e pode gerar novas tentativas de entrega.
</Note>

### Exemplo de webhook recebido

```json theme={null}
{
  "packageId": "019a129d-06ad-74bc-9543-bcc030a38169",
  "correlationId": null,
  "channelId": "019a1258-177c-7286-b060-9ee02a0800c7",
  "content": {
    "type": "TEXT",
    "text": "Ola! Gostaria de mais informacoes.",
    "from": {
      "type": "WHATSAPP",
      "jid": "5511999998888@s.whatsapp.net",
      "number": "5511999998888",
      "name": "Cliente"
    },
    "to": {
      "type": "WHATSAPP",
      "jid": "5511988887777@s.whatsapp.net",
      "number": "5511988887777",
      "name": "Minha Empresa"
    },
    "messageId": "3EB08209536937A66D8434",
    "isFromMe": false,
    "isGroupMessage": false,
    "isForwarded": false,
    "isStatusMessage": false,
    "isHistoryMessage": false,
    "deliveryStrategy": 0,
    "priority": 0,
    "deliveryDeadline": null,
    "timestamp": "2025-10-23T19:47:51+00:00"
  },
  "timestamp": "2025-10-23T19:47:52.1095029+00:00",
  "echoMessage": null,
  "providerMetadata": null
}
```

### Conteúdo (content)

<ResponseField name="type" type="string">
  Sempre `"TEXT"`.
</ResponseField>

<ResponseField name="text" type="string">
  Conteúdo textual da mensagem recebida.
</ResponseField>

<ResponseField name="from" type="Address">
  Remetente da mensagem. Para WhatsApp: `type` = `"WHATSAPP"`, com `jid`, `lid`, `number` e `name`. Veja [formatos de endereço](/mensagens/visao-geral#enderecamento-address).
</ResponseField>

<ResponseField name="to" type="Address">
  Destino da mensagem (o seu canal ou o grupo). Em grupos, o `jid` termina em `@g.us`.
</ResponseField>

<ResponseField name="messageId" type="string">
  ID da mensagem no provedor. Guarde-o para responder, reagir ou marcar como lida posteriormente.
</ResponseField>

<ResponseField name="isFromMe" type="boolean">
  `true` quando a mensagem foi enviada pelo próprio canal.
</ResponseField>

<ResponseField name="isGroupMessage" type="boolean">
  `true` quando a mensagem veio de um grupo.
</ResponseField>

<ResponseField name="isForwarded" type="boolean">
  `true` quando a mensagem foi encaminhada.
</ResponseField>

<ResponseField name="isStatusMessage" type="boolean">
  `true` quando é uma mensagem de status (story).
</ResponseField>

<ResponseField name="isHistoryMessage" type="boolean">
  `true` quando a mensagem veio da sincronização de histórico do dispositivo, e não de um recebimento novo em tempo real.
</ResponseField>

<ResponseField name="isNewsletter" type="boolean">
  `true` quando a mensagem veio de um canal/newsletter do WhatsApp (JID `@newsletter`). Chat de mão única: só o dono do canal publica, o assinante recebe e não tem como responder.
</ResponseField>

<ResponseField name="isBroadcast" type="boolean">
  `true` quando a mensagem veio de uma lista de transmissão (JID `@broadcast`). Inclui status/stories (`status@broadcast`) — quando a mensagem é de status, `isStatusMessage` e `isBroadcast` são ambos `true`.
</ResponseField>

<ResponseField name="isAnnounceGroup" type="boolean">
  `true` quando a mensagem veio de um grupo em modo somente-admin (announce), onde apenas administradores podem enviar mensagens.
</ResponseField>

<ResponseField name="isCommunityNotices" type="boolean">
  `true` quando a mensagem veio do grupo "Avisos" de uma comunidade do WhatsApp, onde só os administradores da comunidade publicam.
</ResponseField>

<ResponseField name="quotedMessage" type="object | null">
  Presente quando a mensagem é resposta (quote) a outra. Veja os campos no accordion abaixo.
</ResponseField>

<ResponseField name="metaReferralAds" type="object | null">
  Presente quando a conversa se originou de um anúncio Click-to-WhatsApp (CTWA). Veja os campos no accordion abaixo.
</ResponseField>

<ResponseField name="deliveryStrategy" type="integer">
  Estratégia de entrega associada, como número: `0` = DEFAULT, `10` = TRANSACIONAL, `20` = MARKETING.
</ResponseField>

<ResponseField name="priority" type="integer">
  Prioridade da mensagem, de 0 (padrão) a 5.
</ResponseField>

<ResponseField name="deliveryDeadline" type="DateTime | null">
  Prazo limite de entrega, quando definido. Normalmente `null` em mensagens recebidas.
</ResponseField>

<ResponseField name="timestamp" type="DateTimeOffset">
  Horário da mensagem no provedor.
</ResponseField>

<AccordionGroup>
  <Accordion title="Campos de quotedMessage">
    <ResponseField name="messageId" type="string | null">
      ID da mensagem original que está sendo citada.
    </ResponseField>

    <ResponseField name="participant" type="string | null">
      Autor da mensagem citada. Pode estar no formato `5511999999999@s.whatsapp.net` ou `179508325961790@lid`.
    </ResponseField>

    <ResponseField name="body" type="string | null">
      Prévia do corpo da mensagem citada.
    </ResponseField>

    <ResponseField name="type" type="string | null">
      Tipo da mensagem citada (ex.: `TEXT`, `IMAGE`).
    </ResponseField>

    <ResponseField name="thumbnail" type="string | null">
      Miniatura (base64) da mensagem citada, quando ela contém mídia.
    </ResponseField>

    <ResponseField name="isStatusReply" type="boolean">
      `true` quando a mensagem é uma resposta a um status (story).
    </ResponseField>
  </Accordion>

  <Accordion title="Campos de metaReferralAds (Click-to-WhatsApp Ads)">
    <ResponseField name="sourceUrl" type="string | null">
      URL de origem do anúncio.
    </ResponseField>

    <ResponseField name="sourceType" type="string | null">
      Tipo da origem do anúncio (ex.: `ad`, `post`).
    </ResponseField>

    <ResponseField name="sourceId" type="string | null">
      Identificador do anúncio ou publicação de origem.
    </ResponseField>

    <ResponseField name="headline" type="string | null">
      Título do anúncio.
    </ResponseField>

    <ResponseField name="body" type="string | null">
      Texto/descrição do anúncio.
    </ResponseField>

    <ResponseField name="mediaType" type="string | null">
      Tipo de mídia do anúncio (ex.: `image`, `video`).
    </ResponseField>

    <ResponseField name="imageUrl" type="string | null">
      URL da imagem do anúncio.
    </ResponseField>

    <ResponseField name="videoUrl" type="string | null">
      URL do vídeo do anúncio.
    </ResponseField>

    <ResponseField name="thumbnailUrl" type="string | null">
      URL da miniatura do anúncio.
    </ResponseField>

    <ResponseField name="ctwaClid" type="string | null">
      Click ID do Click-to-WhatsApp, útil para atribuição de conversões.
    </ResponseField>
  </Accordion>
</AccordionGroup>
