Log de entrega
Consulta o histórico de e-mails enviados, as estatísticas do dia, o detalhe de cada tentativa e o reenvio de falhas.
Cada e-mail que a plataforma tenta enviar gera uma linha no log de entrega: para quem foi, com qual modelo, qual o assunto, o corpo renderizado, o status e, se falhou, o motivo. É a primeira parada quando um cliente diz que "não recebeu o e-mail".
O log é grande (uma loja ativa acumula centenas de milhares de linhas), por isso a lista é paginada e filtrável. Use os filtros em vez de varrer tudo.
Listar o log
/api/v1/admin/email-logsAdminListar tentativas de envio, mais novas primeiro
Devolve uma página do log, da mais recente para a mais antiga. Todos os filtros são opcionais e se combinam com E.
Parâmetros de consulta
statusstringqueuedsentfailedbouncedq, s, f, b).emailstringevent_typestringcart.abandoned, order.created, crm.campaign.date_fromstringYYYY-MM-DD (ou RFC 3339). Inclui o instante informado.date_tostringYYYY-MM-DD. O dia entra por inteiro, até 23:59:59 UTC. Um valor com horário falha.searchstringpageintegerpadrão: 1per_pageintegerpadrão: 20Exemplo de requisição
curl "$BASE_URL/api/v1/admin/email-logs?status=failed&date_from=2026-10-01&per_page=50" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"logs": [
{
"id": "042f7983-7fa7-4c5d-933f-e5a1b164b88e",
"template_slug": "abandoned_cart",
"recipient_email": "maria.souza@example.com",
"recipient_name": "",
"subject": "Seu carrinho na Loja Exemplo ainda está reservado",
"body": "<!DOCTYPE html>...",
"status": "failed",
"event_type": "cart.abandoned",
"user_id": "32cf33c3-5e4d-424c-ba67-7582f7fa163a",
"error_message": "smtp: autenticação recusada (530)",
"retry_count": 0,
"created_at": "2026-10-11T21:03:49.022134Z"
}
],
"total": 416467,
"page": 1,
"per_page": 20,
"total_pages": 20824
}Campos da resposta
logs[].iduuidlogs[].template_slugstringlogs[].recipient_emailstringlogs[].recipient_namestringlogs[].subjectstringlogs[].bodystringlogs[].statusstringqueuedsentfailedbouncedlogs[].event_typestringlogs[].order_iduuidlogs[].user_iduuidlogs[].error_messagestringstatus não é failed.logs[].retry_countintegerlogs[].sent_atstringlogs[].created_atstringtotalintegerpageintegerper_pageintegertotal_pagesintegerEstatísticas do dia
/api/v1/admin/email-logs/statsAdminTotais de envio e de falha de hoje
Uma chamada barata para um painel de saúde: quantos e-mails saíram e falharam hoje, quantos esperam na fila e quantas linhas o log tem no total. Não tem parâmetros.
curl "$BASE_URL/api/v1/admin/email-logs/stats" \
-H "Authorization: Bearer $TOKEN"{ "sent_today": 128, "failed_today": 3, "queue_size": 0, "total_all": 480289 }Campos da resposta
sent_todayintegerfailed_todayintegerqueue_sizeintegertotal_allintegerConsultar uma tentativa
/api/v1/admin/email-logs/{id}AdminDetalhe de uma tentativa de envio
Devolve a linha completa do log, no mesmo formato de cada item de logs[], inclusive o corpo renderizado.
Parâmetros de caminho
iduuidobrigatóriocurl "$BASE_URL/api/v1/admin/email-logs/042f7983-7fa7-4c5d-933f-e5a1b164b88e" \
-H "Authorization: Bearer $TOKEN"Reenviar uma falha
/api/v1/admin/email-logs/{id}/resendAdminReenviar um e-mail que falhou
Tenta entregar de novo uma mensagem com status failed ou bounced, com o mesmo destinatário, assunto e corpo. A linha vai para queued, a entrega é tentada na hora e a mesma linha passa a sent (com retry_count mais 1) ou volta a failed. Não cria linha nova. Exige manage_email ou manage_settings.
Parâmetros de caminho
iduuidobrigatóriocurl -X POST "$BASE_URL/api/v1/admin/email-logs/042f7983-7fa7-4c5d-933f-e5a1b164b88e/resend" \
-H "Authorization: Bearer $TOKEN"{ "message": "Email re-queued for delivery" }Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Reenvio de linha que não está failed nem bounced. | {"error":"failed to resend email","detail":"... can only resend failed or bounced emails (current status: sent)"} |
| 400 | Reenvio cuja nova tentativa também falhou. | {"error":"failed to resend email","detail":"resend email 042f...: ..."} |
| 401 | Sem token ou token expirado. | {"error":"invalid or expired token"} |
| 403 | Módulo email-notifications desligado, ou sem privilégio. | {"error":"module_disabled","module":"email-notifications"} |
| 404 | Id válido que não existe. | {"error":"email log not found"} |
| 500 | {id} que não é um UUID no detalhe, ou falha ao ler o log. | {"error":"failed to get email log","detail":"o valor \"abc\" não é um uuid válido..."} |
| 503 | Serviço de log indisponível no servidor. | {"error":"email log service unavailable"} |
Mensagens de detail que o servidor devolve em português (como a do UUID inválido) chegam exatamente assim.