Overview
The Users endpoints provide access to public user profiles, allow users to manage their own accounts, and enable bot management. User profiles include forecasting statistics, bio information, and social links.Get Current User
GET /api/users/me/
Retrieve the authenticated user’s complete profile, including private information.
Response
User ID
Username
Email address (private)
When the user registered
User bio in markdown
Personal website URL
Whether this is a bot account
Whether the user is Metaculus staff
Whether the user has admin privileges
Profile picture URL
Geographic location
Professional occupation
Twitter handle
LinkedIn profile URL
GitHub username
Whether to hide community predictions by default
Whether the user has completed onboarding
Default forecast auto-withdrawal percentage
UI theme preference:
light, dark, or autoPreferred language code
API access tier level
List of email notification types the user has unsubscribed from
Previous usernames
Additional user metadata
Get User Profile
GET /api/users/{userId}/
Retrieve a public user profile.
Path Parameters
The user ID
Response
Returns the same fields as/api/users/me/ but excludes private information:
- Email address
- Unsubscribed mailing tags
- Private metadata fields
List Users
GET /api/users/
Retrieve a paginated list of user profiles.
Query Parameters
Number of users to return
Pagination offset
Update Profile
PATCH /api/users/me/update/
Update the authenticated user’s profile.
Request Body
All fields are optional. Only include fields you want to update.User bio (supports markdown)
Personal website URL
Geographic location
Professional occupation
Twitter handle
LinkedIn profile URL
GitHub username
Profile picture URL
Hide community predictions by default
UI theme:
light, dark, or autoPreferred language code (e.g., “en”, “es”)
Change Username
POST /api/users/change-username/
Change the authenticated user’s username.
Request Body
New username. Must be unique and meet format requirements.
Username Change Restrictions
- Can only change username once every 180 days
- Username must be 1-30 characters
- Can only contain letters, numbers, and @/./+/-/_ characters
- Cannot be a reserved username (e.g., “admin”, “moderator”)
Change Password
POST /api/users/me/password/
Change the authenticated user’s password.
Request Body
Current password
New password (must meet security requirements)
Bot Management
List My Bots
GET /api/users/me/bots/
Retrieve all bots created by the authenticated user.
Response
Array of bot user objects
Create Bot
POST /api/users/me/bots/create/
Create a new bot account.
Request Body
Bot username
Bot description
Response
Returns the created bot user object.Get Bot Token
GET /api/users/me/bots/{botId}/token/
Retrieve or generate an API token for a bot.
Path Parameters
The bot’s user ID
Response
The bot’s API authentication token
Update Bot Profile
PATCH /api/users/me/bots/{botId}/update/
Update a bot’s profile information.
Path Parameters
The bot’s user ID
Request Body
Same fields as user profile update, plus:Update bot username (bots can change username without time restrictions)
