> ## 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.

# Enquete

> Envie enquetes com múltiplas opções via WhatsApp

# Enquete

O tipo `POLL` permite enviar enquetes com múltiplas opções de resposta. Só canais WhatsApp Web enviam. O `messageId` da enquete é o `pollMessageId` dos votos recebidos.

## Payload

```json theme={null}
{
  "channelId": "uuid-do-canal",
  "content": {
    "type": "POLL",
    "to": {
      "type": "WHATSAPP",
      "number": "5511999999999"
    },
    "name": "Qual horário você prefere?",
    "options": ["Manhã", "Tarde", "Noite"],
    "selectableCount": 1
  }
}
```

## Campos

**content.type** `string` *required*

Deve ser `"POLL"`.

**content.to** `Address` *required*

Endereço do destinatário. Veja [formatos de endereço](https://docs.messagefy.io/mensagens/visao-geral.md#enderecamento-address).

**content.name** `string` *required*

Pergunta da enquete.

**content.options** `string[]` *required*

Lista de opções da enquete, de 2 a 12 opções, sem repetição. As opções são comparadas pelo texto exato, sem os espaços das pontas.

**content.selectableCount** `integer` (default: 0)

Quantas opções o votante pode marcar. `0` = múltipla escolha livre (pode marcar quantas quiser). Use `1` para escolha única.

## Exemplos

### Enquete de escolha única

```bash cURL theme={null}
curl -X POST https://api-dev.messagefy.io/api/v1/message/SendMessage \
  -H "Content-Type: application/json" \
  -H "API-KEY: sua-api-key-aqui" \
  -d '{
    "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "content": {
      "type": "POLL",
      "to": {
        "type": "WHATSAPP",
        "number": "5511999999999"
      },
      "name": "Qual horário você prefere?",
      "options": ["Manhã", "Tarde", "Noite"],
      "selectableCount": 1
    }
  }'
```

```python Python theme={null}
import requests

response = requests.post(
    "https://api-dev.messagefy.io/api/v1/message/SendMessage",
    headers={
        "Content-Type": "application/json",
        "API-KEY": "sua-api-key-aqui"
    },
    json={
        "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "content": {
            "type": "POLL",
            "to": {
                "type": "WHATSAPP",
                "number": "5511999999999"
            },
            "name": "Qual horário você prefere?",
            "options": ["Manhã", "Tarde", "Noite"],
            "selectableCount": 1
        }
    }
)
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",
      "API-KEY": "sua-api-key-aqui",
    },
    body: JSON.stringify({
      channelId: "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      content: {
        type: "POLL",
        to: {
          type: "WHATSAPP",
          number: "5511999999999",
        },
        name: "Qual horário você prefere?",
        options: ["Manhã", "Tarde", "Noite"],
        selectableCount: 1,
      },
    }),
  }
);
const data = await response.json();
console.log(data);
```

### Enquete de múltipla escolha

```json theme={null}
{
  "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "content": {
    "type": "POLL",
    "to": {
      "type": "WHATSAPP",
      "number": "5511999999999"
    },
    "name": "Quais tópicos você gostaria de ver no evento?",
    "options": [
      "Inteligência Artificial",
      "Cloud Computing",
      "DevOps",
      "Segurança",
      "Blockchain"
    ],
    "selectableCount": 3
  }
}
```

### Enquete para grupo

```json theme={null}
{
  "channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "content": {
    "type": "POLL",
    "to": {
      "type": "WHATSAPP",
      "jid": "120363402110764959@g.us"
    },
    "name": "Onde será o almoço de confraternização?",
    "options": ["Restaurante Italiano", "Churrascaria", "Sushi", "Pizzaria"],
    "selectableCount": 1
  }
}
```

## Resposta

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

> [!NOTE]
>
> Guarde o `packageId` retornado. Ele será referenciado nos webhooks de status (`MESSAGE_SENT`, `MESSAGE_DELIVERED`, etc.). O `messageId` da enquete (retornado no `MESSAGE_SENT`) é usado para correlacionar os votos recebidos via webhook `POLL_VOTE`.

## Recebimento

O tipo `POLL` também chega via webhook quando alguém envia uma enquete para o seu canal. Sempre que uma enquete é recebida, a plataforma entrega um `Package` com `content.type` igual a `"POLL"` na URL do seu canal de webhook.

### Exemplo de webhook recebido

```json theme={null}
{
  "packageId": "019a129d-06ad-74bc-9543-bcc030a38169",
  "correlationId": null,
  "channelId": "019a1258-177c-7286-b060-9ee02a0800c7",
  "content": {
    "type": "POLL",
    "name": "Qual horário você prefere?",
    "options": ["Manhã", "Tarde", "Noite"],
    "selectableCount": 1,
    "optionHashes": [
      "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2",
      "b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3",
      "c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
    ],
    "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,
    "timestamp": "2025-10-23T19:47:51+00:00"
  },
  "timestamp": "2025-10-23T19:47:52.1095029+00:00"
}
```

### Conteúdo (content)

**type** `string`

Sempre `"POLL"`.

**name** `string`

Pergunta da enquete.

**options** `string[]`

Lista de opções da enquete.

**selectableCount** `integer`

Quantas opções o votante pode marcar. `0` = múltipla escolha livre.

**optionHashes** `string[] | null`

SHA-256 (hex) de cada opção, na mesma ordem de `options`. Use estes hashes para correlacionar com os `selectedOptionHashes` dos votos recebidos via webhook `POLL_VOTE`. Ignorado no envio.

**from** `Address`

Remetente da enquete. Veja [formatos de endereço](https://docs.messagefy.io/mensagens/visao-geral.md#enderecamento-address).

**to** `Address`

Destino da enquete (o seu canal ou o grupo).

**messageId** `string`

ID da enquete no provedor. Este é o `pollMessageId` que os votos (`POLL_VOTE`) referenciam. Guarde-o para correlacionar os votos recebidos.

**isFromMe** `boolean`

`true` quando a enquete foi enviada pelo próprio canal.

**isGroupMessage** `boolean`

`true` quando a enquete veio de um grupo.

**isForwarded** `boolean`

`true` quando a enquete foi encaminhada.

**isStatusMessage** `boolean`

`true` quando é uma mensagem de status (story).

**isHistoryMessage** `boolean`

`true` quando a mensagem veio da sincronização de histórico do dispositivo.

**isNewsletter** `boolean`

`true` quando a mensagem veio de um canal/newsletter do WhatsApp (JID `@newsletter`).

**isBroadcast** `boolean`

`true` quando a mensagem veio de uma lista de transmissão (JID `@broadcast`).

**isAnnounceGroup** `boolean`

`true` quando a mensagem veio de um grupo em modo somente-admin (announce).

**isCommunityNotices** `boolean`

`true` quando a mensagem veio do grupo "Avisos" de uma comunidade do WhatsApp.

**quotedMessage** `object | null`

Presente quando a enquete é resposta (quote) a outra mensagem.

**metaReferralAds** `object | null`

Presente quando a conversa se originou de um anúncio Click-to-WhatsApp.

**deliveryStrategy** `integer`

Estratégia de entrega associada: `0` = DEFAULT, `10` = TRANSACIONAL, `20` = MARKETING.

**priority** `integer`

Prioridade da mensagem, de 0 (padrão) a 5.

**deliveryDeadline** `DateTime | null`

Prazo limite de entrega, quando definido. Normalmente `null` em mensagens recebidas.

**timestamp** `DateTimeOffset`

Horário da mensagem no provedor.

> [!TIP]
>
> Para correlacionar votos com a enquete, use o campo `optionHashes`: cada hash é o SHA-256 do texto da opção correspondente. Quando um voto chega via webhook `POLL_VOTE`, os `selectedOptionHashes` indicam quais opções foram selecionadas.


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