Gap
GET /api/user returns accountStatus (and cleared), which the app does not model or surface. Per /help/account the web shows a banner at the top of the home page explaining the current status.
The five statuses
| Status |
Behaviour |
| new (on probation) |
read/browse/follow/block/mute/report work. Plain posting limited to a few per hour. Locked: direct messages, image and video uploads, cross-posting, scheduled posts, creating lists/documents/organizations. Verifying email is the fastest way off it. |
| active |
normal; limited only by subscription tier |
| restricted |
temporarily read-only while reviewed; can sign in, read, browse; cannot post, reply, react, follow, send messages or create. Appealable. |
| suspended |
as restricted, applied by the team. Appealable. |
| banned |
closed; cannot sign in |
Why it matters
Without this, a probationary or restricted account gets bare 403s from half the app with no explanation — the single worst first-run experience available.
Acceptance criteria
Gap
GET /api/userreturnsaccountStatus(andcleared), which the app does not model or surface. Per/help/accountthe web shows a banner at the top of the home page explaining the current status.The five statuses
Why it matters
Without this, a probationary or restricted account gets bare
403s from half the app with no explanation — the single worst first-run experience available.Acceptance criteria
AccountStatusandClearedonCurrentUser.MainWindow) for any status other thanactive, naming what is locked and linking to verify-email or support as appropriate.banned/suspendedare handled gracefully at sign-in.