POST with a JSON body and these headers:| Header | Value |
|---|---|
Content-Type | application/json |
User-Agent | makini-webhooks/1.0 |
X-Makini-Event | The event name, such as sync.completed. |
X-Makini-Delivery | The delivery id. Identical on every retry, and equal to the body's id. |
X-Makini-Timestamp | Unix time in seconds when this attempt was signed. |
X-Makini-Signature | sha256= followed by the hex HMAC-SHA256 of <timestamp>.<raw body>. |
X-Makini-Attempt | The attempt number, starting at 1. |
whsec_. Use the whole string, prefix included, as the HMAC key, exactly as shown: don't decode it. Keep it in your secret manager, never in source control.X-Makini-Timestamp header, a period, and the raw body: <timestamp>.<raw body>.sha256=. Compare it with X-Makini-Signature using a constant-time comparison.X-Makini-Delivery:occurredAt, or by each record's updatedAt, rather than by arrival.2xx within 10 seconds. Do the real work after you respond: put the event on a queue and answer 200. Makini ignores the response body.| Your response | What Makini does |
|---|---|
2xx | Delivered. |
429 or 5xx | Retries on your policy. |
| No answer within 10 seconds, or no connection | Retries on your policy. |
3xx | Final. Redirects are not followed, so register the final URL. |
Any other 4xx | Final. Retrying would get the same answer. |
| Policy | Attempts | Waits between attempts | Covers |
|---|---|---|---|
| No retry | 1 | None | One attempt |
| Standard (default) | 5 | 30 s, 1 min, 2 min, 4 min | About 7 minutes |
| Extended | 8 | 1, 2, 4, 8, 16, 32, 60 min | About 2 hours |
| Custom | 1 to 10 | Your choice | Your choice |
updatedSince read described in Webhook events, and a long outage on your side never loses a change.| Status | Meaning |
|---|---|
| Queued | Waiting for its first attempt. |
| Retrying (2/5) | An attempt failed and more are scheduled. |
| Delivered 200 | Your endpoint accepted it, with the status it returned. |
| Failed 404 | Final: a non-retryable answer, or the last attempt failed. Shows the last status, timeout or error. |
| Abandoned | Still pending 24 hours after the event. |