GET /captcha.ashx #
Stateless math captcha challenge. Returns a small addition problem and an HMAC-signed token that encodes the correct answer + an expiry. The form re-submits the token + the user’s typed answer to /contact.ashx or /signup.ashx, which re-derive the HMAC and compare it constant-time.
Request
No parameters.
Response
{
"question": "3 + 5",
"token": "<base64url(answer.expiry).hmac-sig>"
}
Errors
503 if the tenant’s AdminSharedSecret isn’t set (the HMAC key) — captcha is disabled in that mode.
Example
curl https://phone.codeb.io/captcha.ashx
No cookies, no server-side session. The captcha lifetime is 15 minutes. After that the form must request a fresh challenge.