Use the API's createAsync
instead of the default constructor if you don't have at least an access_token!
+
You can create an API instance using its createAsync
function!
Use the API's createAsync
instead of the default constructor if you don't have at least an access_token!
createAsync
should always be your way of creating API instances!!
Optional
client: { Optional
token_type: stringOptional
expires: DateOptional
access_token: stringOptional
scopes: Scope[]Optional
refresh_token: stringOptional
user: numberOptional
refresh_Valid for an unknown amount of time, allows you to get a new token without going through the Authorization Code Grant! +
Optional
client: { Optional
token_type: stringOptional
expires: DateOptional
access_token: stringOptional
scopes: Scope[]Optional
refresh_token: stringOptional
user: numberOptional
refresh_Valid for an unknown amount of time, allows you to get a new token without going through the Authorization Code Grant!
Use the API's refreshToken
function to do that
(default https://osu.ppy.sh
) The base url of the server where the requests should land
(default https://osu.ppy.sh
) The base url of the server where the requests should land
For tokens, requests will be sent to the oauth/token
route, other requests will be sent to the api/v2
route
Should always be "Bearer"
-Optional
userThe osu! user id of the user who went through the Authorization Code Grant
-(default none
) Which events should be logged
Create a new announcement!
-Details of the channel you're creating
-The people that will receive your message
-The message to send with the announcement
-The newly created channel!
-From my understanding, this WILL 403 unless the user is kinda special
-chat.write_manage
-Create/Open/Join a private messages chat channel!
-The other user able to read and send messages in this channel
-The newly created channel!
-chat.write_manage
-Create a new ForumTopic in the forum of your choice!
-The id of the forum you're creating your topic in
-The topic's title
-The first post's content/message
-Optional
poll: PollConfigIf you want to make a poll, specify the parameters of that poll!
-An object with the topic you've made, and its first initial post (which uses your text
)
Some users may not be allowed to do that, such as newly registered users, so this can 403 even with the right scopes
-forum.write
-Edit a ForumPost! Note that it can be the initial one of a ForumTopic!
-An object with the id of the post in question
-The new content of the post (replaces the old content)
-The edited ForumPost
-forum.write
-Edit the title of a ForumTopic!
-An object with the id of the topic in question
-The new title of the topic
-The edited ForumTopic
-Use editForumPost
if you wanna edit the post at the top of the topic
forum.write
-Get extensive beatmap data about whichever beatmap you want!
-An object with the id of the beatmap you're trying to get
-Get various data about the difficulty of a beatmap!
-The Beatmap in question
-Optional
mods: number | string[] | Mod[](defaults to No Mod) (will ignore mod settings) Can be a bitset of mods, an array of mod acronyms ("DT" for DoubleTime), or an array of Mods
-Optional
ruleset: Rulesets(defaults to the ruleset the beatmap was intended for) Useful to specify if the beatmap is a convert
-You may want to use getBeatmapDifficultyAttributesOsu (or Taiko or whatever) instead for better type safety
-Get various data about the difficulty of a ctb beatmap!
-Get various data about the difficulty of a mania beatmap!
-Get various data about the difficulty of an osu! beatmap!
-Get various data about the difficulty of a taiko beatmap!
-Get data about a BeatmapPack using its tag!
-An object with the tag of the beatmappack you're trying to get
-Currently in https://osu.ppy.sh/beatmaps/packs, when hovering a pack, its link with its tag should show up on your browser's bottom left
-Get an Array of up to 100 BeatmapPacks of a specific type!
-The type of the BeatmapPacks, defaults to "standard"
-Get the top scores of a beatmap!
-Get the score on a beatmap made by a specific user (with specific mods and on a specific ruleset if needed)
-The Beatmap the score was made on
-The User who made the score
-Optional
mods: string[]The Mods used to make the score, defaults to any, you can use ["NM"]
to filter out scores with mods
Optional
ruleset: RulesetsThe Ruleset used to make the score, useful if it was made on a convert
-An Object with the position of the score according to the specified Mods and Ruleset, and with the score itself
-Get extensive beatmap data for up to 50 beatmaps at once!
-Optional
ids: number[]An array composed of the ids of the beatmaps you want
-Get extensive beatmapset data about whichever beatmapset you want!
-An object with the id of the beatmapset you're trying to get
-Get details about the version/update/build of something related to osu!
-The name of the thing related to osu!, like lazer
, web
, cuttingedge
, beta40
, stable40
The name of the version! Usually something like 2023.1026.0
for lazer, or 20230326
for stable
Get up to 21 versions/updates/builds!
-Optional
versions: { Get builds that were released before/after (and including) those versions (use the name of the versions, e.g. 2023.1109.0
)
Optional
from?: stringOptional
to?: stringOptional
max_id: numberFilter out builds that have an id higher than this (this takes priority over versions.to
)
Optional
stream: stringOnly get builds from a specific stream
-Each element of changelog_entries
will have a message
property if markdown
, message_html
if html
, defaults to both
An effective way to get all available streams, as well as their latest version!
-const names_of_streams = (await api.getChangelogStreams()).map(s => s.name)
+
Should always be "Bearer"
+Optional
userThe osu! user id of the user who went through the Authorization Code Grant
+(default none
) Which events should be logged
Create a new announcement!
+Details of the channel you're creating
+The people that will receive your message
+The message to send with the announcement
+The newly created channel!
+From my understanding, this WILL 403 unless the user is kinda special
+Create a new ForumTopic in the forum of your choice!
+The id of the forum you're creating your topic in
+The topic's title
+The first post's content/message
+Optional
poll: PollConfigIf you want to make a poll, specify the parameters of that poll!
+An object with the topic you've made, and its first initial post (which uses your text
)
Some users may not be allowed to do that, such as newly registered users, so this can 403 even with the right scopes
+Get extensive beatmap data about whichever beatmap you want!
+An object with the id of the beatmap you're trying to get
+Get various data about the difficulty of a beatmap!
+The Beatmap in question
+Optional
mods: number | string[] | Mod[](defaults to No Mod) (will ignore mod settings) Can be a bitset of mods, an array of mod acronyms ("DT" for DoubleTime), or an array of Mods
+Optional
ruleset: Rulesets(defaults to the ruleset the beatmap was intended for) Useful to specify if the beatmap is a convert
+You may want to use getBeatmapDifficultyAttributesOsu (or Taiko or whatever) instead for better type safety
+Get data about a BeatmapPack using its tag!
+An object with the tag of the beatmappack you're trying to get
+Currently in https://osu.ppy.sh/beatmaps/packs, when hovering a pack, its link with its tag should show up on your browser's bottom left
+Get the score on a beatmap made by a specific user (with specific mods and on a specific ruleset if needed)
+The Beatmap the score was made on
+The User who made the score
+Optional
mods: string[]The Mods used to make the score, defaults to any, you can use ["NM"]
to filter out scores with mods
Optional
ruleset: RulesetsThe Ruleset used to make the score, useful if it was made on a convert
+An Object with the position of the score according to the specified Mods and Ruleset, and with the score itself
+Get extensive beatmap data for up to 50 beatmaps at once!
+An array of beatmaps or of objects that have the id of the beatmaps you're trying to get
+Get extensive beatmapset data about whichever beatmapset you want!
+An object with the id of the beatmapset you're trying to get
+Get details about the version/update/build of something related to osu!
+The name of the thing related to osu!, like lazer
, web
, cuttingedge
, beta40
, stable40
The name of the version! Usually something like 2023.1026.0
for lazer, or 20230326
for stable
Get up to 21 versions/updates/builds!
+Optional
versions: { Get builds that were released before/after (and including) those versions (use the name of the versions, e.g. 2023.1109.0
)
Optional
from?: stringOptional
to?: stringOptional
max_id: numberFilter out builds that have an id higher than this (this takes priority over versions.to
)
Optional
stream: stringOnly get builds from a specific stream
+Each element of changelog_entries
will have a message
property if markdown
, message_html
if html
, defaults to both
An effective way to get all available streams, as well as their latest version!
+const names_of_streams = (await api.getChangelogStreams()).map(s => s.name)
-Get a ChatChannel, and the users in it if it is a private channel!
-The channel in question
-Will 404 if the user has not joined the channel (use joinChatChannel
for that)
chat.read
-Get a list of all publicly joinable channels!
-chat.read
-Get the recent messages of a specific ChatChannel!
-The Channel you wanna get the messages from
-(defaults to 20, max 50) The maximum amount of messages you want to get!
-Optional
since: ChatMessage | { Get the messages sent after this message
-Optional
until: ChatMessage | { Get the messages sent up to but not including this message
-chat.read
-Get the top countries of a specific ruleset!
-On which Ruleset should the countries be compared?
-(defaults to 1) Imagine Rankings
as a page, it can only have a maximum of 50 countries, while 50 others may be on the next one
Get a forum topic, as well as its main post (content) and the posts that were sent in it!
-An object with the id of the topic in question
-(defaults to 20, max 50) How many posts
maximum?
(defaults to "id_asc") "id_asc" to have the oldest post at the beginning of the posts
array, "id_desc" to have the newest instead
Optional
first_post: ForumPost | { (ignored if cursor_string
) An Object with the id of the first post to be returned in posts
Optional
cursor_string: stringUse a response's cursor_string
with the same parameters to get the next "page" of results, so posts
in this instance!
The oldest post of a topic is the text of a topic
-Get user data of each friend of the authorized user
-friends.read
-Get the top 50 players who have the most total kudosu!
-Get a NewsPost, its content, and the NewsPosts right before and right after it!
-An object with the id or the slug of a NewsPost (the slug being the filename minus the extension, used in its URL)
-Get the scores on a specific item of a room!
-An object with the id of the item in question, as well as the id of the room
-How many scores maximum? Defaults to 50, the maximum the API will return
-Sort by scores, ascending or descending? Defaults to descending
-Optional
cursor_string: stringUse a MultiplayerScores' params
and cursor_string
to get the next page (scores 51 to 100 for example)
(2023-11-10) Items are broken for multiplayer (real-time) rooms, not for playlists (like spotlights), that's an osu! bug +
Get a ChatChannel, and the users in it if it is a private channel!
+The channel in question
+Will 404 if the user has not joined the channel (use joinChatChannel
for that)
Get the recent messages of a specific ChatChannel!
+The Channel you wanna get the messages from
+(defaults to 20, max 50) The maximum amount of messages you want to get!
+Optional
since: Message | { Get the messages sent after this message
+Optional
until: Message | { Get the messages sent up to but not including this message
+Get the top countries of a specific ruleset!
+On which Ruleset should the countries be compared?
+(defaults to 1) Imagine Rankings
as a page, it can only have a maximum of 50 countries, while 50 others may be on the next one
Get a forum topic, as well as its main post (content) and the posts that were sent in it!
+An object with the id of the topic in question
+(defaults to 20, max 50) How many posts
maximum?
(defaults to "id_asc") "id_asc" to have the oldest post at the beginning of the posts
array, "id_desc" to have the newest instead
Optional
first_post: Forum.Post | { (ignored if cursor_string
) An Object with the id of the first post to be returned in posts
Optional
cursor_string: stringUse a response's cursor_string
with the same parameters to get the next "page" of results, so posts
in this instance!
The oldest post of a topic is the text of a topic
+Get user data of each friend of the authorized user
+Get the top 50 players who have the most total kudosu!
+Get a NewsPost, its content, and the NewsPosts right before and right after it!
+Get the scores on a specific item of a room!
+An object with the id of the item in question, as well as the id of the room
+How many scores maximum? Defaults to 50, the maximum the API will return
+Sort by scores, ascending or descending? Defaults to descending
+Optional
cursor_string: stringUse a MultiplayerScores' params
and cursor_string
to get the next page (scores 51 to 100 for example)
(2024-03-04) This may not work for rooms from before March 5th, use at your own risk https://github.com/ppy/osu-web/issues/10725
-Get the top players of the game, with some filters!
-Self-explanatory, is also known as "Gamemode"
-Rank players by their performance points or by their ranked score?
-(defaults to 1) Imagine Rankings
as a page, it can only have a maximum of 50 players, while 50 others may be on the next one
What kind of players do you want to see? Defaults to all
, friends
has no effect if no authorized user
Optional
country: stringOnly get players from a specific country, using its ISO 3166-1 alpha-2 country code! (France would be FR
, United States US
)
Optional
variant: "4k" | "7k"If type
is performance
and ruleset
is mania, choose between 4k and 7k!
Get extensive user data about the authorized user
-Optional
ruleset: RulesetsDefaults to the user's default/favourite Ruleset
-identify
-Get rooms that are active, that have ended, that the user participated in, that the user made, or just simply any room!
-Self-explanatory enough, defaults to active
public
-Get the rankings of a spotlight from 2009 to 2020 on a specific ruleset!
-Each spotlight has a different ranking (and often maps) depending on the ruleset
-The spotlight in question
-What kind of players do you want to see? Defaults to all
, friends
has no effect if no authorized user
Get ALL legacy spotlights! (2009-2020, somewhat known as charts/ranking charts, available @ https://osu.ppy.sh/rankings/osu/charts)
-The data for newer spotlights (2020-, somewhat known as seasons) can be obtained through getRoom()
+
Get extensive user data about the authorized user
+Optional
ruleset: RulesetsDefaults to the user's default/favourite Ruleset
+Get playlists/realtime rooms that are active, that have ended, that the user participated in, that the user made, or just simply any room!
+Whether the multiplayer rooms are in playlist format (like current spotlights) or realtime
+The state of the room, or the relation of the authorized user with the room
+The maximum amount of rooms to return, defaults to 10
+Sort (where most recent is first) by creation date or end date, defaults to the creation date
+Get the rankings of a spotlight from 2009 to 2020 on a specific ruleset!
+Each spotlight has a different ranking (and often maps) depending on the ruleset
+The spotlight in question
+What kind of players do you want to see? Defaults to all
, friends
has no effect if no authorized user
Get ALL legacy spotlights! (2009-2020, somewhat known as charts/ranking charts, available @ https://osu.ppy.sh/rankings/osu/charts)
+The data for newer spotlights (2020-, somewhat known as seasons) can be obtained through getRoom()
but you can't really get their id without going through the website's URLs (https://osu.ppy.sh/seasons/latest) as far as I know :(
Get extensive user data about whoever you want!
-Get beatmaps favourited or made by a user!
-The user in question
-The relation between the user and the beatmaps
-(defaults to 5) The maximum amount of elements returned in the array
-Optional
offset: numberHow many elements that would be at the top of the returned array get skipped (while still filling the array up to the limit)
-Get data about the activity of a user kudosu-wise!
-The user in question
-Optional
limit: number(defaults to 5) The maximum amount of activities in the returned array
-Optional
offset: numberHow many elements that would be at the top of the returned array get skipped (while still filling the array up to the limit)
-Get the beatmaps most played by a user!
-The user who played the beatmaps
-(defaults to 5) The maximum amount of elements returned in the array
-Optional
offset: numberHow many elements that would be at the top of the returned array get skipped (while still filling the array up to the limit)
-Get an array of Events of different type
s that relate to a user's activity during the last 31 days! (or 100 activities, whatever comes first)
The user in question
-(defaults to 5) The maximum amount of elements returned in the array
-Optional
offset: numberHow many elements that would be at the top of the returned array get skipped (while still filling the array up to the limit)
-Get "notable" scores from a user
-The user who set the scores
-Do you want scores: in the user's top 100, that are top 1 on a beatmap, that have been recently set?
-Optional
limit: numberThe maximum amount of scores to be returned
-Optional
ruleset: RulesetsThe Ruleset the scores were made in, defaults to the user's default/favourite Ruleset
-(defaults to false) Do you want scores where the user didn't survive or quit the map?
-Optional
offset: numberHow many elements that would be at the top of the returned array get skipped (while still filling the array up to the limit)
-Get user data for up to 50 users at once!
-An array composed of the ids of the users you want
-Get a wiki page!
-What's in the page's URL after https://osu.ppy.sh/wiki/
(so the title, after the subtitle if there is a subtitle)
+
Get beatmaps favourited or made by a user!
+The user in question
+The relation between the user and the beatmaps
+(defaults to 5) The maximum amount of elements returned in the array
+Optional
offset: numberHow many elements that would be at the top of the returned array get skipped (while still filling the array up to the limit)
+Get data about the activity of a user kudosu-wise!
+The user in question
+Optional
limit: number(defaults to 5) The maximum amount of activities in the returned array
+Optional
offset: numberHow many elements that would be at the top of the returned array get skipped (while still filling the array up to the limit)
+Get the beatmaps most played by a user!
+The user who played the beatmaps
+(defaults to 5) The maximum amount of elements returned in the array
+Optional
offset: numberHow many elements that would be at the top of the returned array get skipped (while still filling the array up to the limit)
+Get the top players of the game, with some filters!
+Self-explanatory, is also known as "Gamemode"
+Rank players by their performance points or by their ranked score?
+(defaults to 1) Imagine Rankings
as a page, it can only have a maximum of 50 players, while 50 others may be on the next one
What kind of players do you want to see? Defaults to all
, friends
has no effect if no authorized user
Optional
country: stringOnly get players from a specific country, using its ISO 3166-1 alpha-2 country code! (France would be FR
, United States US
)
Optional
variant: "4k" | "7k"If type
is performance
and ruleset
is mania, choose between 4k and 7k!
Get an array of Events of different type
s that relate to a user's activity during the last 31 days! (or 100 activities, whatever comes first)
The user in question
+(defaults to 5) The maximum amount of elements returned in the array
+Optional
offset: numberHow many elements that would be at the top of the returned array get skipped (while still filling the array up to the limit)
+Get "notable" scores from a user
+The user who set the scores
+Do you want scores: in the user's top 100, that are top 1 on a beatmap, that have been recently set?
+Optional
limit: numberThe maximum amount of scores to be returned
+Optional
ruleset: RulesetsThe Ruleset the scores were made in, defaults to the user's default/favourite Ruleset
+(defaults to false) Do you want scores where the user didn't survive or quit the map?
+Optional
offset: numberHow many elements that would be at the top of the returned array get skipped (while still filling the array up to the limit)
+Get user data for up to 50 users at once!
+An array of users or of objects that have the id of the users you're trying to get
+Get a wiki page!
+What's in the page's URL after https://osu.ppy.sh/wiki/
(so the title, after the subtitle if there is a subtitle)
(An example for https://osu.ppy.sh/wiki/en/Game_mode/osu!
would be Game_mode/osu!
)
(defaults to "en") The BCP 47 language (sub)tag, lowercase (for example, for the article in french, use "fr")
-Join a public or multiplayer ChatChannel, allowing you to interact with it!
-The channel you wanna join
-Optional
user: User | { (defaults to the presumed authorized user) The user joining the channel
-chat.write_manage
-Needs to be done periodically to reset chat activity timeout
-Optional
since: { UserSilences that are before that will not be returned!
-Optional
message?: ChatMessage | { Optional
user_A list of recent silences
-Every 30 seconds is a good idea
-chat.read
-Leave/Close a public ChatChannel!
-The channel you wanna join
-Optional
user: User | { (defaults to the presumed authorized user) The user joining the channel
-chat.write_manage
-Private
logMark a certain channel as read up to a given message!
-The channel in question
-You're marking this and all the messages before it as read!
-chat.read
-Private
obtainSet most of an api
's properties, like tokens, token_type, scopes, expiration_date
An Object with the client id & secret, grant_type, and stuff that depends of the grant_type
-The api
which will see its properties change
api
, just in case, because in theory it should modify the original object
Make and send a ForumPost in a ForumTopic!
-An object with the id of the topic you're making your reply in
-Your reply! Your message!
-The reply you've made!
-forum.write
-Private
requestThe type of request, each endpoint uses a specific one (if it uses multiple, the intent and parameters become different)
-What comes in the URL after api/
Optional
parameters: { The things to specify in the request, such as the beatmap_id when looking for a beatmap
-Attempt number for doing this specific request
-A Promise with the API's response
-Look for a user like you would on the website!
-What you would put in the searchbar
-(defaults to 1) You normally get the first 20 results, but if page is 2, you'd get results 21 to 40 instead for example!
-Look for a wiki page like you would on the website!
-What you would put in the searchbar
-(defaults to 1) You normally get the first 50 results, but if page is 2, you'd get results 51 to 100 instead for example!
-Send a message in a ChatChannel!
-The channel in which you want to send your message
-The message you wanna send
-(defaults to false) Is it a command? Like /me dances
The newly sent ChatMessage!
-chat.write
-Send a private message to someone!
-The User you wanna send your message to!
-The message you wanna send
-(defaults to false) Is it a command? Like /me dances
Optional
uuid: stringA client-side message identifier
-The message you sent
-You don't need to use createChatPrivateChannel
before sending a message
chat.write
-Static
createThe normal way to create an API instance! Make sure to await
it
The ID and the secret of your client, can be found on https://osu.ppy.sh/home/account/edit#new-oauth-application
-Optional
user: { If the instance is supposed to represent a user, use their Authorization Code and the Application Callback URL of your application!
-A promise with an API instance
-Generated using TypeDoc
(defaults to "en") The BCP 47 language (sub)tag, lowercase (for example, for the article in french, use "fr")
+Join a public or multiplayer ChatChannel, allowing you to interact with it!
+Needs to be done periodically to reset chat activity timeout
+Optional
since: { UserSilences that are before that will not be returned!
+Optional
message?: Message | { Optional
user_A list of recent silences
+Private
logPrivate
obtainSet most of an api
's properties, like tokens, token_type, scopes, expiration_date
An Object with the client id & secret, grant_type, and stuff that depends of the grant_type
+The api
which will see its properties change
api
, just in case, because in theory it should modify the original object
Private
requestThe type of request, each endpoint uses a specific one (if it uses multiple, the intent and parameters become different)
+What comes in the URL after api/
Optional
parameters: { The things to specify in the request, such as the beatmap_id when looking for a beatmap
+Attempt number for doing this specific request
+A Promise with the API's response
+Look for a user like you would on the website!
+What you would put in the searchbar
+(defaults to 1) You normally get the first 20 results, but if page is 2, you'd get results 21 to 40 instead for example!
+Look for a wiki page like you would on the website!
+What you would put in the searchbar
+(defaults to 1) You normally get the first 50 results, but if page is 2, you'd get results 51 to 100 instead for example!
+Send a message in a ChatChannel!
+The channel in which you want to send your message
+The message you wanna send
+(defaults to false) Is it a command? Like /me dances
The newly sent ChatMessage!
+Send a private message to someone!
+The User you wanna send your message to!
+The message you wanna send
+(defaults to false) Is it a command? Like /me dances
Optional
uuid: stringA client-side message identifier
+The message you sent
+Static
createThe normal way to create an API instance! Make sure to await
it
The ID and the secret of your client, can be found on https://osu.ppy.sh/home/account/edit#new-oauth-application
+Optional
user: { If the instance is supposed to represent a user, use their Authorization Code and the Application Callback URL of your application!
+A promise with an API instance
+Generated using TypeDoc
If the API
throws an error, it should always be an APIError
!
The reason why things didn't go as expected
-The server to which the request was sent
-The type of resource that was requested from the server
-Optional
parameters: objectThe filters that were used to specify what resource was wanted
-Optional
parametersGenerated using TypeDoc
If the API
throws an error, it should always be an APIError
!
The reason why things didn't go as expected
+The server to which the request was sent
+The type of resource that was requested from the server
+Optional
parameters: objectThe filters that were used to specify what resource was wanted
+Optional
parametersGenerated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generates a link for users to click on in order to use your application!
-The Client ID, find it at https://osu.ppy.sh/home/account/edit#new-oauth-application
-The specified Application Callback URL, aka where the user will be redirected upon clicking the button to authorize
-What you want to do with/as the user
-(defaults to https://osu.ppy.sh) The API server
+Generates a link for users to click on in order to use your application!
+The Client ID, find it at https://osu.ppy.sh/home/account/edit#new-oauth-application
+The specified Application Callback URL, aka where the user will be redirected upon clicking the button to authorize
+What you want to do with/as the user
+(defaults to https://osu.ppy.sh) The API server
The link people should click on
-Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
osu-api-v2-js is a JavaScript & TypeScript package that helps you interact with osu!api (v2).
+osu-api-v2-js is a JavaScript & TypeScript package that helps you interact with osu!api (v2).
It is currently a bit unstable as it's under development, but you can find documentation on osu-v2.taevas.xyz if needed!
To install the package, use a command from your package manager:
npm i osu-api-v2-js # if using npm
yarn add osu-api-v2-js # if using yarn
pnpm add osu-api-v2-js # if using pnpm
bun a osu-api-v2-js # if using bun
@@ -95,7 +95,7 @@
Ranking
- Get Kudosu Ranking
-- Get Ranking
+- Get Ranking // split between getUserRanking(), getCountryRanking(), and getSpotlightRanking()
- Get Spotlights
Users
@@ -117,4 +117,4 @@
- /scores/{rulesetOrScore}/{score}/download
- /scores/{rulesetOrScore}/{score?}
-
Generated using TypeDoc
Generated using TypeDoc
Expected from BeatmapPlaycount
+Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Optional
score_(2023-11-20) Doesn't exist anymore?
+Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Expected from ScoreWithUserBeatmapBeatmapset
+Generated using TypeDoc
Expected from BeatmapsetExtendedPlus
+Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Optional
beatmapsetsAre difficulty reduction mods unable to be used to clear this pack? (is false
if you can use such mods)
Optional
user_IDs of beatmapsets completed by the user (according to the requirements of the pack)
+Whether all beatmapsets are completed by the user or not
+Generated using TypeDoc
Playcount
+Generated using TypeDoc
Expected from Match
+Generated using TypeDoc
Expected from PlaylistItem
+Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Expected from api.getBeatmapDifficultyAttributesFruits()
-Generated using TypeDoc
Expected from api.getBeatmapDifficultyAttributesMania()
-Optional
score_(2023-11-20) Doesn't exist anymore?
-Generated using TypeDoc
Expected from api.getBeatmapDifficultyAttributesOsu()
-Generated using TypeDoc
Expected from api.getBeatmapDifficultyAttributesTaiko()
-Generated using TypeDoc
Expected from ScoreWithUserBeatmapBeatmapset
-Generated using TypeDoc
Expected from BeatmapsetExtendedPlus
-Generated using TypeDoc
Expected from api.getBeatmap()
-Generated using TypeDoc
Expected from api.getBeatmapPack(), api.getBeatmapPacks()
-Optional
beatmapsetsAre difficulty reduction mods unable to be used to clear this pack? (is false
if you can use such mods)
Optional
user_IDs of beatmapsets completed by the user (according to the requirements of the pack)
-Whether all beatmapsets are completed by the user or not
-Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Expected from Match
-Generated using TypeDoc
Expected from PlaylistItem
-Generated using TypeDoc
Expected from BeatmapWithBeatmapset, Score, BeatmapPlaycount
+A string like that, where id is the id
of the beatmapset: //b.ppy.sh/preview/58951.mp3
Is it ranked, is it graveyarded, etc
+A title readable by any english-speaking person, so it'd be in romaji if the song's title is in Japanese
+Basically the title is the original language, so with hiragana, katakana and kanji if Japanese
+Generated using TypeDoc
Expected from RankingsSpotlight, BeatmapExtendedWithFailtimesBeatmapsetextended
+So it's false
if you can download it
A string like that, where id is the id
of the beatmapset: //b.ppy.sh/preview/58951.mp3
Is it ranked, is it graveyarded, etc
+A title readable by any english-speaking person, so it'd be in romaji if the song's title is in Japanese
+Basically the title is the original language, so with hiragana, katakana and kanji if Japanese
+Generated using TypeDoc
So it's false
if you can download it
The different beatmaps/difficulties this beatmapset has
+The different beatmaps made for osu!, but converted to the other Rulesets
+In HTML
+Optional
has_Only exists if authorized user
+A string like that, where id is the id
of the beatmapset: //b.ppy.sh/preview/58951.mp3
Is it ranked, is it graveyarded, etc
+A title readable by any english-speaking person, so it'd be in romaji if the song's title is in Japanese
+Basically the title is the original language, so with hiragana, katakana and kanji if Japanese
+Generated using TypeDoc
So it's false
if you can download it
A string like that, where id is the id
of the beatmapset: //b.ppy.sh/preview/58951.mp3
Is it ranked, is it graveyarded, etc
+A title readable by any english-speaking person, so it'd be in romaji if the song's title is in Japanese
+Basically the title is the original language, so with hiragana, katakana and kanji if Japanese
+Generated using TypeDoc
Expected from BeatmapWithBeatmapset, Score, BeatmapPlaycount
-A string like that, where id is the id
of the beatmapset: //b.ppy.sh/preview/58951.mp3
Can be/Is 0 if there is no source
-Is it ranked, is it graveyarded, etc
-A title readable by any english-speaking person, so it'd be romaji if the song's title is in Japanese
-Basically the title is the original language, so with hiraganas and kanji if Japanese
-Generated using TypeDoc
Expected from RankingsSpotlight, BeatmapExtendedWithFailtimesBeatmapsetextended
-So it's false
if you can download it
A string like that, where id is the id
of the beatmapset: //b.ppy.sh/preview/58951.mp3
Can be/Is 0 if there is no source
-Is it ranked, is it graveyarded, etc
-0 if no tags at all, a string with tags separated from each other by a whitespace
-A title readable by any english-speaking person, so it'd be romaji if the song's title is in Japanese
-Basically the title is the original language, so with hiraganas and kanji if Japanese
-Generated using TypeDoc
Expected from api.getBeatmapset()
-So it's false
if you can download it
The different beatmaps/difficulties this beatmapset has
-The different beatmaps made for osu!, but converted to the other Rulesets
-In HTML
-Optional
has_Only exists if authorized user
-A string like that, where id is the id
of the beatmapset: //b.ppy.sh/preview/58951.mp3
Can be/Is 0 if there is no source
-Is it ranked, is it graveyarded, etc
-0 if no tags at all, a string with tags separated from each other by a whitespace
-A title readable by any english-speaking person, so it'd be romaji if the song's title is in Japanese
-Basically the title is the original language, so with hiraganas and kanji if Japanese
-Generated using TypeDoc
Expected from api.getUserBeatmaps()
-So it's false
if you can download it
A string like that, where id is the id
of the beatmapset: //b.ppy.sh/preview/58951.mp3
Can be/Is 0 if there is no source
-Is it ranked, is it graveyarded, etc
-0 if no tags at all, a string with tags separated from each other by a whitespace
-A title readable by any english-speaking person, so it'd be romaji if the song's title is in Japanese
-Basically the title is the original language, so with hiraganas and kanji if Japanese
-Generated using TypeDoc
How many users are playing on this version of the game? (if lazer/web, should be 0, lazer doesn't show such stats)
+The name of the version
+If a video is showcased on the changelog
+The ID of a Youtube video is whatever comes after /watch?v=
in its url
Generated using TypeDoc
Can be January 1st 1970!
+Optional
github_Doesn't exist if no github user is associated with who's credited with the change
+Optional
message?: null | stringEntry message in Markdown format, embedded HTML is allowed
+Exists only if Markdown was requested
+Optional
message_Entry message in HTML format
+Exists only if HTML was requested
+How many users are playing on this version of the game? (if lazer/web, should be 0, lazer doesn't show such stats)
+The name of the version
+If a video is showcased on the changelog
+The ID of a Youtube video is whatever comes after /watch?v=
in its url
Generated using TypeDoc
How many users are playing on this version of the game? (if lazer/web, should be 0, lazer doesn't show such stats)
+The name of the version
+If a video is showcased on the changelog
+The ID of a Youtube video is whatever comes after /watch?v=
in its url
Generated using TypeDoc
Can be January 1st 1970!
+Optional
github_Doesn't exist if no github user is associated with who's credited with the change
+Optional
message?: null | stringEntry message in Markdown format, embedded HTML is allowed
+Exists only if Markdown was requested
+Optional
message_Entry message in HTML format
+Exists only if HTML was requested
+How many users are playing on this version of the game? (if lazer/web, should be 0, lazer doesn't show such stats)
+The name of the version
+If a video is showcased on the changelog
+The ID of a Youtube video is whatever comes after /watch?v=
in its url
Generated using TypeDoc
Generated using TypeDoc
How many users are playing on this?
+Should be 0 if web
+Generated using TypeDoc
Expected from api.getChangelogBuild()
-Can be January 1st 1970!
-Optional
github_Doesn't exist if no github user is associated with who's credited with the change
-Optional
message?: null | stringEntry message in Markdown format, embedded HTML is allowed, exists only if Markdown was requested
-Optional
message_Entry message in HTML format, exists only if HTML was requested
-How many users are playing on this version of the game? (if lazer/web, should be 0, lazer doesn't show such stats)
-The name of the version
-If a video is showcased on the changelog
-The ID of a Youtube video is whatever comes after /watch?v=
in its url
Generated using TypeDoc
Expected from ChangelogBuildWithChangelogentriesVersions
-How many users are playing on this version of the game? (if lazer/web, should be 0, lazer doesn't show such stats)
-The name of the version
-If a video is showcased on the changelog
-The ID of a Youtube video is whatever comes after /watch?v=
in its url
Generated using TypeDoc
Expected from api.getChangelogBuilds()
-Can be January 1st 1970!
-Optional
github_Doesn't exist if no github user is associated with who's credited with the change
-Optional
message?: null | stringEntry message in Markdown format, embedded HTML is allowed, exists only if Markdown was requested
-Optional
message_Entry message in HTML format, exists only if HTML was requested
-How many users are playing on this version of the game? (if lazer/web, should be 0, lazer doesn't show such stats)
-The name of the version
-If a video is showcased on the changelog
-The ID of a Youtube video is whatever comes after /watch?v=
in its url
Generated using TypeDoc
Generated using TypeDoc
The reason why messages can't be sent in this channel
+Is null if messages can be sent
+Is null if no message has been read (I think)
+The ids of the users that are in the channel
+Is empty for public channels
+Generated using TypeDoc
API.sendChatPrivateMessage / +API.sendChatMessage / +API.getChatMessages
+Like "action", "markdown", "plain"
+Optional
uuidGenerated using TypeDoc
Generated using TypeDoc
Expected from api.sendChatPrivateMessage(), api.createChatPrivateChannel()
-Generated using TypeDoc
Expected from api.joinChatChannel(), api.getChatChannel()
-The reason why messages can't be sent in this channel
-Is null if messages can be sent
-Is null if no message has been read (I think)
-The ids of the users that are in the channel
-Is empty for public channels
-Generated using TypeDoc
Expected from api.sendChatPrivateMessage(), api.getChatMessages(), api.sendChatMessage()
-Like "action", "markdown", "plain"
-Optional
uuidGenerated using TypeDoc
Generated using TypeDoc
May contain HTML (like have the text between )
+If the achievement is for a specific mode only (such as pass a 2* beatmap in taiko)
+What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
{artist} - {title} [{difficulty_name}]
+What goes after the website's URL, like it could be the /b/2980857?m=0
of https://osu.ppy.sh/b/2980857?m=0
(/{beatmap_id}?m={ruleset_id})
Generated using TypeDoc
{artist} - {title} [{difficulty_name}]
+What goes after the website's URL, like it could be the /b/2980857?m=0
of https://osu.ppy.sh/b/2980857?m=0
(/{beatmap_id}?m={ruleset_id})
Generated using TypeDoc
{artist} - {title}
+What goes after the website's URL, like it could be the /s/689155
of https://osu.ppy.sh/s/689155
(/{beatmapset_id})
Generated using TypeDoc
{artist} - {title}
+What goes after the website's URL, like it could be the /s/689155
of https://osu.ppy.sh/s/689155
(/{beatmapset_id})
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
{artist} - {title}
+What goes after the website's URL, like it could be the /s/689155
of https://osu.ppy.sh/s/689155
(/{beatmapset_id})
Generated using TypeDoc
{artist} - {title}
+What goes after the website's URL, like it could be the /s/689155
of https://osu.ppy.sh/s/689155
(/{beatmapset_id})
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
{artist} - {title}
+What goes after the website's URL, like it could be the /s/689155
of https://osu.ppy.sh/s/689155
(/{beatmapset_id})
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
{artist} - {title}
+What goes after the website's URL, like it could be the /s/689155
of https://osu.ppy.sh/s/689155
(/{beatmapset_id})
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
The position achieved, like 14
+The grade, like "S"
+{artist} - {title} [{difficulty_name}]
+What goes after the website's URL, like it could be the /b/2980857?m=0
of https://osu.ppy.sh/b/2980857?m=0
(/{beatmap_id}?m={ruleset_id})
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
{artist} - {title} [{difficulty_name}]
+What goes after the website's URL, like it could be the /b/2980857?m=0
of https://osu.ppy.sh/b/2980857?m=0
(/{beatmap_id}?m={ruleset_id})
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
Generated using TypeDoc
Generated using TypeDoc
May contain HTML (like have the text between )
-If the achievement is for a specific mode only (such as pass a 2* beatmap in taiko)
-What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
{artist} - {title} [{difficulty_name}]
-What goes after the website's URL, like it could be the /b/2980857?m=0
of https://osu.ppy.sh/b/2980857?m=0
(/{beatmap_id}?m={ruleset_id})
Generated using TypeDoc
{artist} - {title} [{difficulty_name}]
-What goes after the website's URL, like it could be the /b/2980857?m=0
of https://osu.ppy.sh/b/2980857?m=0
(/{beatmap_id}?m={ruleset_id})
Generated using TypeDoc
Generated using TypeDoc
{artist} - {title}
-What goes after the website's URL, like it could be the /s/689155
of https://osu.ppy.sh/s/689155
(/{beatmapset_id})
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
{artist} - {title}
-What goes after the website's URL, like it could be the /s/689155
of https://osu.ppy.sh/s/689155
(/{beatmapset_id})
Generated using TypeDoc
{artist} - {title}
-What goes after the website's URL, like it could be the /s/689155
of https://osu.ppy.sh/s/689155
(/{beatmapset_id})
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
{artist} - {title}
-What goes after the website's URL, like it could be the /s/689155
of https://osu.ppy.sh/s/689155
(/{beatmapset_id})
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
{artist} - {title}
-What goes after the website's URL, like it could be the /s/689155
of https://osu.ppy.sh/s/689155
(/{beatmapset_id})
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
The position achieved, like 14
-The grade, like "S"
-{artist} - {title} [{difficulty_name}]
-What goes after the website's URL, like it could be the /b/2980857?m=0
of https://osu.ppy.sh/b/2980857?m=0
(/{beatmap_id}?m={ruleset_id})
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
{artist} - {title} [{difficulty_name}]
-What goes after the website's URL, like it could be the /b/2980857?m=0
of https://osu.ppy.sh/b/2980857?m=0
(/{beatmap_id}?m={ruleset_id})
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
(or users
instead of u
)
Generated using TypeDoc
What goes after the website's URL, so for example, it could be the /u/7276846
of https://osu.ppy.sh/u/7276846
Generated using TypeDoc
API.replyForumTopic / +API.createForumTopic / +API.getForumTopicAndPosts / +API.editForumPost
+Post content in HTML format
+Post content in BBCode format
+Generated using TypeDoc
API.createForumTopic / +API.getForumTopicAndPosts / +API.editForumTopicTitle
+Can be in the future
+Generated using TypeDoc
Expected from api.replyForumTopic(), api.createForumTopic(), api.getForumTopicAndPosts(), api.editForumPost()
-Post content in HTML format
-Post content in BBCode format
-Generated using TypeDoc
Expected from api.createForumTopic(), api.getForumTopicAndPosts(), api.editForumTopicTitle()
-Can be in the future
-Generated using TypeDoc
Expected from api.getUserKudosu()
-Generated using TypeDoc
Generated using TypeDoc
Expected from api.getMatch()
-Optional
text?: stringIf detail.type
is other
, this exists and will be the name of the room
Optional
game?: { If detail.type
is other
, then this should exist!
Generated using TypeDoc
Generated using TypeDoc
In a format where 96.40%
would be 0.9640
(likely with some numbers after the zero)
Generated using TypeDoc
Optional
text?: stringIf detail.type
is other
, this exists and will be the name of the room
Optional
game?: { If detail.type
is other
, then this should exist!
Generated using TypeDoc
Generated using TypeDoc
Expected from Room
+Should be null if the room isn't the realtime multiplayer kind
+Should be null if the room isn't the realtime multiplayer kind
+Generated using TypeDoc
Optional
current_Only exists if authorized user
+In a format where 96.40%
would be 0.9640
(with some numbers after the zero)
How many (completed (I think)) attempts on each item? Empty array if the multiplayer room is the realtime kind
+Generated using TypeDoc
Expected from MultiplayerScores
+This particular interface seems really unstable, beware
+In a format where 96.40%
would be 0.9640
(and no number afterwards)
All of its properties are optional because instead of being 0, the property actually disappears instead! +(so if the score has no miss, the miss property is simply not there)
+Optional
great?: numberOptional
ignore_Optional
large_Optional
small_All of its properties are optional because instead of being 0, the property actually disappears instead! +(so if the score has no miss, the miss property is simply not there)
+Optional
great?: numberOptional
large_Optional
large_Optional
meh?: numberOptional
miss?: numberOptional
ok?: numberOptional
small_Optional
small_Optional
small_Generated using TypeDoc
Will be null if there is no next page
+How many scores there are across all pages, not necessarily scores.length
Will be null if not an authorized user or if the authorized user has no score
+Generated using TypeDoc
Expected from MultiplayerScores
-This particular interface seems really unstable, beware
-In a format where 96.40%
would be 0.9640
(and no number afterwards)
All of its properties are optional because instead of being 0, the property actually disappears instead! -(so if the score has no miss, the miss property is simply not there)
-Optional
great?: numberOptional
large_Optional
large_Optional
meh?: numberOptional
miss?: numberOptional
ok?: numberOptional
small_Optional
small_Optional
small_Generated using TypeDoc
Expected from api.getPlaylistItemScores()
-Will be null if there is no next page
-How many scores there are across all pages, not necessarily scores.length
Will be null if not an authorized user or if the authorized user has no score
-Generated using TypeDoc
Expected from api.getNews(), NewsPostWithContentNavigation
+Link to view the file on GitHub
+Link to the first image in the document
+Filename without the extension, used in URLs
+Generated using TypeDoc
With HTML
+Link to view the file on GitHub
+Link to the first image in the document
+Filename without the extension, used in URLs
+Generated using TypeDoc
Expected from api.getNews(), NewsPostWithContentNavigation
-Link to view the file on GitHub
-Link to the first image in the document
-Filename without the extension, used in URLs
-Generated using TypeDoc
Expected from api.getNewsPost()
-With HTML
-Link to view the file on GitHub
-Link to the first image in the document
-Filename without the extension, used in URLs
-Generated using TypeDoc
Expected from Room
-Should be null if the room isn't the realtime multiplayer kind
-Should be null if the room isn't the realtime multiplayer kind
-Generated using TypeDoc
Feel free to use this interface to help you create polls with api.createForumTopic()
!
Optional
hide_(defaults to false) Should the results of the poll be hidden while the voting period is still active?
-Length of voting period in days, 0 means forever
-Optional
max_(defaults to 1) The maximum amount of votes per user!
-The things the users can vote for
-Optional
vote_(defaults to false) Do you allow users to change their vote?
-Generated using TypeDoc
Feel free to use this interface to help you create polls with API.createForumTopic!
+Optional
hide_(defaults to false) Should the results of the poll be hidden while the voting period is still active?
+Length of voting period in days, 0 means forever
+Optional
max_(defaults to 1) The maximum amount of votes per user!
+The things the users can vote for
+Optional
vote_defaults to false) Do you allow users to change their vote?
+Generated using TypeDoc
Expected from api.getCountryRanking()
+The number of the next page, is null if no more results are available
+Same as country.code
The country's ISO 3166-1 alpha-2 code! (France would be FR
, United States US
)
Total amount of elements available across all pages, not on this specific page! Maximum of 10000
+Generated using TypeDoc
Expected from api.getSpotlightRanking()
+Generated using TypeDoc
Expected from api.getRanking()
+The number of the next page, is null if no more results are available
+Total amount of elements available across all pages, not on this specific page! Maximum of 10000
+Generated using TypeDoc
Expected from api.getRanking()
-The number of the next page, is null if no more results are available
-Total amount of elements available across all pages, not on this specific page! Maximum of 10000
-Generated using TypeDoc
Expected from api.getCountryRanking()
-Not in the API's documentation
-The number of the next page, is null if no more results are available
-Same as country.code
The country's ISO 3166-1 alpha-2 code! (France would be FR
, United States US
)
Total amount of elements available across all pages, not on this specific page! Maximum of 10000
-Generated using TypeDoc
Generated using TypeDoc
Expected from api.getRoom()
-Optional
current_Only exists if authorized user
-In a format where 96.40%
would be 0.9640
(likely with some numbers after the zero)
How many (completed?) attempts on each item? Empty array if the multiplayer room is the realtime kind
-Generated using TypeDoc
In a format where 96.40%
would be 0.9640
(likely with some numbers after the zero)
Is null when Beatmap is Loved (for example)
+Also known as a grade, for example this is X
(SS) if accuracy
is 1
(100.00%)
Can this score's replay be downloaded from the website?
+Is null if the score's gamemode is Taiko
+The ID of the user who made the score
+Optional
weightOnly if type
is set to best
on getUserScores
Generated using TypeDoc
Expected from Match
+In a format where 96.40%
would be 0.9640
(likely with some numbers after the zero)
Is null when Beatmap is Loved (for example)
+Also known as a grade, for example this is X
(SS) if accuracy
is 1
(100.00%)
Can this score's replay be downloaded from the website?
+Is null if the score's gamemode is Taiko
+The ID of the user who made the score
+Optional
weightOnly if type
is set to best
on getUserScores
Generated using TypeDoc
In a format where 96.40%
would be 0.9640
(likely with some numbers after the zero)
Is null when Beatmap is Loved (for example)
+Also known as a grade, for example this is X
(SS) if accuracy
is 1
(100.00%)
Can this score's replay be downloaded from the website?
+Is null if the score's gamemode is Taiko
+The ID of the user who made the score
+Optional
weightOnly if type
is set to best
on getUserScores
Generated using TypeDoc
Expected from BeatmapUserScore
+In a format where 96.40%
would be 0.9640
(likely with some numbers after the zero)
Is null when Beatmap is Loved (for example)
+Also known as a grade, for example this is X
(SS) if accuracy
is 1
(100.00%)
Can this score's replay be downloaded from the website?
+Is null if the score's gamemode is Taiko
+The ID of the user who made the score
+Optional
weightOnly if type
is set to best
on getUserScores
Generated using TypeDoc
Expected from api.getUserScores()
+In a format where 96.40%
would be 0.9640
(likely with some numbers after the zero)
Is null when Beatmap is Loved (for example)
+Also known as a grade, for example this is X
(SS) if accuracy
is 1
(100.00%)
Can this score's replay be downloaded from the website?
+Is null if the score's gamemode is Taiko
+The ID of the user who made the score
+Optional
weightOnly if type
is set to best
on getUserScores
Generated using TypeDoc
Expected from api.getBeatmapUserScores()
-In a format where 96.40%
would be 0.9640
(likely with some numbers after the zero)
null when Beatmap is Loved (for example)
-Also known as a grade, for example this is X
(SS) if accuracy
is 1
(100.00%)
Can this score's replay be downloaded from the website?
-The ID of the user who made the score
-Optional
weightOnly if type
is set to best
on getUserScores
Generated using TypeDoc
Expected from Match
-In a format where 96.40%
would be 0.9640
(likely with some numbers after the zero)
null when Beatmap is Loved (for example)
-Also known as a grade, for example this is X
(SS) if accuracy
is 1
(100.00%)
Can this score's replay be downloaded from the website?
-The ID of the user who made the score
-Optional
weightOnly if type
is set to best
on getUserScores
Generated using TypeDoc
Expected from api.getBeatmapScores()
-In a format where 96.40%
would be 0.9640
(likely with some numbers after the zero)
null when Beatmap is Loved (for example)
-Also known as a grade, for example this is X
(SS) if accuracy
is 1
(100.00%)
Can this score's replay be downloaded from the website?
-The ID of the user who made the score
-Optional
weightOnly if type
is set to best
on getUserScores
Generated using TypeDoc
Expected from BeatmapUserScore
-In a format where 96.40%
would be 0.9640
(likely with some numbers after the zero)
null when Beatmap is Loved (for example)
-Also known as a grade, for example this is X
(SS) if accuracy
is 1
(100.00%)
Can this score's replay be downloaded from the website?
-The ID of the user who made the score
-Optional
weightOnly if type
is set to best
on getUserScores
Generated using TypeDoc
Expected from api.getUserScores()
-In a format where 96.40%
would be 0.9640
(likely with some numbers after the zero)
null when Beatmap is Loved (for example)
-Also known as a grade, for example this is X
(SS) if accuracy
is 1
(100.00%)
Can this score's replay be downloaded from the website?
-The ID of the user who made the score
-Optional
weightOnly if type
is set to best
on getUserScores
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Expected from api.getSpotlights()
+Pretty sure this is only true
when the spotlight has different beatmaps for each ruleset
Generated using TypeDoc
Expected from RankingsSpotlight
+Pretty sure this is only true
when the spotlight has different beatmaps for each ruleset
Generated using TypeDoc
Expected from api.getSpotlights()
-Pretty sure this is only true
when the spotlight has different beatmaps for each ruleset
Generated using TypeDoc
Expected from RankingsSpotlight
-Pretty sure this is only true
when the spotlight has different beatmaps for each ruleset
Generated using TypeDoc
Generated using TypeDoc
Expected from BeatmapsetExtendedPlus, Room, SearchResultUser
+Generated using TypeDoc
Basically the text with the BBCode
+Specific to the Ruleset (playmode
)
Generated using TypeDoc
Basically the text with the BBCode
+Specific to the Ruleset (playmode
)
Optional
fruits?: StatisticsOptional
mania?: StatisticsOptional
osu?: StatisticsOptional
taiko?: StatisticsGenerated using TypeDoc
Generated using TypeDoc
Expected from UserWithCountryCoverGroupsStatisticsrulesets, UserWithCountryCoverGroupsStatisticsSupport
+Accuracy in the normal format, where 96.56% would be 96.56
Hasn't went inactive in the rankings
+Generated using TypeDoc
Expected from UserExtended
+Accuracy in the normal format, where 96.56% would be 96.56
Hasn't went inactive in the rankings
+Generated using TypeDoc
Expected from Rankings
+Accuracy in the normal format, where 96.56% would be 96.56
Hasn't went inactive in the rankings
+Generated using TypeDoc
Expected from api.getMatch(), Leader
+Generated using TypeDoc
Expected from UserStatisticsWithUser, MultiplayerScore, ScoreWithUser
+Generated using TypeDoc
Generated using TypeDoc
Optional
fruits?: StatisticsOptional
mania?: StatisticsOptional
osu?: StatisticsOptional
taiko?: StatisticsGenerated using TypeDoc
Expected from BeatmapsetExtendedPlus, Room, SearchResultUser
+Generated using TypeDoc
Expected from BeatmapsetExtendedPlus, Room, SearchResultUser
-Generated using TypeDoc
Expected from api.getUser()
-This is not documented by osu!, likely because support for multiple banners has been recently added (OWC2023)
-Basically the text with the BBCode
-Specific to the Ruleset (playmode
)
Generated using TypeDoc
Expected from api.getResourceOwner()
-This is not documented by osu!, likely because support for multiple banners has been recently added (OWC2023)
-Basically the text with the BBCode
-Specific to the Ruleset (playmode
)
Optional
fruits?: UserStatisticsOptional
mania?: UserStatisticsOptional
osu?: UserStatisticsOptional
taiko?: UserStatisticsGenerated using TypeDoc
Generated using TypeDoc
Expected from UserWithCountryCoverGroupsStatisticsrulesets, UserWithCountryCoverGroupsStatisticsSupport
-Accuracy in the normal format, where 96.56% would be 96.56
Hasn't went inactive in the rankings
-Generated using TypeDoc
Expected from UserExtended
-Accuracy in the normal format, where 96.56% would be 96.56
Hasn't went inactive in the rankings
-Generated using TypeDoc
Expected from Rankings
-Accuracy in the normal format, where 96.56% would be 96.56
Hasn't went inactive in the rankings
-Generated using TypeDoc
Expected from api.getMatch(), Leader
-Generated using TypeDoc
Expected from UserStatisticsWithUser, MultiplayerScore, ScoreWithUser
-Generated using TypeDoc
Expected from api.getFriends()
-Generated using TypeDoc
Expected from api.getUsers()
-Optional
fruits?: UserStatisticsOptional
mania?: UserStatisticsOptional
osu?: UserStatisticsOptional
taiko?: UserStatisticsGenerated using TypeDoc
Expected from api.getKudosuRanking()
-Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Expected from api.getWikiPage(), SearchResultWiki
-BCP 47 language (sub)tag, lowercase (for example, en
for english)
It's what should be after https://osu.ppy.sh/wiki/{locale}/
Think of it as the title of the parent wiki page
+Expected from api.getWikiPage(), SearchResultWiki
+BCP 47 language (sub)tag, lowercase (for example, en
for english)
It's what should be after https://osu.ppy.sh/wiki/{locale}/
Think of it as the title of the parent wiki page
If the title
in the path
(assuming it's in it (very unlikely if locale
is not en
)) is after a slash (/), this is what is before the slash
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
This includes everything in this namespace that should be related to what BanchoBot sends in the #announce chat
+Generated using TypeDoc
This includes everything in this namespace, except BeatmapPlaycount
and BeatmapsetDelete
Generated using TypeDoc
Optional
settings?: { Generated using TypeDoc
Optional
settings?: { Generated using TypeDoc
Expected from UserExtended
-Generated using TypeDoc
Scopes determine what the API instance can do as a user!
+Scopes determine what the API instance can do as a user! +https://osu.ppy.sh/docs/index.html#scopes
"identify" is always implicity provided, "public" is implicitly needed for almost everything
-Generated using TypeDoc
Generated using TypeDoc
Generated using TypeDoc
You can create an API instance using its
-createAsync
function!