Skip to main content

Register User

Create a new user account.

Request Body

email
string
required
User’s email address
username
string
required
Desired username (cannot be 32 characters long)
password
string
required
User’s password (will be hashed)

Response

id
uuid
User’s unique ID
verified
boolean
Email verification status
email
string
User’s email address

Example Request

{
  "email": "[email protected]",
  "username": "johndoe",
  "password": "securePassword123"
}

Error Codes

  • 423: Registration is disabled
  • 409: User already exists with that email or username
  • 400: Invalid email format

Start Login

Initiate login flow and discover available authentication methods.

Request Body

email
string
required
Email address or username

Response

step_1
array
Available first-step authentication methods:
  • PASSWORD: Standard password
  • PASSKEY: WebAuthn passkey
  • TOTP: Time-based one-time password
step_2
array
Required second-step authentication methods (for 2FA)
session_id
string
Login session ID to use in subsequent requests
webauthn_data
string
WebAuthn challenge data (if passkey is available)

Example Response

{
  "step_1": ["PASSWORD", "PASSKEY"],
  "step_2": ["TOTP"],
  "session_id": "abc123def456",
  "webauthn_data": "{...}"
}

Complete Login Step

Complete an authentication step (1 or 2).

Path Parameters

step_id
integer
required
Step number (1 or 2)

Query Parameters

session_id
string
required
Login session ID from start_login

Request Body

auth_type
string
required
Authentication type: PASSWORD, PASSKEY, TOTP, or BACKUP
data
string | object
required
Authentication data:
  • For PASSWORD: password string
  • For PASSKEY: WebAuthn credential object
  • For TOTP: 6-digit code
  • For BACKUP: backup code string

Response

  • Step 1 complete, Step 2 required: Returns 202 Accepted
  • Login complete: Returns user session with cookies set
  • Authentication failed: Returns 401 Unauthorized

Get Current User

Get the authenticated user’s profile.

Authentication

Required

Response

id
uuid
User ID
email
string
Email address
username
string
Username
verified
boolean
Email verification status
created_at
datetime
Account creation timestamp
auth_type
string
Authentication type: LOCAL, GOOGLE, GITHUB, or CUSTOM
storage_used
integer
Storage used in bytes

Update Password

Change the user’s password.

Request Body

old_password
string
required
Current password
new_password
string
required
New password

Authentication

Required

Response

Signs out all sessions and returns success message.
{
  "message": "Password updated successfully"
}

Logout

Log out the current session.

Response

Clears authentication cookies and redirects to home page.

Sign Out Everywhere

Invalidate all user sessions across all devices.

Authentication

Required

Response

{
  "message": "Signout everywhere"
}

Verify Email

Verify user email address with verification key.

Path Parameters

verify_key
string
required
Verification key from email

Response

Redirects to login page with verification confirmation.

Forgot Password

Request a password reset email.

Request Body

email
string
required
User’s email address

Response

{
  "message": "Password reset email sent"
}
Note: Always returns success even if email doesn’t exist (security measure).

Reset Password

Reset password using token from email.

Request Body

password
string
required
New password
token
string
required
Reset token from email

Response

{
  "message": "Password updated successfully"
}

List Sessions

Get all active sessions for the user.

Authentication

Required

Response

Array of session objects:
id
uuid
Session ID
created_at
datetime
Session creation time
ip_address
string
IP address
user_agent
string
Browser/device information
last_seen
datetime
Last activity time

Delete Session

Revoke a specific session.

Path Parameters

session_id
uuid
required
Session ID to revoke

Authentication

Required

Get Current Session

Get details about the current session.

Authentication

Required

Delete Account

Permanently delete user account and all associated data.

Request Body

password
string
required
User’s password for confirmation

Authentication

Required

Effects

  • Deletes all user sessions
  • Deletes all quizzes created by user
  • Removes public quizzes from search index
  • Permanently deletes user account

Get User Avatar

Get the authenticated user’s avatar (SVG format).

Authentication

Required

Response

Returns SVG image.

Get Other User’s Avatar

Get any user’s avatar by their ID.

Path Parameters

user_id
uuid
required
User ID

Generate API Key

Generate a new API key for programmatic access.

Authentication

Required

Response

key
string
48-character API key

List API Keys

Get all API keys for the user.

Authentication

Required

Response

Array of API key objects containing only the key field.

Delete API Key

Revoke an API key.

Query Parameters

api_key
string
required
API key to revoke

Authentication

Required

Build docs developers (and LLMs) love