Skip to main content
Raise one of these anywhere and Feather turns it into the correct HTTP response. No error handling boilerplate in your routes.

What a client sees

Account status exceptions

AccountPendingError and AccountSuspendedError inherit from AuthorizationError but trigger redirects to dedicated status pages instead of a generic 403. They are raised automatically by @auth_required based on the user’s active and approved_at fields, so you do not raise them yourself. The pages are scaffolded into your app — edit them in templates/pages/account/ to match your branding.
Upgrading an older app: a suspended user now reports the error code ACCOUNT_SUSPENDED rather than AUTHORIZATION_ERROR. Check any string comparisons against the old code. See Upgrading.