Skip to main content

Documentation Index

Fetch the complete documentation index at: https://rocks.docs.rive.wtf/llms.txt

Use this file to discover all available pages before exploring further.

Every API key is tied to one IP. To apply for a key, DM southctrl on Discord.
Use the endpoint path below, replace the required params, and send Authorization: Bearer YOUR_API_KEY.

Most Used Endpoints

User

Look up an osu! player

Recent Plays

Get the latest plays

Best Plays

Fetch top performance scores

Beatmaps

Search for beatmaps
Start with user, then add recent plays or best plays depending on what show.

Get User

Get detailed information about an Osu! player.

Endpoint

GET /api/osu/user

Query Parameters

username
string
osu! username. Use username or user_id.
user_id
integer
osu! user ID. Use username or user_id.
mode
string
default:"osu"
Mode: osu, taiko, fruits, or mania.

Example Request

curl -X GET "https://rocks.rive.wtf/api/osu/user?username=peppy&mode=osu" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "id": 2,
  "username": "peppy",
  "join_date": "2007-08-28T03:09:12+00:00",
  "country_code": "AU",
  "avatar_url": "https://a.ppy.sh/2?1657169614.png",
  "cover_url": "https://assets.ppy.sh/user-profile-covers/2/baba245ef60834b769694178f8f6d4f6166c5188c740de084656ad2b80f1eea7.jpeg",
  "is_online": false,
  "is_supporter": true,
  "mode": "osu",
  "badges": [],
  "statistics": {
    "level": 67,
    "level_progress": 51,
    "pp": 1188.72,
    "global_rank": 751674,
    "country_rank": 15440,
    "ranked_score": 464614954,
    "accuracy": 96.7969,
    "play_count": 7761,
    "play_time": 744444,
    "total_score": 2029450214,
    "total_hits": 839285,
    "max_combo": 746,
    "replays_watched": 16673,
    "grade_counts": {
      "ss": 15,
      "ssh": 0,
      "s": 67,
      "sh": 0,
      "a": 178
    }
  }
}

Response Fields

id
number
Unique user ID
username
string
Player username
join_date
string
Account creation date (ISO 8601 format)
country_code
string
Two-letter country code
avatar_url
string
URL to player’s avatar image
cover_url
string
URL to player’s profile cover image
is_online
boolean
Whether the player is currently online
is_supporter
boolean
Whether the player has supporter status
mode
string
Current game mode
badges
array
Array of badge objects earned by the player
statistics
object
Player statistics

Get Recent Plays

Get a player’s recent plays.

Endpoint

GET /api/osu/user/recent

Query Parameters

username
string
required
Player username.
mode
string
default:"osu"
Mode: osu, taiko, fruits, or mania.
limit
integer
default:"10"
Number of recent plays (max 50).

Example Request

curl -X GET "https://rocks.rive.wtf/api/osu/user/recent?username=peppy&mode=osu&limit=5" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "count": 0,
  "scores": []
}
If the player has no recent plays, the scores array will be empty.

Get Best Plays

Get a player’s top/best plays.

Endpoint

GET /api/osu/user/best

Query Parameters

username
string
required
Player username.
mode
string
default:"osu"
Mode: osu, taiko, fruits, or mania.
limit
integer
default:"10"
Number of best plays (max 100).

Example Request

curl -X GET "https://rocks.rive.wtf/api/osu/user/best?username=peppy&mode=osu&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "count": 10,
  "scores": [
    {
      "id": 1720541511,
      "accuracy": 1,
      "created_at": "2014-03-25T03:58:04Z",
      "max_combo": 450,
      "mods": ["PF"],
      "pp": 73.2294,
      "rank": "X",
      "score": 2669868,
      "beatmap": {
        "id": 22423,
        "difficulty_rating": 3.58485,
        "version": "Hard"
      },
      "beatmapset": {
        "id": 3720,
        "title": "Tori no Uta -Ethereal House Mix-",
        "artist": "Lix",
        "creator": "James",
        "cover_url": "https://assets.ppy.sh/beatmaps/3720/covers/cover.jpg?1622021201"
      }
    }
  ]
}

Response Fields

count
number
Total number of scores returned
scores
array
Array of score objects

Search Beatmaps

Search for beatmaps by query.

Endpoint

GET /api/osu/beatmaps/search

Query Parameters

query
string
required
Search query (song name, artist, mapper, etc.).
mode
string
Filter by game mode. Options: osu, taiko, fruits, mania.

Example Request

curl -X GET "https://rocks.rive.wtf/api/osu/beatmaps/search?query=freedom%20dive&mode=osu" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example Response

{
  "beatmapsets": [
    {
      "id": 2370527,
      "title": "Vector to the Heavens (Xion) (Cityyy Remix)",
      "artist": "Yoko Shimomura",
      "creator": "Cityyy",
      "cover_url": "https://assets.ppy.sh/beatmaps/2370527/covers/cover.jpg?1769392934",
      "status": "RANKED",
      "play_count": 1880,
      "favourite_count": 49,
      "beatmaps": [
        {
          "id": 5115566,
          "version": "In the Ethereal Silence Between Passion & Serenity, We Shatter",
          "difficulty_rating": 7.54478,
          "mode": "STANDARD"
        }
      ]
    }
  ],
  "total": 50
}

Response Fields

beatmapsets
array
Array of beatmap set objects
total
number
Total number of results found (limited to 50)

Game Modes

ModeString ValueDescription
osu! (Standard)osuOriginal click-the-circles mode
TaikotaikoDrum rhythm mode
Catch the BeatfruitsCatch falling fruits mode
osu!maniamaniaPiano/rhythm game mode

Grade Ranks

RankDescription
X (SS)100% accuracy
XH (SSH)100% accuracy with HD/FL
S>95% accuracy
SH>95% accuracy with HD/FL
A>90% accuracy
B>80% accuracy
C>70% accuracy
D>70% accuracy

Common Mods

ModNameEffect
NFNo FailCannot fail
EZEasyEasier gameplay
HDHiddenCircles fade out
HRHard RockHarder gameplay
DTDouble Time1.5x speed
HTHalf Time0.75x speed
NCNightcoreDT with pitch shift
FLFlashlightLimited vision
SOSpun OutAuto-spin
PFPerfectSS or retry
Play time is returned in seconds. Convert to hours with play_time / 3600.
Accuracy is returned as a decimal (0-1). Multiply by 100 for percentage display.