Skip to main content

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

integer
User ID
string
Username
string
Email address (private)
string (datetime)
When the user registered
string
User bio in markdown
string
Personal website URL
boolean
Whether this is a bot account
boolean
Whether the user is Metaculus staff
boolean
Whether the user has admin privileges
string
Profile picture URL
string
Geographic location
string
Professional occupation
string
Twitter handle
string
LinkedIn profile URL
string
GitHub username
boolean
Whether to hide community predictions by default
boolean
Whether the user has completed onboarding
number
Default forecast auto-withdrawal percentage
string
UI theme preference: light, dark, or auto
string
Preferred language code
string
API access tier level
array
List of email notification types the user has unsubscribed from
array
Previous usernames
object
Additional user metadata

Get User Profile

GET /api/users/{userId}/ Retrieve a public user profile.

Path Parameters

integer
required
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

integer
default:"20"
Number of users to return
integer
default:"0"
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.
string
User bio (supports markdown)
string
Personal website URL
string
Geographic location
string
Professional occupation
string
Twitter handle
string
LinkedIn profile URL
string
GitHub username
string
Profile picture URL
boolean
Hide community predictions by default
string
UI theme: light, dark, or auto
string
Preferred language code (e.g., “en”, “es”)

Change Username

POST /api/users/change-username/ Change the authenticated user’s username.

Request Body

string
required
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

string
required
Current password
string
required
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
Array of bot user objects

Create Bot

POST /api/users/me/bots/create/ Create a new bot account.

Request Body

string
required
Bot username
string
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

integer
required
The bot’s user ID

Response

string
The bot’s API authentication token
Store Bot Tokens SecurelyBot tokens provide full API access. Store them securely and never commit them to version control.

Update Bot Profile

PATCH /api/users/me/bots/{botId}/update/ Update a bot’s profile information.

Path Parameters

integer
required
The bot’s user ID

Request Body

Same fields as user profile update, plus:
string
Update bot username (bots can change username without time restrictions)

Example: Complete Bot Setup