Enquete
Pergunta com opções, que o contato responde tocando.
text: a pergunta.choices[]: as opções, pelo nome.selectable_count: quantas o contato pode marcar, de0(várias) até o número de opções.
Cada voto chega como mensagem poll_vote, com as opções marcadas pelo nome. Para votar pela inbox, mande "type": "poll_vote" com a enquete em poll.id e as opções em choices ([] tira o voto); to é opcional, o voto vai para a conversa da enquete.
{
"type": "poll_vote",
"poll": { "id": "3EB05DCE1D4036FCE241C6" },
"choices": ["Tarde"]
}
Canais
| Canal | Funciona | Observação |
|---|---|---|
| WhatsApp (Web) | Sim | |
| WhatsApp (API oficial) | Não | |
| Não | ||
| Messenger | Não | |
| Telegram | Não |
Pedido
POST /messages com "type": "poll". Testar
{
"to": "5511999999999",
"type": "poll",
"text": "Qual horário prefere?",
"choices": [
"Manhã",
"Tarde"
],
"selectable_count": 1
}
Na uazapi
POST /send/menu, que continua funcionando. Na uazapi a enquete era POST /send/menu com type: poll, e o voto pela inbox era um texto >1 (ou >0) respondendo à enquete. Na Orkesio um texto vai como texto: o voto é type: poll_vote.
{
"number": "5511999999999",
"type": "poll",
"text": "Qual horário prefere?",
"choices": [
"Manhã",
"Tarde"
],
"selectableCount": 1
}{
"to": "5511999999999",
"type": "poll",
"text": "Qual horário prefere?",
"choices": [
"Manhã",
"Tarde"
],
"selectable_count": 1
}Resposta
A própria mensagem (OrkesioMessage), no formato do message.sent e da busca. No WhatsApp Web volta na hora com status: queued: por padrão o envio vai pela fila (com options.async: false, espera o envio e volta a mensagem enviada). É o pedido no formato da mensagem: o arquivo, a miniatura e a prévia do link chegam no message.sent. Na API oficial volta depois que a Meta aceita, com status: pending. O resultado chega em message.status (a falha também em message.failed).
{
"id": "3EB05DCE1D4036FCE241C6",
"chat_id": "5511999999999@s.whatsapp.net",
"author": {
"id": "5511888888888@s.whatsapp.net",
"phone": "5511888888888"
},
"direction": "out",
"sent_at": "2026-10-17T12:00:00.000Z",
"category": "unsent",
"type": "poll",
"text": "Qual horário prefere?",
"choices": [
"Manhã",
"Tarde"
],
"selectable_count": 1,
"sent_by": "api",
"status": "queued"
}
Na uazapi
O content da uazapi é o proto do WhatsApp; aqui vai resumido (...).
{
"id": "5511888888888:3EB05DCE1D4036FCE241C6",
"messageid": "3EB05DCE1D4036FCE241C6",
"chatid": "5511999999999@s.whatsapp.net",
"chatlid": "123456789012345@lid",
"fromMe": true,
"isGroup": false,
"groupName": "",
"sender": "987654321098765@lid",
"sender_pn": "5511888888888@s.whatsapp.net",
"sender_lid": "987654321098765@lid",
"senderName": "",
"messageType": "PollCreationMessageV3",
"mediaType": "",
"messageTimestamp": 1792238400000,
"source": "web",
"status": "",
"text": "Qual horário prefere?",
"content": {
"name": "Qual horário prefere?",
"options": [
{
"optionName": "Manhã"
},
{
"optionName": "Tarde"
}
],
"selectableOptionsCount": 1
},
"quoted": "",
"edited": "",
"reaction": "",
"vote": "",
"buttonOrListid": "",
"convertOptions": "",
"pinned": false,
"owner": "5511888888888",
"wasSentByApi": true,
"track_source": "",
"track_id": "",
"response": {
"status": "success",
"message": "Message sent successfully"
}
}{
"id": "3EB05DCE1D4036FCE241C6",
"chat_id": "5511999999999@s.whatsapp.net",
"author": {
"id": "5511888888888@s.whatsapp.net",
"phone": "5511888888888"
},
"direction": "out",
"sent_at": "2026-10-17T12:00:00.000Z",
"category": "unsent",
"type": "poll",
"text": "Qual horário prefere?",
"choices": [
"Manhã",
"Tarde"
],
"selectable_count": 1,
"sent_by": "api",
"status": "queued"
}No webhook
O que chega no seu webhook (ou em GET /events) depois do envio.
message.sent
Quando a mensagem sai. O evento message.sent
{
"id": "evt_01JAB3K9ZQ7V0M4T8R2X6WYD5H",
"type": "message.sent",
"created_at": "2026-10-17T12:00:00.000Z",
"inbox": {
"id": "r0269625d29bfbd",
"name": "loja",
"phone": "5511888888888",
"channel": "whatsapp_web"
},
"data": {
"message": {
"id": "3EB05DCE1D4036FCE241C6",
"chat_id": "5511999999999@s.whatsapp.net",
"author": {
"id": "5511888888888@s.whatsapp.net",
"phone": "5511888888888"
},
"direction": "out",
"sent_at": "2026-10-17T12:00:00.000Z",
"category": "conversation",
"type": "poll",
"text": "Qual horário prefere?",
"choices": [
"Manhã",
"Tarde"
],
"selectable_count": 1,
"sent_by": "api"
},
"chat": {
"id": "5511999999999@s.whatsapp.net",
"lid": "123456789012345@lid",
"type": "direct"
}
}
}
message.status
sent, delivered, read e played (áudio e voz), um evento por mudança; failed se o envio falhar. O evento message.status
{
"id": "evt_01JAB3K9ZQ7V0M4T8R2X6WYD6J",
"type": "message.status",
"created_at": "2026-10-17T12:00:05.000Z",
"inbox": {
"id": "r0269625d29bfbd",
"name": "loja",
"phone": "5511888888888",
"channel": "whatsapp_web"
},
"data": {
"chat": {
"id": "5511999999999@s.whatsapp.net",
"lid": "123456789012345@lid",
"type": "direct"
},
"status": "delivered",
"at": "2026-10-17T12:00:05.000Z",
"messages": [
{
"id": "3EB05DCE1D4036FCE241C6"
}
]
}
}
Quando o contato responde
message.received
O contato votou em Tarde. Cada voto (e cada troca de voto) chega assim, com category: event; choices vazio é o voto retirado. O evento message.received
{
"id": "evt_01JAB3M2K8P4R6T8V0X2Z4B6D8",
"type": "message.received",
"created_at": "2026-10-17T12:03:00.000Z",
"inbox": {
"id": "r0269625d29bfbd",
"name": "loja",
"phone": "5511888888888",
"channel": "whatsapp_web"
},
"data": {
"message": {
"id": "AC1FACA14F3FA7A19DB5FB19D7035506",
"chat_id": "5511999999999@s.whatsapp.net",
"author": {
"id": "5511999999999@s.whatsapp.net",
"phone": "5511999999999",
"lid": "123456789012345@lid",
"name": "Maria Souza"
},
"direction": "in",
"sent_at": "2026-10-17T12:03:00.000Z",
"category": "event",
"type": "poll_vote",
"poll": {
"id": "3EB05DCE1D4036FCE241C6",
"direction": "out",
"type": "poll",
"preview": "Qual horário prefere?"
},
"choices": [
"Tarde"
]
},
"chat": {
"id": "5511999999999@s.whatsapp.net",
"lid": "123456789012345@lid",
"type": "direct"
}
}
}