Ship webhooks. Not retry logic.
POST an event. We handle retries, HMAC signing, exponential backoff, per-endpoint concurrency, and durable receipts. You handle your product.
# fire an event — we handle the rest $ curl -X POST https://api.relayapi.dev/v1/events \ -H "Authorization: Bearer rk_live_..." \ -H "Content-Type: application/json" \ -d '{ "endpoint_id": "ep_9f2a", "type": "order.paid", "data": { "order_id": "o_1029" } }' → 202 Accepted { "event_id": "evt_2Q8h...", "status": "queued" }
Just the primitives you'd build yourself.
If you've written a webhook system before, you know the list. Here it is, managed.
01Retry with backoff
8 attempts over 24h. Exponential curve. Per-endpoint override.
02HMAC-SHA256 signing
Relay-Signature: t=<unix>,v1=<hex>. Verify in ~5 lines.
03Attempt logs
Every attempt: status, headers, body, latency. Queryable via API.
04Idempotency keys
Send the same event twice, we deliver it once. Server-side dedup.
05Concurrency caps
Cap in-flight deliveries per endpoint. Never DoS your own customer.
06Circuit breaker
Endpoint 4xx-storming? We back off automatically and alert.
POST /v1/eventsRetry + backoffAttempt logsDelivery overview. Select a feature to explore.
Sample interface only. No request is sent.
Delivery, at a glance.
Illustrative template metrics. These are not live service measurements.
data-site="relayapi". Try asking it: "How do I send my first event?", "How does the retry policy work?", or "How do I verify signatures?"

