Skip to main content
When the user approves in their wallet, AnonAge sends a POST to the callback_url you set when opening the session.

The payload

Respond with any 2xx to acknowledge. If your endpoint is unreachable, use polling as a fallback.

Verify the signature

Every callback carries a signature header:
Recompute HMAC_SHA256(signing_secret, "{t}.{rawBody}") over the raw request body and compare it to v1 in constant time. Reject the request if it doesn’t match or if t is more than a few minutes old (replay protection).
Verify against the raw bytes of the body. Frameworks that parse JSON and re-serialise it will change whitespace/key order and break the HMAC — capture the raw body before parsing.
Treat above_age_required as authoritative only after the signature checks pass. Never trust a callback whose signature you couldn’t verify.