auth-token cookie.
429 when exceeded).
Request body
The admin’s email address. Must be a valid email; matched case-insensitively.
The admin’s password. Must be at least 1 character (verified against the
stored bcrypt hash).
Response
On success returns200 with the authenticated admin user (password hash
stripped) and a signed JWT.
true on success.Errors
| Status | error | Cause |
|---|---|---|
400 | Invalid login data | Body failed validation (e.g. malformed email). |
401 | Authentication failed | Email not found or password incorrect. |
403 | Account inactive | The admin user is deactivated. |
403 | Organization inactive | The admin’s bookkeeper organization is inactive. |
429 | Too many login attempts | Login rate limit exceeded. |
500 | Login failed | Unexpected server error. |
Failed and successful logins are both audit-logged with the client IP and
user agent.
Account inactive and Organization inactive are returned
before the password is checked once the user is found.