Skip to content
Micup API

Interest onboarding

The interest picker shows an account cards grouped by interest, such as games or public servers, and joins the account to the guilds behind the cards it picks. Staff curate the regions and options through the Admin interest onboarding API. A region is chosen for the request: the region asked for, else the one listing the IP country, else the one listing the app language, else the default region.

An account must finish the picker once when it is on and at least one enabled region has an enabled option. That covers an account created since the picker was first turned on, for 30 days after it was created, and an account created before it that the existing accounts rollout share reaches, until it finishes. Bot and system accounts never get it. While an account must finish it, the Ready payload carries interest_onboarding_required as true; the field is absent otherwise. There is no way to skip the picker.

FieldTypeDescription
idsnowflakeThe ID of the option
namestringThe card title
group?stringThe heading the card is listed under, null for none
asset1?stringThe logo hash, null for none

1 The media proxy serves the logo at /branding/cosmetic-interest-{id}/{asset}.webp on the instance’s media endpoint

FieldTypeDescription
idsnowflakeThe ID of the region
namestringThe region label
FieldTypeDescription
region_id?snowflakeThe region shown, null when the picker has nothing to show
regionsarray[interest onboarding region summary object]Enabled regions with at least one enabled option, for the region switcher
optionsarray[interest onboarding option object]Enabled options of the shown region in admin order, each group together where its first option stands
FieldTypeDescription
option_id?snowflakeThe chosen option, null for the official guild
guild_idsnowflakeThe guild
statusstringjoined, already_member or failed

A failed join means a ban, a full guild, the guild limit, closed invites, the guild cap of the picker or an error kept the account out.

Complete interest onboarding response object

Section titled “Complete interest onboarding response object”
FieldTypeDescription
already_completedbooleanTrue when the account had already finished; nothing was joined
results1array[interest onboarding join result object]The official guild first, then one entry per guild in request order

1 A guild of several chosen options appears once, under the first

GET/v1/users/@me/interest-onboarding

Returns the interest onboarding object for the region the request resolves to. The list is public, so it is returned whether or not the caller must finish the picker. It is empty while the picker is off.

FieldTypeDescription
region_id?snowflakeShow this region instead of the one the request resolves to
StatusBodyCondition
200interest onboarding objectThe picker was returned
401error responseNo account is signed in
403error responseThe credential is a bot or OAuth2 bearer token, returned as ACCESS_DENIED

30 requests per minute for each authenticated user, on the interest_onboarding:get bucket.

POST/v1/users/@me/interest-onboarding

Joins the account to the official guild, when one is set, and to the guilds of every chosen option, then marks the picker finished. Returns the complete interest onboarding response object. An account finishes the picker once; a later call returns already_completed as true.

The account joins as itself, so bans, guild limits and the username gate apply. A failed join never stops the others. The chosen options join at most 20 distinct guilds; any past that are returned as failed. When every join failed for a passing fault, such as a server error or a rate limit, the picker is not marked finished and the account sees it again.

FieldTypeDescription
region_idsnowflakeThe region the options come from
option_ids1array[snowflake]2-10 enabled options of the region, without repeats

1 A region with fewer than 2 enabled options takes all of them

StatusBodyCondition
200complete interest onboarding response objectThe picker was finished, or had been already
400error responseAn option is not an enabled option of an enabled region, or too few options were chosen, returned as INVALID_FORM_BODY
401error responseNo account is signed in
403error responseThe picker is off, returned as FEATURE_TEMPORARILY_DISABLED
403error responseThe account is not one that must finish the picker, returned as FORBIDDEN
403error responseThe credential is a bot or OAuth2 bearer token, returned as ACCESS_DENIED

5 requests per minute for each authenticated user, on the interest_onboarding:complete bucket.