Suspend user
POST
https://app.speybooks.com/api/v1/admin/users/{id}/suspendSuspend or permanently ban a user account.
Flow
- Prevent self-suspension (returns 400)
- Prevent suspending admin users (returns 400)
- Set
is_active = false, recordsuspended_at,suspended_reason,suspended_permanent - Delete all active sessions (immediate logout)
- Write
USER_SUSPENDEDorUSER_BANNEDaudit log
Request Body
reason— minimum 5 characters, requiredpermanent— boolean (default false). True = ban, false = suspension (can be reversed)
State Changes
| Field | Before | After |
|---|---|---|
is_active | true | false |
suspended_at | null | NOW() |
suspended_reason | null | provided reason |
suspended_permanent | false | as provided |
sessions | active | deleted |
Error responses:
400 { code: "SELF_SUSPEND" }— cannot suspend yourself400 { code: "CANNOT_SUSPEND_ADMIN" }— admin users protected404 { code: "NOT_FOUND" }— user not found
Path parameters
id string requiredUser ID.
Body parameters
reason string requiredSuspension reason (audit trail). Min 5 characters.
permanent boolean optionalTrue for permanent ban, false for temporary suspension. Default false.
Response
200 User suspended (or banned if permanent). All sessions invalidated.
Show response fields
message stringError codes
400 Cannot suspend yourself or admin users.
404 User not found.