Skip to main content

Retry Policy

Failed webhook deliveries are automatically retried with exponential backoff.

Retry Schedule

AttemptDelay
1Immediate
21 minute
35 minutes
430 minutes
52 hours
68 hours
716 hours

After 7 attempts, the delivery is marked as failed.

What Triggers a Retry

  • HTTP 5xx response
  • Connection timeout (10 seconds)
  • Network error

What Doesn't Retry

  • HTTP 2xx — Success
  • HTTP 4xx — Client error (except 429)
  • HTTP 410 — Endpoint disabled

Auto-Disable

Endpoints are automatically disabled when:

  • 25 deliveries fail within 24 hours
  • Endpoint returns HTTP 410 Gone

When disabled, you'll receive a notification via email.

Re-enabling an Endpoint

curl -X POST "https://api.kula.ai/v1/webhooks/{id}/enable" \
-H "Authorization: Bearer your_api_token_here"

Self-Disable with 410

To permanently stop receiving webhooks, return HTTP 410 Gone:

app.post('/webhooks/kula', (req, res) => {
// Return 410 to stop receiving webhooks
res.status(410).send('Gone');
});

Delivery Guarantees

Webhooks provide at-least-once delivery. Use the event_id to deduplicate events in case of retries.