Use this file to discover all available pages before exploring further.
Turnkey signs Webhooks V2 deliveries with Ed25519. Verify the signature before parsing or trusting the JSON payload.The signature covers the signature contract fields and the exact raw request body:
Verification must use the raw request body that Turnkey sent. Re-serializing parsed JSON, changing whitespace, or changing key order changes the signed input.
Use the webhook signing key ID and public key provided by Turnkey for your environment. The public acquisition path for these values should be confirmed with product before publishing this page broadly.The helper does not discover keys automatically and does not implement JWKS, refresh behavior, discovery endpoints, or server-side key management.
Return a non-2xx response when verification fails. Log the failure reason, but avoid logging the raw body unless your logging pipeline is approved for webhook payloads.Common failure reasons include:
Reason
What to check
InvalidMaxTimestampAge
maxTimestampAgeMs must be a finite, non-negative number.
InvalidNow
nowMs, when provided, must be finite.
MissingHeader
One of the required signature headers was not present. Check headerName.
InvalidTimestamp or StaleTimestamp
The timestamp header was malformed or outside your replay window. Check clock skew.
MissingKey
No caller-provided verification key matched the X-Turnkey-Signature-Key-Id header.
InvalidVerificationKeyAlgorithm
A verification key declared an unsupported algorithm. Use ed25519.
InvalidVerificationKey
The configured public key is not a valid hex-encoded 32-byte Ed25519 public key.
UnsupportedSignatureAlgorithm
The algorithm header was not ed25519.
UnsupportedSignatureVersion
The signature version header was not v1.
InvalidSignature
The signature was malformed or did not verify over the exact raw body.
Signature verification proves the delivery came from a holder of the Turnkey webhook signing key and that the raw body was not modified within your replay window. It does not validate business payload fields such as organizationId, event type, wallet account ownership, or whether the event should affect your internal state.The helper checks required signature headers, timestamp freshness, key matching, signature format, verification-key shape, supported algorithm/version, and the Ed25519 signature itself.