Authenticate with the Nora API
Sign up, log in, and manage your Nora account via the Auth API. Includes JWT token usage, profile updates, and password management.Every protected Nora API endpoint verifies your identity with a JSON Web Token (JWT). You obtain the token by signing up and then logging in. The token is valid for 7 days and must be included in the
Authorization header of every subsequent request. This page covers all authentication endpoints and shows you exactly what each one returns.
Login and OAuth auth endpoints are rate-limited to 20 requests per 15-minute window per IP.
Public signup has stricter burst and daily rate limits, plus optional Turnstile or reCAPTCHA
verification when configured.
Sign up
Create a new user account.Request body
A valid email address, maximum 255 characters.
Password, minimum 8 characters and maximum 128 characters.
Optional challenge token. Required only when
SIGNUP_BOT_PROTECTION_PROVIDER is set to
turnstile or recaptcha.Response
The new user’s UUID.
The registered email address.
Error responses
| Status | Condition |
|---|---|
400 | Missing or invalid email/password |
403 | Bot protection token is missing or invalid |
409 | Account already exists for this email |
429 | Signup burst or daily rate limit was exceeded |
Log in
Exchange email and password for a JWT.Request body
Your registered email address.
Your password.
Response
A signed JWT valid for 7 days. Include this value in the
Authorization: Bearer <token> header on all subsequent requests.Error responses
| Status | Condition |
|---|---|
400 | Email or password missing |
401 | Invalid credentials, or account uses OAuth login |
429 | Rate limit exceeded |
Using the token
Pass the token you received from/auth/login in every request to a protected endpoint:
Get current user
Verify a token and retrieve the authenticated user’s profile.Response
User UUID.
Email address.
Display name, may be
null if not set.Account role. Typically
user or admin.OAuth provider (
github, google, etc.) or null for password accounts.Base64-encoded
data:image/... avatar, or null.ISO 8601 timestamp of account creation.
Update profile
Update your display name and/or avatar.Request body
Display name, 1–100 characters.
Base64-encoded image (
data:image/png;base64,...), maximum 500 KB. Pass null to remove the
avatar.Response
Updated display name.
Updated avatar value or
null.Change password
Replace your current password with a new one.Request body
Your existing password.
New password, minimum 8 characters and maximum 128 characters.
Response
true when the password was updated successfully.Error responses
| Status | Condition |
|---|---|
400 | Missing fields, or account has no password (OAuth account) |
401 | Current password is incorrect |
404 | User record not found |

