EagleIX
Webhooks

Entregas e Retentativas

Como funciona o mecanismo de entrega de webhooks, retentativas e backoff exponencial

Status de entrega

Cada entrega de webhook possui um dos seguintes status:

StatusDescricao
SUCESSOEntrega confirmada — seu endpoint retornou HTTP 2xx
FALHAEntrega falhou apos esgotar todas as tentativas
AGUARDANDO_RETENTATIVAAguardando proxima tentativa automatica

Fluxo de entrega

Evento PIX ocorre
      |
      v
Despacho para todos os webhooks ativos do tipo
      |
      v
POST para URL do webhook (com headers de assinatura)
      |
      +--- HTTP 2xx ---> Status: SUCESSO
      |
      +--- Falha ------> Tentativa < 3?
                              |
                    Sim ----> Status: AGUARDANDO_RETENTATIVA
                    |         (agenda proxima tentativa)
                    |
                    Nao ----> Status: FALHA

Retentativas automaticas

Quando uma entrega falha (timeout, erro de rede, ou resposta HTTP diferente de 2xx), o servico agenda uma retentativa automatica com backoff exponencial.

Configuracao

ParametroValor
Total de tentativas3 (incluindo a inicial)
Base do backoff2 minutos
Timeout de conexao3 segundos
Timeout de leitura10 segundos
Tamanho maximo da resposta4096 bytes

Intervalos de backoff

TentativaIntervaloFormula
1aImediataEntrega inicial
2a2 minutos2 * 2^0
3a4 minutos2 * 2^1

Apos a 3a tentativa falhar, o status final e FALHA e nenhuma retentativa adicional e agendada.


Retentativa manual

Voce pode retentar manualmente uma entrega com status FALHA:

POST /api/v1/webhooks/{id}/entregas/{entregaId}/retry

Isso cria uma nova entrega com seu proprio ciclo de retentativas. A entrega original nao e alterada.

Response 202 Accepted

{
  "id": "novo-uuid-da-entrega",
  "webhookId": "550e8400-e29b-41d4-a716-446655440000",
  "eventoId": "770e8400-e29b-41d4-a716-446655440002",
  "status": "AGUARDANDO_RETENTATIVA",
  "tentativas": 0,
  "httpStatus": null,
  "responseBody": null,
  "payloadEnviado": [...],
  "tentadoEm": "2026-05-01T14:00:00",
  "proximaTentativaEm": "2026-05-01T14:00:00"
}

Consultando entregas

Liste as entregas de um webhook para monitorar o status:

GET /api/v1/webhooks/{id}/entregas?status=FALHA

Campos da resposta

CampoTipoDescricao
idUUIDIdentificador da entrega
webhookIdUUIDWebhook associado
eventoIdUUIDEvento que originou a entrega
statusenumSUCESSO, FALHA ou AGUARDANDO_RETENTATIVA
tentativasintNumero de tentativas realizadas
httpStatusintStatus HTTP retornado pelo seu endpoint
responseBodystringBody da resposta (truncado em 4096 bytes)
payloadEnviadoJSONPayload completo enviado ao webhook
tentadoEmdatetimeTimestamp da primeira tentativa
proximaTentativaEmdatetimeProxima tentativa agendada (null se finalizado)

Boas praticas para seu endpoint

  1. Responda rapido — Retorne 2xx em ate 10 segundos (timeout de leitura). Processe o evento de forma assincrona se necessario
  2. Seja idempotente — O mesmo evento pode ser entregue mais de uma vez. Use o header X-Event-Id para deduplicar
  3. Retorne 2xx para sucesso — Qualquer status fora da faixa 200-299 e considerado falha e dispara retentativa
  4. Valide a assinatura — Veja Seguranca e Assinatura para implementacao
  5. Monitore entregas com falha — Consulte periodicamente as entregas com status FALHA e use a retentativa manual quando necessario

On this page