Mensagens enviadas
Envia mensagens avulsas (teste, texto ou template), consulta o histórico de envios e reenfileira os que falharam.
Esta página trata das mensagens que a plataforma envia (notificações de pedido, campanhas, envios manuais), separadas das conversas da caixa de entrada. Cada envio é um registro com status. Fora da janela de 24 horas o WhatsApp só aceita templates: modelos de mensagem pré-aprovados pela Meta, com variáveis numeradas ({{1}}, {{2}}).
Enviar mensagem de teste
Manda um texto simples pelo número configurado. Serve para provar que o token e o número funcionam.
/api/v1/admin/whatsapp/testAdminEnvia um texto de teste para conferir a configuração
Corpo da requisição
phone_numberstringobrigatório+ opcional.messagestringExemplo de requisição (Enviar mensagem de teste)
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/test" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+5511999998888",
"message": "Teste de integração"
}'Resposta (Enviar mensagem de teste)
{
"success": true,
"message": {
"id": 2092,
"phone_number": "5511999998888",
"message_type": "text",
"params": {
"body": "Teste de integração"
},
"status": "sent",
"whatsapp_message_id": "wamid.HBgNNTUx..."
}
}Campos da resposta
successbooleantrue.messageobjectErros (Enviar mensagem de teste)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo inválido, phone_number ausente ou fora do formato. | {"error":"invalid phone number format: must start with country code and contain 10-15 digits (e.g. +5511999998888)"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
| 500 | A Meta recusou o envio. | {"error":"Failed to send test message: ..."} |
Enviar mensagem avulsa
Envia template (permitido a qualquer momento) ou text (só dentro da janela de 24 horas). Os parâmetros do template são lidos nas chaves "1", "2", em sequência: se faltar uma chave no meio, as seguintes são ignoradas.
/api/v1/admin/whatsapp/sendAdminEnvia um template ou um texto a um telefone
Corpo da requisição
phone_numberstringobrigatóriomessage_typestringobrigatóriotemplatetexttemplate_namestringtemplate.paramsobject{"1":"...","2":"..."}.text_bodystringtext.Exemplo de requisição (Enviar mensagem avulsa)
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/send" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+5511999998888",
"message_type": "template",
"template_name": "order_confirmation",
"params": {
"1": "PEDIDO-20261011-0004",
"2": "R$ 225,00"
}
}'Resposta (Enviar mensagem avulsa)
{
"success": true,
"message": {
"id": 2093,
"phone_number": "5511999998888",
"template_name": "order_confirmation",
"message_type": "template",
"params": {
"1": "PEDIDO-20261011-0004",
"2": "R$ 225,00"
},
"status": "sent",
"whatsapp_message_id": "wamid.HBgNNTUx..."
}
}Campos da resposta
successbooleantrue.messageobjectErros (Enviar mensagem avulsa)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Campo obrigatório ausente, telefone fora do formato, ou message_type diferente de template/text. | {"error":"message_type must be 'template' or 'text'"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
| 500 | A Meta recusou. A resposta traz error e a message registrada com status: failed. | {"error":"...","message":{"status":"failed"}} |
Histórico de envios
Mostra cada envio, do mais novo para o mais antigo, com o status. Use para auditar notificações e achar falhas.
/api/v1/admin/whatsapp/messagesAdminLista as mensagens enviadas pela plataforma, com filtros
Parâmetros de consulta
pageintegerpadrão: 1per_pageintegerpadrão: 20statusstringpendingsentdeliveredreadfailedtemplate_namestringphone_numberstringorder_idstringExemplo de requisição (Histórico de envios)
curl "$BASE_URL/api/v1/admin/whatsapp/messages?status=failed&per_page=20" \
-H "Authorization: Bearer $TOKEN"Resposta (Histórico de envios)
{
"messages": [
{
"id": 2079,
"phone_number": "5511996225151",
"template_name": "vendor_new_order",
"message_type": "template",
"params": {
"1": "PEDIDO-20261011-0009",
"2": "R$ 52,66"
},
"status": "failed",
"error_message": "whatsapp api error (100): ...",
"vendor_id": "9d9d9d56-eb43-4719-889d-055632f7c7da",
"created_at": "2026-10-11T20:59:55Z"
}
],
"total": 1,
"page": 1,
"per_page": 20,
"total_pages": 1
}Campos da resposta
messagesarrayEnvios da página.
idintegerphone_numberstring+, como foi registrado).template_namestringmessage_typestringtemplate, text ou interactive.paramsobject{"body": ...} para texto.statusstringpendingsentdeliveredreadfailedpending, sent, delivered, read ou failed.whatsapp_message_idstringerror_messagestringfailed.order_idstringvendor_idstringcreated_atstringtotalintegerpageintegerper_pageintegertotal_pagesintegerErros (Histórico de envios)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
Reenfileirar um envio que falhou
Recoloca na fila de envio uma linha que esteja em falha, zerando as tentativas, para a plataforma tentar de novo na hora. Só afeta linhas em falha. Sem corpo.
/api/v1/admin/whatsapp/queue/{id}/retryAdminColoca de volta na fila um envio que falhou
Parâmetros de caminho
idstringobrigatórioExemplo de requisição (Reenfileirar um envio que falhou)
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/queue/3f0f7c1e-5b0a-4f3e-9d1a-2c3b4a5d6e7f/retry" \
-H "Authorization: Bearer $TOKEN"Resposta (Reenfileirar um envio que falhou)
{
"retried": true
}Campos da resposta
retriedbooleantrue.Erros (Reenfileirar um envio que falhou)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
| 404 | A linha não existe ou não está em estado de falha. | {"error":"queue row not found or not in failed state"} |