Webhooks
Configure webhooks para receber notificacoes HTTP em tempo real quando eventos ocorrem.
Para guia detalhado de implementacao, veja o Guia de Webhooks.
/api/v1/accounts/{account_id}/webhooksLista todos os webhooks configurados na conta.
curl -s "https://chat.seudominio.com/api/v1/accounts/1/webhooks" \
-H "api_access_token: YOUR_TOKEN" | jq .{
"payload": [
{
"id": 1,
"account_id": 1,
"url": "https://meuapp.com/webhooks/chat",
"subscriptions": [
"conversation_created",
"message_created",
"contact_created"
]
}
]
}/api/v1/accounts/{account_id}/webhooksRegistra um novo webhook para receber eventos.
Body
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
url | string | Sim | URL HTTPS que recebera os eventos via POST |
subscriptions | array | Sim | Lista de eventos para receber |
curl -X POST "https://chat.seudominio.com/api/v1/accounts/1/webhooks" \
-H "api_access_token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://meuapp.com/webhooks/noovichat",
"subscriptions": [
"conversation_created",
"conversation_status_changed",
"message_created",
"contact_created"
]
}'{
"id": 2,
"url": "https://meuapp.com/webhooks/noovichat",
"subscriptions": ["conversation_created", "message_created"]
}/api/v1/accounts/{account_id}/webhooks/{webhook_id}Atualiza a URL ou subscriptions de um webhook.
Body
| Nome | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
url | string | Nao | Nova URL do webhook |
subscriptions | array | Nao | Nova lista de eventos |
curl -X PATCH "https://chat.seudominio.com/api/v1/accounts/1/webhooks/2" \
-H "api_access_token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"subscriptions": [
"conversation_created",
"message_created",
"contact_updated"
]
}'/api/v1/accounts/{account_id}/webhooks/{webhook_id}Remove um webhook. Eventos nao serao mais enviados para a URL.
curl -X DELETE "https://chat.seudominio.com/api/v1/accounts/1/webhooks/2" \
-H "api_access_token: YOUR_TOKEN"Eventos Disponiveis
| Evento | Descricao |
|---|---|
conversation_created | Nova conversa criada |
conversation_status_changed | Status da conversa alterado |
message_created | Nova mensagem recebida ou enviada |
message_updated | Mensagem atualizada |
contact_created | Novo contato criado |
contact_updated | Dados do contato atualizados |
webwidget_triggered | Widget de chat acionado no site |
Payload do Webhook
Cada evento envia um payload JSON com os dados do evento. O campo event identifica o tipo de evento. Veja exemplos no Guia de Webhooks.
Eventos de Atendimentos
Requer feature flag appointments_module ativa. Para guia detalhado de verificacao HMAC e formato de payload, veja Webhooks de Atendimentos.
| Evento (subscription) | Descricao |
|---|---|
appointment_created | Novo atendimento agendado |
appointment_updated | Dados do atendimento atualizados |
appointment_confirmed | Atendimento confirmado |
appointment_completed | Atendimento marcado como realizado |
appointment_cancelled | Atendimento cancelado |
appointment_no_show | Paciente nao compareceu |
appointment_rescheduled | Reagendamento realizado |
reminder_sent | Lembrete enviado com sucesso |
reminder_failed | Falha no envio do lembrete |
professional_created | Profissional criado |
professional_updated | Profissional atualizado |
professional_deleted | Profissional desativado (soft delete) |
service_created | Servico criado |
service_updated | Servico atualizado |
service_deleted | Servico desativado (soft delete) |
Payloads de Lembrete (BACK-007)
Os eventos reminder_sent e reminder_failed sao funcionais (nao stubs). Sao disparados pelo job AppointmentRemindersDispatchJob para cada tentativa de envio de lembrete.
Payload — reminder_sent
{
"event": "reminder_sent",
"account_id": 1,
"appointment": {
"id": 42,
"public_id": "550e8400-e29b-41d4-a716-446655440000",
"scheduled_at": "2026-06-15T10:00:00.000Z",
"status": "confirmed",
"professional": { "name": "Dra. Ana Lima" },
"service": { "name": "Consulta" },
"contact": { "name": "Joao Silva", "phone": "+5511999990000" }
},
"reminder": {
"channel": "whatsapp",
"sent_at": "2026-06-14T10:00:00.000Z"
}
}Payload — reminder_failed
{
"event": "reminder_failed",
"account_id": 1,
"appointment": {
"id": 42,
"public_id": "550e8400-e29b-41d4-a716-446655440000",
"scheduled_at": "2026-06-15T10:00:00.000Z",
"status": "confirmed",
"professional": { "name": "Dra. Ana Lima" },
"service": { "name": "Consulta" },
"contact": { "name": "Joao Silva", "phone": "+5511999990000" }
},
"reminder": {
"channel": "whatsapp",
"error": "Numero invalido ou fora de cobertura",
"failed_at": "2026-06-14T10:00:03.000Z"
}
}