POST /send-list
Envia uma mensagem WhatsApp com lista de opções em seções (até 10 rows totais). Útil pra menu, escolha de horário, planos, etc.
| Campo | Valor |
|---|---|
| URL | https://api.wevi.chat/functions/v1/send-list |
| Método | POST |
| Auth | Authorization: Bearer wevi_... |
| Content-Type | application/json |
| Rate limit | 60 req/min por API key |
| Plano necessário | Pro ou Ultra |
Body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
connection_id |
string (uuid) | sim | ID da conexão WhatsApp. |
to |
string | sim | Telefone destino. |
body |
string | sim | Texto principal. Max 1024. |
footer |
string | não | Rodapé. Max 60. |
header_text |
string | não | Header em texto (lista não aceita mídia). Max 60. |
button_text |
string | sim | Rótulo do botão que abre a lista. Max 20. |
sections |
array | sim | 1+ seções. Cada uma: { title?, rows: [{ id?, title, description? }] }. |
contact_id |
string (uuid) | não | Vincula ao contato. |
idempotency_key |
string | não | Idempotência. |
Limites das seções/rows:
- Máximo 10 rows somando todas as seções.
section.titleopcional, max 24 chars.row.titleobrigatório, max 24 chars.row.descriptionopcional, max 72 chars.
Exemplo
curl -X POST https://api.wevi.chat/functions/v1/send-list \
-H "Authorization: Bearer wevi_abc..." \
-H "Content-Type: application/json" \
-d '{
"connection_id": "conn-uuid",
"to": "+5511999999999",
"body": "Escolha um horário disponível:",
"button_text": "Ver horários",
"sections": [
{
"title": "Hoje",
"rows": [
{ "id": "slot_1430", "title": "14:30", "description": "30 min" },
{ "id": "slot_1500", "title": "15:00", "description": "30 min" }
]
},
{
"title": "Amanhã",
"rows": [
{ "id": "slot_0900", "title": "09:00" },
{ "id": "slot_0930", "title": "09:30" }
]
}
]
}'
await fetch("https://api.wevi.chat/functions/v1/send-list", {
method: "POST",
headers: { "Authorization": "Bearer wevi_abc...", "Content-Type": "application/json" },
body: JSON.stringify({
connection_id: "conn-uuid",
to: "+5511999999999",
body: "Escolha um horário disponível:",
button_text: "Ver horários",
sections: [
{ title: "Hoje", rows: [{ id: "slot_1430", title: "14:30" }, { id: "slot_1500", title: "15:00" }] },
{ title: "Amanhã", rows: [{ id: "slot_0900", title: "09:00" }, { id: "slot_0930", title: "09:30" }] },
],
}),
});
Resposta
Sucesso (200)
{ "id": "envio-uuid", "wamid": "wamid.HBgN...", "status": "sent" }
Erros principais
| Status | error |
|---|---|
| 400 | body is required, button_text is required, 'sections' must be a non-empty array |
| 400 | max 10 rows across all sections, row.title max 24 chars |
| 401 | Invalid API key |
| 404 | Connection not found |
Como o cliente responde
O cliente abre a lista, escolhe um row. O WhatsApp envia type: "interactive" com interactive.list_reply. A Wevi persiste no histórico como mensagem do contato, com metadata.kind = "interaction_reply" e metadata.payload.id = o id do row selecionado. O title do row chega como content da mensagem.
Próximo
/send-cta-url