Skip to main content
POST
/
api
/
webhook-events
/
{id}
/
resend
Reenviar (clonando) Evento de Webhook
curl --request POST \
  --url https://garu.com.br/api/webhook-events/{id}/resend \
  --header 'Authorization: Bearer <token>'

Documentation Index

Fetch the complete documentation index at: https://docs.garu.com.br/llms.txt

Use this file to discover all available pages before exploring further.

Visão Geral

Clona um evento de webhook e dispara a entrega imediatamente. O evento original não é tocado — fica no status terminal (success ou failed) com todo o histórico de tentativas e respostas preservado para auditoria. O clone é uma linha nova na tabela de eventos, carregando manualResendOf: <id_do_original>. Disponível a partir da v0.11.0. Aceita chave de API (sk_test_… / sk_live_…) ou JWT do dashboard.
Mudança de contrato no header Idempotency-Key. Reenvios manuais (este endpoint e o botão “Reenviar” do dashboard) mandam Idempotency-Key: resend_<id> no POST para o seu endpoint, em vez do payload.id original.
  • Handlers que deduplicam pelo valor bruto do header já tratam isso como entrega fresca — nenhuma mudança de código. Mas vão começar a receber reenvios manuais que pré-v0.11.0 eram silenciosamente descartados; idempotência de negócio (orderId, transactionId) precisa absorver.
  • Handlers que deduplicam pelo payload.id (idêntico entre original e clone) ou normalizam o header precisam ser atualizados — caso contrário, o reenvio é descartado como duplicata.
Veja o guia Reenviar webhook para o código antes/depois.

/resend vs /retry

/resend (v0.11.0+)/retry (v0.10.3+)
SemânticaClona o eventoMuta o evento original
Evento originalIntacto, status terminal preservadoVolta para pending, contador zerado
Histórico de respostasMantido no originalSobrescrito pela nova tentativa
Idempotency-Key outboundresend_<id_do_clone>event.payload.id (mesmo do original)
Indicado paraTudo, a partir da v0.11.0Legado — preserve apenas se já automatizou em cima dele

Exemplo de Requisição

curl -X POST https://garu.com.br/api/webhook-events/12345/resend \
  -H "Authorization: Bearer sk_test_sua_chave"

Parâmetros de Path

id
number
required
ID numérico do evento a clonar e reenviar. Funciona em qualquer status do evento original — success, failed ou pending.
Sem corpo de requisição.

Resposta

Retorna o clone recém-criado (não o original), já em pending e com a entrega disparada:
{
  "id": 12890,
  "endpointId": 7,
  "eventType": "transaction.payment.succeeded",
  "status": "pending",
  "attempts": 0,
  "lastResponseStatus": null,
  "manualResendOf": 12345,
  "createdAt": "2026-05-19T18:04:33Z",
  "deliveredAt": null,
  "payload": {
    "id": "evt_1a2b3c",
    "type": "transaction.payment.succeeded",
    "data": { "object": { "id": 999, "value": 49.9 } }
  }
}

Campos relevantes

CampoTipoDescrição
idnumberID do clone (novo). Use este id se quiser reenviar de novo.
manualResendOfnumber|nullID do evento original. Sempre presente em clones; null em eventos originais.
statusstringSempre pending na criação. Vira success ou failed conforme a entrega.
payloadobjectCópia exata do payload do original — payload.id (evt_…) é preservado.
O payload.id (evt_…) do clone é idêntico ao do original. Quem muda é o Idempotency-Key HTTP outbound: o clone manda resend_<id_do_clone>, o original mandou evt_….

Rate Limit

20 requisições por minuto por IP. Mesmo limite do /retry, mesma motivação: cada chamada dispara uma entrega HTTP síncrona para o endpoint do seller.

Erros

StatusCaso
404Evento não existe ou não pertence ao seller chamando
429Rate limit excedido (mais de 20 resends/min do mesmo IP)

Onde aparece no dashboard

Toda linha de evento em Configurações → Webhooks → Eventos mostra o botão Reenviar (a partir da v0.11.0 visível também em success e pending, antes só em failed). Reenviar um evento já success abre uma confirmação (“este evento já foi entregue com sucesso — reenviar mesmo assim?”). Clones recebem um badge 🔁 na tabela e uma linha “Reenviado a partir de #<id>” no drawer de detalhes.

Próximos passos

Guia: Reenviar webhook

Fluxo completo (listar → escolher → reenviar) e o passo-a-passo do Idempotency-Key

Detalhes do evento

Inspecione manualResendOf, tentativas e payload antes de reenviar