Re-Create a secret for signing webhook requests
PUT/webhooks/public/webhooks/secret
Verifying the X-Signature header
Each request we send includes these headers:
Content-Type: application/jsonX-Signature— HMAC-SHA256 of the request body, as a lowercase hex stringX-RequestId— a unique GUID per request
To verify a request:
- Read the raw request body exactly as received (the UTF-8 bytes). Do not parse, re-serialize, or reformat the JSON — any whitespace change breaks the signature.
- Compute
HMAC-SHA256(body, secret)using your shared secret (UTF-8 bytes) as the key. - Encode the result as a lowercase hexadecimal string (no separators).
- Compare it to the
X-Signatureheader using a constant-time comparison. If they don't match, reject the request.
Responses
- 200
- 400
- 401
- 404
OK
Bad Request
Unauthorized
Not Found