Skip to main content

Get User

Get detailed information about an Osu! player.

Endpoint

GET /api/osu/user

Query Parameters

username
string
Player username (use either username or user_id)
user_id
integer
Player ID (use either username or user_id)
mode
string
default:"osu"
Game mode. Options: osu, taiko, fruits, mania

Example Request

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

Response Example

{
  "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"
Game mode. Options: osu, taiko, fruits, mania
limit
integer
default:"10"
Number of recent plays to return (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"

Response Example

{
  "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"
Game mode. Options: osu, taiko, fruits, mania
limit
integer
default:"10"
Number of best plays to return (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"

Response Example

{
  "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"

Response Example

{
  "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.