webhook_endpoint.verification
The activation handshake of an endpoint, sent when it is created, when its URL changes and on POST /v1/webhook-endpoints/{id}/verify; every attempt has a new id and challenge. It is signed like every webhook; answer 2xx with {"challenge": "<data.challenge>"} (or the challenge as plain text).
Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”The id of this handshake attempt (UUIDv7), also the body id: new on every attempt and not an event (GET /v1/events does not know it). It only enters the signature.
Unix time (seconds) of this attempt. Refuse values more than 5 minutes from your clock.
Space-separated v1,<base64> signatures: HMAC-SHA256 of <webhook-id>.<webhook-timestamp>.<body> with the base64-decoded part of the whsec_ secret. Accept the request if any of them matches (there is one per valid secret during a rotation).
Request Bodyrequired
Section titled “Request Bodyrequired”The activation handshake of an endpoint, sent when it is created, when its URL changes and on POST /v1/webhook-endpoints/{id}/verify; every attempt has a new id and challenge. It is signed like every webhook; answer 2xx with {"challenge": "<data.challenge>"} (or the challenge as plain text).
object
This attempt’s id, also its webhook-id header: new on every attempt.
When this attempt was sent.
object
Random value to echo back, new on every attempt: echo the one of this request.
Responses
Section titled “Responses”The challenge, echoed.
object
Example generated
{ "challenge": "example"}