HALOWERK: Verify a signed webhook from GitHub, Stripe, Shopify, Slack, Svix or a plain HMA
webhook_signatureVerify webhook signatures for GitHub, Stripe, Shopify, Slack, Svix, and HMAC. Handles provider-specific signing formats and timestamp checks, with debug output for mismatches.
Instructions
Verify a signed webhook from GitHub, Stripe, Shopify, Slack, Svix or a plain HMAC scheme, with the timestamp window checked where the provider signs one.
Kostenpflichtig: 0.002 USDC je Aufruf. Bezahlt per x402 auf Base, ohne Konto. Hoechstens 0.002 USDC je Aufruf.
Providers each build their signing string differently — some sign only the body, others prepend a timestamp, an id, or a version marker in a fixed order — and getting that order wrong produces a mismatch that looks exactly like an attack. This checks the signature the way the named provider actually specifies, with constant-time comparison, and returns the string that was signed so a mismatch can be debugged instead of guessed at. Where the provider signs a timestamp, it is checked against a tolerance window, because a signature valid forever lets any captured delivery be replayed. The body must be passed exactly as received, byte for byte: a re-serialised JSON payload has different bytes and will never match, which is the single most common cause of a failed check and is called out when the body looks reformatted. Preis 0.002 USDC je Aufruf, Abrechnung über x402.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The raw request body exactly as received, not re-serialised. | |
| secret | Yes | The signing secret. | |
| headers | No | All request headers; the right one is picked by provider. | |
| provider | Yes | Which provider signed the request. | |
| signature | No | The signature header value. Required unless headers is given. | |
| timestamp | No | Timestamp, if the provider signs one and it is not in the headers. | |
| message_id | No | Message id for schemes that sign one, e.g. Svix. | |
| tolerance_seconds | No | How old a signed timestamp may be. |