Users
Get User
read-onlyidempotentopen-worldGet user info. Returns JSON with id, username, name, trust_level, created_at, bio, admin, and moderator.
Parameters
usernamestringrequiredList User Posts
read-onlyidempotentopen-worldGet paginated list of user posts/replies. Returns JSON object with posts array (id, topic_id, post_number, slug, title, created_at, excerpt, category_id) and meta (page, limit, has_more).
Parameters
usernamestringrequiredpageinteger>= 0limitinteger[1, 50]Posts per page (max 50, default 30)
List Users
read-onlyidempotentopen-worldList users via admin API. Requires admin API key. Returns ~100 users per page (Discourse's fixed page size). Returns JSON with users array and pagination meta.
Parameters
querystringactivenewstaffsuspendedsilencedpendingstagedactiveUser query type
filterstringSearch by username, email, or IP address
orderstringcreatedlast_emailedseenusernametrust_leveldays_visitedpostsSort order field
ascbooleanfalseSort ascending (default: false/descending)
pageinteger>= 0Page number (0-indexed)
Create User
Create a user through Discourse's signup API using a global admin API key. Reports whether upstream confirmed creation; anti-enumeration responses without user_id remain indeterminate. Optional avatar assignment runs only after confirmed creation.
Parameters
usernamestringrequiredemailstring<email>requirednamestringrequiredpasswordstringrequiredactivebooleantrueapprovedbooleantrueupload_ idintegerAvatar upload_id (from discourse_upload_file)
Update User
Update user profile fields. If upload_id is provided, also sets the user's avatar. Returns JSON with success status and updated user details.
Parameters
usernamestringrequiredUsername of user to update
namestringDisplay name
bio_ rawstringBio in markdown
locationstringLocation
websitestring<uri>Website URL
titlestringUser title
date_ of_ birthstringDate of birth (YYYY-MM-DD)
localestringLanguage preference
profile_ background_ upload_ urlstringProfile background image URL
card_ background_ upload_ urlstringCard background image URL
upload_ idintegerAvatar upload_id (from discourse_upload_file)