# Moonsox Auth > Independent code issuer for bots — primary or backup when another auth path is down. Rich charset; length 4–256. Third parties verify here. Base: https://auth.moonsox.com Version: 0.2.2 - POST /v1/challenge { publicKey } - POST /v1/enroll { publicKey, nonce, signature } - POST /v1/codes/issue { publicKey, nonce, signature, length?, charset? } → { code, codeId, expiresInSec } - POST /v1/codes/verify { botId, code } → { valid } - charset: rich (default) | alphanumeric | numeric - length: 4–256 - Storage: plaintext returned once; disk keeps HMAC-SHA256(pepper, botId-bound) only; one-time; TTL - Demo: https://auth.moonsox.com/demo - Sandbox RP: https://auth.moonsox.com/sandbox — POST /v1/sandbox/consume { botId, code } → verifyLatencyMs + trustLatencyMs