コンテンツにスキップ

APIドキュメント

ChuniSupport APIは、CHUNITHMの楽曲情報やユーザーデータをプログラムから取得するためのAPIです。ほとんどのエンドポイントでAPIトークンによる認証が必要です。スコア履歴取得のみAPIトークンは任意です。

  • ベースURL: https://api.chunisupport.net
  • コンテンツタイプ: すべてのレスポンスは application/json です。
  • 文字コード: UTF-8

ほとんどのエンドポイントでAPIトークンが必要です。リクエストヘッダーに以下の形式でトークンを指定してください。

Authorization: Bearer <APIトークン>

APIトークンはChuniSupportの設定画面から発行できます。

スコア履歴取得(GET /v1/*/score-history*)のみAPIトークンは任意です。公開ユーザーは未認証で参照できます。非公開ユーザーのスコア履歴を参照する場合は、本人または承認済みフレンドのAPIトークンを送信してください。

楽曲情報の更新(PUT /v1/songsPATCH /v1/songs/chart-constant)には、APIトークン所有者が EDITOR または ADMIN 権限を持っている必要があります。

すべてのエンドポイント共通で、権限ごとに以下の制限があります。

権限15分あたりのリクエスト数
一般ユーザー150
EDITOR / EXTDEV3,000
ADMIN150,000

制限を超えた場合は 429 Too Many Requests が返ります。

エラー時は以下の形式で返ります。

{
"error": {
"status": 401,
"code": "invalid_token",
"message": "トークンが無効です。"
}
}
フィールド説明
error.statusnumberHTTPステータスコード
error.codestringエラーコード(スネークケース)
error.messagestringエラーの説明
エラーコードHTTP説明
missing_token401APIトークンが指定されていません
invalid_token401APIトークンが無効です
forbidden403権限が不足しています
too_many_requests429レートリミットを超過しました
not_found404指定されたリソースが見つかりません
song_not_found404指定された楽曲が見つかりません
user_not_found404指定されたユーザーが見つかりません
chart_not_found404指定された難易度の譜面が存在しません
invalid_difficulty400難易度の指定が無効です
score_history_unsupported_difficulty400スコア履歴非対応の難易度が指定されました
validation_failed400 / 422リクエストパラメータが不正です。未指定などは400、形式・値の検証エラーは422になります
score_history_not_found404スコア履歴が存在しません(未プレイ)
internal_error500サーバー内部エラー

サーバー起動日時点でリリース済みのバージョン一覧を、リリース日昇順で取得します。

リクエスト:

GET /v1/master/versions
Authorization: Bearer <APIトークン>

レスポンス: 200 OK

{
"versions": [
{ "name": "CHUNITHM", "released_at": "2015-07-16" },
{ "name": "CHUNITHM PLUS", "released_at": "2016-02-04" },
{ "name": "CHUNITHM AIR", "released_at": "2016-08-25" }
]
}
フィールド説明
versionsarray起動日時点でリリース済みのバージョン一覧(リリース日昇順)
versions[].namestringバージョン名
versions[].released_atstringリリース日(YYYY-MM-DD 形式)

WORLD’S ENDを除く全楽曲を取得します。削除済み楽曲は除外されます。

リクエスト:

GET /v1/songs
Authorization: Bearer <APIトークン>

レスポンス: 200 OK

{
"songs": [
{
"id": "e9e66c56cb8388e9",
"title": "GEMINI -C-",
"reading": "GEMINIC",
"artist": "Tatsh",
"genre": "ORIGINAL",
"bpm": 180,
"release": "2016-03-17",
"jacket": "45112e2818cf80a2",
"official_idx": "202",
"maxop": 86,
"is_maxop_unknown": false,
"op_target_difficulty": "MASTER",
"is_new": false,
"charts": {
"BASIC": {
"const": 4,
"is_const_unknown": false,
"notes": 549,
"notes_designer": null
},
"ADVANCED": {
"const": 7,
"is_const_unknown": false,
"notes": 769,
"notes_designer": null
},
"EXPERT": {
"const": 11.3,
"is_const_unknown": false,
"notes": 1319,
"notes_designer": "鈴木さん"
},
"MASTER": {
"const": 14.2,
"is_const_unknown": false,
"notes": 1587,
"notes_designer": "rio -N-"
},
"ULTIMA": null
}
}
]
}
フィールド説明
songsarray楽曲情報の配列
songs[].idstring楽曲の表示用ID(16進数16文字)
songs[].titlestring楽曲名
songs[].readingstring | null楽曲名の読み
songs[].artiststringアーティスト名
songs[].genrestring | nullジャンル名
songs[].bpmnumber | nullBPM
songs[].releasestring | nullリリース日(YYYY-MM-DD 形式)
songs[].jacketstring | nullジャケット画像ファイル名
songs[].official_idxstring公式ID
songs[].maxopnumber全譜面のうち最も定数が高い譜面で理論値を取ったときのOVER POWER値
songs[].is_maxop_unknownbooleanmaxop が暫定値である可能性がある場合に true
songs[].op_target_difficultystring | nullmaxop の算出対象となった譜面の難易度
songs[].is_newboolean新曲枠の対象楽曲の場合に true
songs[].chartsobject譜面情報のマップ。キーは BASICADVANCEDEXPERTMASTERULTIMA の順
songs[].charts[key].constnumber譜面定数
songs[].charts[key].is_const_unknownboolean譜面定数が未確定の場合 true
songs[].charts[key].notesnumber | nullノーツ数
songs[].charts[key].notes_designerstring | nullノーツデザイナー

譜面が存在しない難易度は null になります。


通常楽曲(WORLD’S ENDを除く)の楽曲情報と譜面情報を一括更新します。既存データの修正専用で、新規追加・削除は行いません。

権限: EDITOR または ADMIN

リクエスト:

PUT /v1/songs
Authorization: Bearer <APIトークン>
Content-Type: application/json
[
{
"id": "e9e66c56cb8388e9",
"title": "GEMINI -C-",
"reading": "GEMINIC",
"artist": "Tatsh",
"genre": "ORIGINAL",
"bpm": 180,
"released_at": "2016-03-17",
"jacket": "45112e2818cf80a2",
"charts": {
"MASTER": {
"const": 14.2,
"is_const_unknown": false,
"notes": 1587,
"notes_designer": "rio -N-"
}
}
}
]
フィールド必須説明
[].idstring楽曲の表示用ID(16文字の小文字16進数)
[].titlestring楽曲名
[].readingstring | null楽曲名の読み
[].artiststringアーティスト名
[].genrestring | nullジャンル名
[].bpmnumber | nullBPM
[].released_atstring | nullリリース日(YYYY-MM-DD 形式)
[].jacketstring | nullジャケット画像ファイル名
[].chartsobject譜面情報のマップ。キーは BASICADVANCEDEXPERTMASTERULTIMA
[].charts[key].constnumber譜面定数
[].charts[key].is_const_unknownboolean譜面定数が未確定の場合 true
[].charts[key].notesnumber | nullノーツ数
[].charts[key].notes_designerstring | nullノーツデザイナー

レスポンス: 204 No Content

エラー:

コードHTTP説明
validation_failed422リクエストパラメータが不正です
forbidden403権限が不足しています(EDITOR以上が必要)

通常楽曲の既存譜面について、公式ID・難易度名の先頭3文字・譜面定数だけを指定して更新します。更新後は is_const_unknownfalse になります。

権限: EDITOR または ADMIN

リクエスト:

PATCH /v1/songs/chart-constant
Authorization: Bearer <APIトークン>
Content-Type: application/json
{
"official_idx": "202",
"difficulty": "MAS",
"const": 14.7
}
フィールド必須説明
official_idxstring公式ID(最大10文字)
difficultystring難易度名の先頭3文字。BAS / ADV / EXP / MAS / ULT(大文字・小文字を区別しない)
constnumber譜面定数(0.0~16.0、小数第1位まで)

レスポンス: 200 OK

更新後の楽曲オブジェクトを返します。フィールドの詳細は GET /v1/songs/:displayid を参照してください。

エラー:

コードHTTP説明
validation_failed400リクエストパラメータが不正です
invalid_difficulty400難易度または譜面定数が不正です
forbidden403権限が不足しています(EDITOR以上が必要)
song_not_found404公式IDに対応する通常楽曲が見つかりません
chart_not_found404対象難易度の譜面が存在しません

指定された楽曲の詳細を取得します。

リクエスト:

GET /v1/songs/e9e66c56cb8388e9
Authorization: Bearer <APIトークン>

パスパラメータ:

パラメータ説明
displayidstring楽曲の表示用ID(16文字)

レスポンス: 200 OK

{
"id": "e9e66c56cb8388e9",
"title": "GEMINI -C-",
"reading": "GEMINIC",
"artist": "Tatsh",
"genre": "ORIGINAL",
"bpm": 180,
"release": "2016-03-17",
"jacket": "45112e2818cf80a2",
"official_idx": "202",
"maxop": 86,
"is_maxop_unknown": false,
"op_target_difficulty": "MASTER",
"is_new": false,
"charts": {
"BASIC": {
"const": 4,
"is_const_unknown": false,
"notes": 549,
"notes_designer": null
},
"ADVANCED": {
"const": 7,
"is_const_unknown": false,
"notes": 769,
"notes_designer": null
},
"EXPERT": {
"const": 11.3,
"is_const_unknown": false,
"notes": 1319,
"notes_designer": "鈴木さん"
},
"MASTER": {
"const": 14.2,
"is_const_unknown": false,
"notes": 1587,
"notes_designer": "rio -N-"
},
"ULTIMA": null
}
}

フィールドの詳細は GET /v1/songs を参照してください。

エラー:

コードHTTP説明
song_not_found404指定された楽曲が見つかりません

GET /v1/songs/:displayid/stats/:difficulty

Section titled “GET /v1/songs/:displayid/stats/:difficulty”

指定楽曲の特定難易度におけるレーティング帯別の統計情報を取得します。

リクエスト:

GET /v1/songs/e9e66c56cb8388e9/stats/master
Authorization: Bearer <APIトークン>

パスパラメータ:

パラメータ説明
displayidstring楽曲の表示用ID(16文字)
difficultystring難易度名(小文字): basicadvancedexpertmasterultimaworldsend

レスポンス: 200 OK

{
"song_id": "e9e66c56cb8388e9",
"stats": [
{
"rating_band": "ALL",
"rank": {
"aaal": 0,
"s": 0,
"sp": 0,
"ss": 0,
"ssp": 0,
"sss": 3,
"sssp": 0,
"max": 0
},
"combo": {
"none": 3,
"fc": 0,
"aj": 0,
"ajc": 0
},
"clear": {
"failed": 0,
"clear": 0,
"hard": 0,
"brave": 3,
"absolute": 0,
"catastrophy": 0
},
"average_score": 1008991,
"median_score": 1009123,
"player_count": 3
},
{
"rating_band": "17.5",
"rank": {
"aaal": 0,
"s": 0,
"sp": 0,
"ss": 0,
"ssp": 0,
"sss": 3,
"sssp": 0,
"max": 0
},
"combo": {
"none": 3,
"fc": 0,
"aj": 0,
"ajc": 0
},
"clear": {
"failed": 0,
"clear": 0,
"hard": 0,
"brave": 3,
"absolute": 0,
"catastrophy": 0
},
"average_score": 1008991,
"median_score": 1009123,
"player_count": 3
}
]
}
フィールド説明
song_idstring楽曲の識別ID
statsarrayレーティング帯別の統計配列。先頭要素は必ず rating_band: "ALL"(全体統計)
stats[].rating_bandstringレーティング帯ラベル。"ALL" または個別帯(例: "15.0""17.6+"
stats[].rankobjectランク別人数(aaalsspsssspsssssspmax
stats[].comboobjectコンボランプ別人数(nonefcajajc
stats[].clearobjectクリアランプ別人数(failedclearhardbraveabsolutecatastrophy
stats[].average_scorenumber | nullレーティング帯別平均スコア(レコード0件の場合は null
stats[].median_scorenumber | nullレーティング帯別中央スコア(レコード0件の場合は null
stats[].player_countnumberレーティング帯別プレイヤー数

エラー:

コードHTTP説明
invalid_difficulty400無効な難易度が指定されました
song_not_found404指定された楽曲が見つかりません
chart_not_found404指定された難易度の譜面が存在しません

GET /v1/songs/:displayid/score-history/:difficulty

Section titled “GET /v1/songs/:displayid/score-history/:difficulty”

指定楽曲の指定難易度におけるスコア履歴を取得します。各譜面の現行ベストと過去のベストを新しい順で返します。履歴は譜面ごとに最大50件で、レスポンス先頭の現行ベストを含めると最大51件です。

認証: APIトークン(任意)。公開ユーザーは未認証で参照できます。非公開ユーザーは本人または承認済みフレンドのみ参照できます。

リクエスト:

GET /v1/songs/5a9ab66f9aea05d3/score-history/master?username=kjumanenobikto
Authorization: Bearer <APIトークン>

パスパラメータ:

パラメータ説明
displayidstring楽曲の表示用ID(16文字)
difficultystring難易度名(小文字): expertmasterultima

クエリパラメータ:

パラメータ必須説明
usernamestring対象ユーザー名

レスポンス: 200 OK

{
"entries": [
{
"score": 1009566,
"clear_lamp": "ABSOLUTE",
"combo_lamp": "ALL JUSTICE",
"full_chain": null,
"updated_at": "2026-06-21T23:58:02+09:00"
},
{
"score": 1008280,
"clear_lamp": "HARD",
"combo_lamp": null,
"full_chain": null,
"updated_at": "2026-06-10T21:58:32+09:00"
}
]
}
フィールド説明
entriesarrayスコア履歴エントリの配列(新しい順)
entries[].scorenumberスコア
entries[].clear_lampstring | nullクリアランプ名称
entries[].combo_lampstring | nullコンボランプ名称
entries[].full_chainstring | nullフルチェイン名称
entries[].updated_atstring更新日時(ISO8601)

エラー:

コードHTTP説明
validation_failed400username が未指定です
score_history_unsupported_difficulty400expertmasterultima 以外の難易度が指定されました
score_history_not_found404スコア履歴が存在しません(未プレイ)
user_not_found404ユーザーが見つからない、または非公開設定のため閲覧できません

全WORLD’S END楽曲を取得します。削除済み楽曲は除外されます。WORLD’S ENDは1曲1譜面です。

リクエスト:

GET /v1/worldsend-songs
Authorization: Bearer <APIトークン>

レスポンス: 200 OK

{
"songs": [
{
"id": "f13e1a1f3285186c",
"title": "Garakuta Doll Play (sasakure.UK clutter remix)",
"reading": "GARAKUTADOLLPLAYSASAKUREUKCLUTTERREMIX",
"artist": "sasakure.UK",
"genre": "ORIGINAL",
"bpm": 256,
"release": "2016-03-17",
"jacket": "971c362a9b65209e",
"official_idx": "8024",
"charts": {
"WORLDSEND": {
"attribute": "",
"level_star": 4,
"notes": 2525,
"notes_designer": "チュウニ譜面ボーイズ"
}
}
}
]
}
フィールド説明
songsarrayWORLD’S END楽曲の配列
songs[].idstring楽曲の表示用ID
songs[].titlestring楽曲名
songs[].readingstring | null楽曲名の読み
songs[].artiststringアーティスト名
songs[].genrestring | nullジャンル名
songs[].bpmnumber | nullBPM
songs[].releasestring | nullリリース日(YYYY-MM-DD 形式)
songs[].jacketstring | nullジャケット画像ファイル名
songs[].official_idxstring公式ID
songs[].chartsobject譜面情報。キーは "WORLDSEND" 固定
songs[].charts.WORLDSEND.attributestring | nullWORLD’S END属性(光、蔵、改、狂 など)
songs[].charts.WORLDSEND.level_starnumber | nullWORLD’S ENDレベル(1~5)
songs[].charts.WORLDSEND.notesnumber | nullノーツ数
songs[].charts.WORLDSEND.notes_designerstring | nullノーツデザイナー

指定されたWORLD’S END楽曲の詳細を取得します。

リクエスト:

GET /v1/worldsend-songs/f13e1a1f3285186c
Authorization: Bearer <APIトークン>

パスパラメータ:

パラメータ説明
displayidstring楽曲の表示用ID

レスポンス: 200 OK

{
"id": "f13e1a1f3285186c",
"title": "Garakuta Doll Play (sasakure.UK clutter remix)",
"reading": "GARAKUTADOLLPLAYSASAKUREUKCLUTTERREMIX",
"artist": "sasakure.UK",
"genre": "ORIGINAL",
"bpm": 256,
"release": "2016-03-17",
"jacket": "971c362a9b65209e",
"official_idx": "8024",
"charts": {
"WORLDSEND": {
"attribute": "",
"level_star": 4,
"notes": 2525,
"notes_designer": "チュウニ譜面ボーイズ"
}
}
}

フィールドの詳細は GET /v1/worldsend-songs を参照してください。

エラー:

コードHTTP説明
song_not_found404指定された楽曲が見つかりません

GET /v1/worldsend-songs/:displayid/score-history

Section titled “GET /v1/worldsend-songs/:displayid/score-history”

指定WORLD’S END楽曲のスコア履歴を取得します。履歴は譜面ごとに最大50件で、レスポンス先頭の現行ベストを含めると最大51件です。

認証: APIトークン(任意)。公開ユーザーは未認証で参照できます。非公開ユーザーは本人または承認済みフレンドのみ参照できます。

リクエスト:

GET /v1/worldsend-songs/c953760500a52748/score-history?username=kjumanenobikto
Authorization: Bearer <APIトークン>

パスパラメータ:

パラメータ説明
displayidstringWORLD’S END楽曲の表示用ID

クエリパラメータ:

パラメータ必須説明
usernamestring対象ユーザー名

レスポンス: 200 OK

レスポンス形式は GET /v1/songs/:displayid/score-history/:difficulty と同一です。

エラー:

コードHTTP説明
validation_failed400username が未指定です
score_history_not_found404スコア履歴が存在しません(未プレイ)
user_not_found404ユーザーが見つからない、または非公開設定のため閲覧できません

指定されたユーザーのプロフィールとスコアレコードを取得します。

プライバシーについて: 非公開設定のユーザーは、本人または承認済みフレンド以外からのリクエストに対して 404 Not Found を返します。プレイヤーデータが未連携の場合は playerrecordsnull になります。

リクエスト:

GET /v1/users/kjumanenobikto
Authorization: Bearer <APIトークン>

パスパラメータ:

パラメータ説明
usernamestringユーザー名

クエリパラメータ:

パラメータ必須説明
include_noplaybooleantrue を指定すると、未プレイの通常譜面とコースも補完して返します

レスポンス: 200 OK

{
"username": "kjumanenobikto",
"player": {
"name": "0xFF31",
"level": 245,
"rating": 17.4632,
"class_emblem_id": 6,
"class_emblem_base_id": null,
"last_played_at": "2026-06-20T22:28:00+09:00",
"overpower_value": 103759.74,
"overpower_percent": 76.4308,
"honors": [
{ "slot": 1, "name": "Gate of Fate", "type_name": "ultima", "image_url": "honor_bg_ultima.png" },
{ "slot": 2, "name": "Arcaea", "type_name": "silver", "image_url": "honor_bg_silver.png" },
{ "slot": 3, "name": "Gate of Doom", "type_name": "expert", "image_url": "honor_bg_expert.png" }
],
"created_at": "2026-06-10T21:58:34+09:00",
"updated_at": "2026-06-22T08:39:49+09:00"
},
"records": {
"updated_at": "2026-06-21T23:58:02+09:00",
"best": [
{
"updated_at": "2026-06-10T21:58:32+09:00",
"is_played": true,
"is_op_target": true,
"difficulty": "MASTER",
"id": "7c19a08f165d9a9b",
"title": "祈 -我ら神祖と共に歩む者なり-",
"artist": "光吉猛修 VS 穴山大輔 VS Kai VS 水野健治 VS 大国奏音",
"const": 15.7,
"is_const_unknown": false,
"score": 1008280,
"justice_count": null,
"rating": 17.77,
"overpower": 89.67,
"overpower_percent": 95.9037,
"img": "aee87c06a25809db",
"clear_lamp": "HARD",
"combo_lamp": null,
"full_chain": null,
"slot": "best"
}
],
"best_candidate": [
{
"updated_at": "2026-06-10T21:58:32+09:00",
"is_played": true,
"is_op_target": true,
"difficulty": "MASTER",
"id": "dd70f42fce1b3247",
"title": "Rebellion",
"artist": "Kai",
"const": 15.4,
"is_const_unknown": false,
"score": 1007646,
"justice_count": null,
"rating": 17.41,
"overpower": 87.215,
"overpower_percent": 94.7989,
"img": "f3f526bb5400bcb6",
"clear_lamp": "HARD",
"combo_lamp": null,
"full_chain": null,
"slot": "best_candidate"
}
],
"new": [
{
"updated_at": "2026-06-10T21:58:32+09:00",
"is_played": true,
"is_op_target": true,
"difficulty": "MASTER",
"id": "f57d6fec0d075455",
"title": "YOUNITHM",
"artist": "大国奏音",
"const": 15.5,
"is_const_unknown": false,
"score": 1008932,
"justice_count": null,
"rating": 17.64,
"overpower": 89.645,
"overpower_percent": 96.9135,
"img": "a83a089481cb3703",
"clear_lamp": "HARD",
"combo_lamp": null,
"full_chain": null,
"slot": "new"
}
],
"new_candidate": [
{
"updated_at": "2026-06-14T10:17:22+09:00",
"is_played": true,
"is_op_target": true,
"difficulty": "MASTER",
"id": "0c272957c22a66e0",
"title": "Phantom Crisis",
"artist": "t+pazolite vs Yuta Imai",
"const": 15.5,
"is_const_unknown": false,
"score": 1005241,
"justice_count": null,
"rating": 17.04,
"overpower": 85.24,
"overpower_percent": 92.1514,
"img": "691d65ce2e1e4129",
"clear_lamp": "HARD",
"combo_lamp": null,
"full_chain": null,
"slot": "new_candidate"
}
],
"standard": [
{
"updated_at": "2026-06-21T23:58:02+09:00",
"is_played": true,
"is_op_target": true,
"difficulty": "MASTER",
"id": "5a25917e0249159b",
"title": "水晶世界 ~Fracture~",
"artist": "wa. remixed celas",
"const": 14.9,
"is_const_unknown": false,
"score": 1009566,
"justice_count": 65,
"rating": 17.05,
"overpower": 88.595,
"overpower_percent": 98.9888,
"img": "58a8b2d2241876b4",
"clear_lamp": "ABSOLUTE",
"combo_lamp": "ALL JUSTICE",
"full_chain": null,
"slot": null
}
],
"worldsend": [
{
"updated_at": "2026-06-10T21:58:32+09:00",
"is_played": true,
"id": "c953760500a52748",
"title": "I Wanna",
"artist": "静香(CV.長谷川育美)「ワールドダイスター 夢のステラリウム」",
"level_star": 5,
"attribute": "",
"notes": 2354,
"score": 987816,
"justice_count": null,
"img": "6cd072470f3b7ef9",
"clear_lamp": "CLEAR",
"combo_lamp": null,
"full_chain": null
}
],
"course": [
{
"display_id": "7d5f5c42b9a8e301",
"idx": "50020",
"name": "クラス認定 Ⅲ",
"class": "3",
"is_played": true,
"score": 3012345,
"is_clear": true,
"combo_lamp": "FULL COMBO",
"updated_at": "2026-06-21T23:58:02+09:00"
}
]
},
"updated_at": "2026-06-22T08:39:49+09:00"
}
フィールド説明
usernamestringユーザー名
playerobject | nullプレイヤー情報。未連携の場合は null
recordsobject | nullスコアレコード。未連携の場合は null
updated_atstring | nullプレイヤーデータの最終更新日時(ISO8601)。未連携の場合は null
フィールド説明
namestringプレイヤー名
levelnumberプレイヤーレベル
ratingnumber保存済みスコアから算出したレーティング
class_emblem_idnumber | nullクラスエンブレムID
class_emblem_base_idnumber | nullクラスエンブレムベースID
last_played_atstring | null最終プレイ日時(ISO8601)
overpower_valuenumber | nullOVER POWER値
overpower_percentnumber | nullOVER POWER達成割合(%)
honorsarray称号情報(スロット1~3)
honors[].slotnumberスロット番号
honors[].namestring称号名
honors[].type_namestring称号タイプ
honors[].image_urlstring称号画像URL
created_atstringプレイヤーデータ作成日時
updated_atstringプレイヤーデータ更新日時
フィールド説明
updated_atstringレコードの最終更新日時
bestarrayベスト枠レコード
best_candidatearrayベスト候補枠レコード
newarray新曲枠レコード
new_candidatearray新曲候補枠レコード
standardarray通常譜面の全レコード
worldsendarrayWORLD’S ENDの全レコード
coursearrayコースレコード

レコード要素(best / best_candidate / new / new_candidate / standard

Section titled “レコード要素(best / best_candidate / new / new_candidate / standard)”
フィールド説明
is_playedbooleanプレイ済みかどうか(未プレイ補完データは false
is_op_targetbooleanOVER POWER計算の対象譜面かどうか
updated_atstring | null更新日時。未プレイ補完データは null
difficultystring難易度名
idstring楽曲の表示用ID
titlestring楽曲名
artiststringアーティスト名
constnumber譜面定数
is_const_unknownboolean譜面定数が未確定かどうか
scorenumberスコア
justice_countnumber | nullJUSTICE数
ratingnumber単曲レーティング
overpowernumber単曲OVER POWER値
overpower_percentnumber単曲OVER POWER達成割合(%)
imgstringジャケット画像ファイル名
clear_lampstring | nullクリアランプ
combo_lampstring | nullコンボランプ
full_chainstring | nullフルチェイン
slotstring | nullスロット
フィールド説明
is_playedbooleanプレイ済みかどうか
updated_atstring | null更新日時
idstring楽曲の表示用ID
titlestring楽曲名
artiststringアーティスト名
level_starnumber | nullWORLD’S ENDレベル
attributestring | nullWORLD’S END属性
notesnumber | nullノーツ数
scorenumberスコア
justice_countnumber | nullJUSTICE数
imgstringジャケット画像ファイル名
clear_lampstring | nullクリアランプ
combo_lampstring | nullコンボランプ
full_chainstring | nullフルチェイン
フィールド説明
display_idstringコースの表示用ID(16文字の小文字16進数)
idxstring公式ID
namestringコース名
classstringコースクラス(15infextra
is_playedbooleanプレイ済みかどうか(未プレイ補完データは false
scorenumberコーススコア(未プレイ補完データは 0
is_clearbooleanクリア済みかどうか
combo_lampstring | nullコンボランプ。未設定または NONE の場合は null
updated_atstring | null更新日時。未プレイ補完データは null

プレイヤー未連携時のレスポンス

Section titled “プレイヤー未連携時のレスポンス”
{
"username": "kjumanenobikto",
"player": null,
"records": null,
"updated_at": null
}

エラー:

コードHTTP説明
user_not_found404ユーザーが見つからない、または非公開設定のため閲覧できません

削除済みを除く全コースを、コースクラスと公式IDの順で取得します。

リクエスト:

GET /v1/courses
Authorization: Bearer <APIトークン>

レスポンス: 200 OK

{
"courses": [
{
"display_id": "7d5f5c42b9a8e301",
"idx": "50020",
"name": "クラス認定 Ⅲ",
"class": "3"
}
]
}
フィールド説明
coursesarrayコース情報の配列
courses[].display_idstringコースの表示用ID(16文字の小文字16進数)
courses[].idxstring公式ID
courses[].namestringコース名
courses[].classstringコースクラス(15infextra

指定されたコースの詳細を取得します。

リクエスト:

GET /v1/courses/7d5f5c42b9a8e301
Authorization: Bearer <APIトークン>

パスパラメータ:

パラメータ説明
displayidstringコースの表示用ID(16文字の小文字16進数)

レスポンス: 200 OK

{
"display_id": "7d5f5c42b9a8e301",
"idx": "50020",
"name": "クラス認定 Ⅲ",
"class": "3"
}

フィールドの詳細は GET /v1/courses を参照してください。

エラー:

コードHTTP説明
validation_failed422displayid の形式が不正です
not_found404指定されたコースが見つかりません

指定されたユーザーのコースレコードを取得します。デフォルトではプレイ済みレコードだけを返します。

プライバシーについて: 非公開設定のユーザーは、本人または承認済みフレンド以外からのリクエストに対して 404 Not Found を返します。

リクエスト:

GET /v1/users/kjumanenobikto/records/courses?include_noplay=true
Authorization: Bearer <APIトークン>

パスパラメータ:

パラメータ説明
usernamestring対象ユーザー名

クエリパラメータ:

パラメータ必須説明
include_noplaybooleantrue を指定すると未プレイコースも補完します。省略時は false です

レスポンス: 200 OK

{
"updated_at": "2026-07-14T15:30:00+09:00",
"courses": [
{
"display_id": "7d5f5c42b9a8e301",
"idx": "50020",
"name": "クラス認定 Ⅲ",
"class": "3",
"is_played": true,
"score": 3012345,
"is_clear": true,
"combo_lamp": "FULL COMBO",
"updated_at": "2026-07-13T20:12:34+09:00"
},
{
"display_id": "2a1076c9e51f84bd",
"idx": "50021",
"name": "クラス認定 Ⅳ",
"class": "4",
"is_played": false,
"score": 0,
"is_clear": false,
"combo_lamp": null,
"updated_at": null
}
]
}
フィールド説明
updated_atstring | nullコースマスタまたは対象ユーザーのコースレコードの最終更新日時のうち新しい方。どちらも存在しない場合は null
coursesarrayコースレコードの配列。プレイヤー未連携の場合は空配列
courses[].display_idstringコースの表示用ID(16文字の小文字16進数)
courses[].idxstring公式ID
courses[].namestringコース名
courses[].classstringコースクラス(15infextra
courses[].is_playedbooleanプレイ済みかどうか
courses[].scorenumberコーススコア(未プレイの場合は 0
courses[].is_clearbooleanクリア済みかどうか
courses[].combo_lampstring | nullコンボランプ。未設定または NONE の場合は null
courses[].updated_atstring | nullレコード更新日時。未プレイの場合は null

エラー:

コードHTTP説明
user_not_found404ユーザーが見つからない、または非公開設定のため閲覧できません

chunirecとの互換性を持つエンドポイントです。/v1 と同様にAPIトークン認証を使用します。

WORLD’S ENDを除く全楽曲をchunirec互換形式で取得します。

リクエスト:

GET /compat/chunirec/2.0/music/showall
Authorization: Bearer <APIトークン>

レスポンス: 200 OK

[
{
"meta": {
"id": "e9e66c56cb8388e9",
"title": "GEMINI -C-",
"genre": "ORIGINAL",
"artist": "Tatsh",
"release": "2016-03-17",
"bpm": 180
},
"data": {
"BAS": {
"level": 4,
"const": 4,
"maxcombo": 549,
"is_const_unknown": false
},
"ADV": {
"level": 7,
"const": 7,
"maxcombo": 769,
"is_const_unknown": false
},
"EXP": {
"level": 11,
"const": 11.3,
"maxcombo": 1319,
"is_const_unknown": false
},
"MAS": {
"level": 14,
"const": 14.2,
"maxcombo": 1587,
"is_const_unknown": false
}
}
}
]
フィールド説明
[].meta.idstring楽曲の表示用ID
[].meta.titlestring楽曲名
[].meta.genrestring | nullジャンル名
[].meta.artiststringアーティスト名
[].meta.releasestring | nullリリース日(YYYY-MM-DD 形式)
[].meta.bpmnumber | nullBPM
[].data.BASobject | nullBASIC譜面
[].data.ADVobject | nullADVANCED譜面
[].data.EXPobject | nullEXPERT譜面
[].data.MASobject | nullMASTER譜面
[].data.ULTobject | nullULTIMA譜面
[].data.*.levelnumber表記レベル(.0または.5刻み)
[].data.*.constnumber譜面定数
[].data.*.maxcombonumber | nullノーツ数
[].data.*.is_const_unknownboolean譜面定数が未確定の場合 true

譜面が存在しない難易度は null になります。


指定された1楽曲の情報をchunirec互換形式で取得します。

リクエスト:

GET /compat/chunirec/2.0/music/show?id=e9e66c56cb8388e9
Authorization: Bearer <APIトークン>

クエリパラメータ:

パラメータ必須説明
idstring必須楽曲の表示用ID(16文字)

レスポンス: 200 OK

{
"meta": {
"id": "e9e66c56cb8388e9",
"title": "GEMINI -C-",
"genre": "ORIGINAL",
"artist": "Tatsh",
"release": "2016-03-17",
"bpm": 180
},
"data": {
"BAS": {
"level": 4,
"const": 4,
"maxcombo": 549,
"is_const_unknown": false
},
"ADV": {
"level": 7,
"const": 7,
"maxcombo": 769,
"is_const_unknown": false
},
"EXP": {
"level": 11,
"const": 11.3,
"maxcombo": 1319,
"is_const_unknown": false
},
"MAS": {
"level": 14,
"const": 14.2,
"maxcombo": 1587,
"is_const_unknown": false
}
}
}

フィールドの詳細は GET /compat/chunirec/2.0/music/showall を参照してください。

エラー:

コードHTTP説明
validation_failed400クエリパラメータ id が未指定です
song_not_found404指定された楽曲が見つかりません

指定したユーザーの通常譜面のプレイ済みレコードを、chunirec互換形式で取得します。未プレイ譜面とWORLD’S END譜面は含まれません。

リクエスト:

GET /compat/chunirec/2.0/records/showall?user_name=kjumanenobikto
Authorization: Bearer <APIトークン>

クエリパラメータ:

パラメータ必須説明
user_namestring取得対象のユーザー名。未指定の場合はAPIトークン所有者自身のレコードを返します

レスポンス: 200 OK

{
"records": [
{
"id": "6a88218b1a936bd3",
"diff": "EXP",
"level": 10,
"title": "B.B.K.K.B.K.K.",
"const": 10,
"score": 1003215,
"rating": 11.32,
"is_const_unknown": true,
"is_clear": true,
"is_fullcombo": false,
"is_alljustice": false,
"is_fullchain": false,
"genre": "VARIETY",
"updated_at": "1970-01-01T09:00:00+0900",
"is_played": true
}
]
}
フィールド説明
recordsarray通常譜面のプレイ済みレコード一覧
records[].idstring楽曲の識別ID(16桁)
records[].diffstring難易度(BASADVEXPMASULT
records[].levelnumber表記レベル(.0または.5刻み)
records[].titlestring楽曲名
records[].constnumber譜面定数
records[].scorenumberスコア
records[].ratingnumber単曲レーティング
records[].is_const_unknownboolean譜面定数が未確定の場合 true
records[].is_clearbooleanクリアランプが付いている場合 true
records[].is_fullcombobooleanコンボランプがFULL COMBOまたはALL JUSTICEの場合 true
records[].is_alljusticebooleanコンボランプがALL JUSTICEの場合 true
records[].is_fullchainbooleanフルチェインランプが付いている場合 true
records[].genrestringジャンル名
records[].updated_atstringレコード更新日時(YYYY-MM-DDTHH:mm:ss+0900形式)
records[].is_playedboolean常に true

エラー:

コードHTTP説明
user_not_found404ユーザーが見つかりません(非公開ユーザーを含む)

指定されたユーザーのプロフィールをchunirec互換形式で取得します。

リクエスト:

GET /compat/chunirec/2.0/users/show?user_name=kjumanenobikto
Authorization: Bearer <APIトークン>

クエリパラメータ:

パラメータ必須説明
user_namestring取得対象のユーザー名。未指定の場合はAPIトークン所有者自身のプロフィールを返します

レスポンス: 200 OK

{
"user_id": 0,
"player_name": "0xFF31",
"title": "Gate of Fate",
"title_rarity": "ultima",
"level": 245,
"rating": "17.46",
"rating_max": "17.46",
"classemblem": "inf",
"classemblem_base": null,
"is_joined_team": null,
"updated_at": "2026-06-22T08:39:49+09:00"
}
フィールド説明
user_idnumber内部ユーザーIDを公開しないため常に 0
player_namestringプレイヤー名
titlestring | nullスロット1の称号
title_raritystring | nullスロット1称号のレアリティ
levelnumberプレイヤーレベル
ratingstring | nullレーティング(小数点以下2桁の文字列)
rating_maxstring | null最大レーティング(現在は rating と同じ値)
classemblemstring | nullクラスエンブレム
classemblem_basestring | nullクラスエンブレムベース
is_joined_teamnullチーム参加状態(常に null
updated_atstringプレイヤーデータの最終更新日時(RFC3339形式)

エラー:

コードHTTP説明
user_not_found404ユーザーが見つからない、非公開設定、またはプレイヤーデータ未連携

reiwa互換APIは外部ツールとの互換性を持つエンドポイントです。APIトークン認証を使用します。

GET /compat/reiwa/1/chunithm_record/original

Section titled “GET /compat/reiwa/1/chunithm_record/original”

WORLD’S ENDを除く全楽曲の通常譜面情報を、譜面単位のフラットな配列で取得します。削除済み楽曲は含まれません。

リクエスト:

GET /compat/reiwa/1/chunithm_record/original
Authorization: Bearer <APIトークン>

レスポンス: 200 OK

[
{
"title": "B.B.K.K.B.K.K.",
"artist": "nora2r",
"img": "d739ba44da6798a0",
"genre": "VARIETY",
"const": 4,
"level": 4,
"diff": "BAS",
"notes": 333,
"unknown": 0,
"chunirec_id": "6a88218b1a936bd3",
"idx": "3",
"bpm": 170,
"release": 14370588,
"version": ""
}
]
フィールド説明
titlestring楽曲タイトル
artiststringアーティスト名
imgstringジャケット画像識別子
genrestringジャンル名(POPS&ANIMEPOPS & ANIME に変換)
constnumber譜面定数
levelnumber表記レベル(.5区切り。例: 13+ → 13.5)
diffstring難易度(BASADVEXPMASULT
notesnumberノーツ数
unknownnumber譜面定数不明フラグ(0: 既知、1: 不明)
chunirec_idstring楽曲の内部ID
idxstring公式インデックス
bpmnumberBPM
releasenumberリリース日のJST 0時Unixタイムスタンプ ÷ 100
versionstringバージョン名から CHUNITHM を除去した名称(初代CHUNITHMは空文字)

idx の数値昇順、次に難易度順(BAS → ADV → EXP → MAS → ULT)で返します。