Webhooks

Configure webhooks para receber notificacoes HTTP em tempo real quando eventos ocorrem.

Para guia detalhado de implementacao, veja o Guia de Webhooks.

GET/api/v1/accounts/{account_id}/webhooks

Lista todos os webhooks configurados na conta.

bash
curl -s "https://chat.seudominio.com/api/v1/accounts/1/webhooks" \
  -H "api_access_token: YOUR_TOKEN" | jq .
200Lista de webhooks
json
{
  "payload": [
    {
      "id": 1,
      "account_id": 1,
      "url": "https://meuapp.com/webhooks/chat",
      "subscriptions": [
        "conversation_created",
        "message_created",
        "contact_created"
      ]
    }
  ]
}
POST/api/v1/accounts/{account_id}/webhooks

Registra um novo webhook para receber eventos.

Body

NomeTipoObrigatorioDescricao
urlstringSimURL HTTPS que recebera os eventos via POST
subscriptionsarraySimLista 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"
    ]
  }'
200Webhook criado
json
{
  "id": 2,
  "url": "https://meuapp.com/webhooks/noovichat",
  "subscriptions": ["conversation_created", "message_created"]
}
PATCH/api/v1/accounts/{account_id}/webhooks/{webhook_id}

Atualiza a URL ou subscriptions de um webhook.

Body

NomeTipoObrigatorioDescricao
urlstringNaoNova URL do webhook
subscriptionsarrayNaoNova lista de eventos
bash
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"
    ]
  }'
DELETE/api/v1/accounts/{account_id}/webhooks/{webhook_id}

Remove um webhook. Eventos nao serao mais enviados para a URL.

bash
curl -X DELETE "https://chat.seudominio.com/api/v1/accounts/1/webhooks/2" \
  -H "api_access_token: YOUR_TOKEN"

Eventos Disponiveis

EventoDescricao
conversation_createdNova conversa criada
conversation_status_changedStatus da conversa alterado
message_createdNova mensagem recebida ou enviada
message_updatedMensagem atualizada
contact_createdNovo contato criado
contact_updatedDados do contato atualizados
webwidget_triggeredWidget 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_createdNovo atendimento agendado
appointment_updatedDados do atendimento atualizados
appointment_confirmedAtendimento confirmado
appointment_completedAtendimento marcado como realizado
appointment_cancelledAtendimento cancelado
appointment_no_showPaciente nao compareceu
appointment_rescheduledReagendamento realizado
reminder_sentLembrete enviado com sucesso
reminder_failedFalha no envio do lembrete
professional_createdProfissional criado
professional_updatedProfissional atualizado
professional_deletedProfissional desativado (soft delete)
service_createdServico criado
service_updatedServico atualizado
service_deletedServico 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

json
{
  "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

json
{
  "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"
  }
}