Skip to main content
Every error is one JSON shape. Build alerting on it.

V1 codes

V2 mode

V2 uses the same {"error_code", "message"} shape. Every refusal is closed — nothing that cannot be decided reaches your handler. Behind this contract: a full unit suite covering every failure shape, the JWKS rotation recovery path, thread safety, and the anti-leak guarantee that no token or secret appears in middleware logs. For how to act on each code, see Interpret verification error codes.