chunirec API ドキュメント (v1.3)
概要
chunirec API v1.3 の仕様についてまとめたドキュメントです。
chunirec API v1.3 について
chunirec のデーターにアクセスするための API です。スコアを含むレコードとチュウニズムに収録されている楽曲の情報が取得できます。
利用上の注意
chunirec API v1.3 (以下「本 API」といいます) を利用するにあたっての注意事項です。
1. 予告なく本 API の提供を停止する場合があります。
2. 本 API を利用して生じた損失及び障害等には、一切の責任を負いません。
3. 本 API は、非営利目的に限り利用することができます。
注意: 本 API を使用した Web サイトやアプリ等にアフェリエイト等の広告を設置して収益を得る行為は営利目的にあたります。
v1.2 との違い
- 他人の情報を取得する系のエンドポイントで、取得したいユーザーが非公開設定でもアクセストークン所持者とフレンド同士の場合は取得できるようになりました。
GET users/me
GET users/show
で取得できる情報が増えました。- 新たに追加された
GET friends/list
でアクセストークン所持者とフレンドになっているユーザーの一覧を取得できるようになりました。 - 新たに追加された
GET music/showall
を使ってGET music/show
で得られるような楽曲データーが全曲纏めて取得できるようになりました。 GET music/stat
で存在しない楽曲 ID を指定したとき 404 エラーを返すようにしました。GET music/stat
のレーティング別スコア平均の値を文字列型から実数型に変更しました。GET records/course
を追加し、コースレコードが取得できるようになりました。
リクエスト
ホストは
api.chunirec.net
です。通信にはすべて HTTPS を使用します。
アクセストークン
すべての API 呼び出しに、アクセストークンを GET メソッドの場合はパラメーター、それ以外はリクエストボディに含める必要があります。
アクセストークンは、アカウント設定>開発者>API アクセストークン発行 で発行できます。
アクセストークンは、アカウント設定>開発者>API アクセストークン発行 で発行できます。
リミット
アカウントごとに、15 分で 120 回までリクエストを受け付けます。
ただし、短い間隔でリクエストを送信した場合、リクエスト可能な回数が減ります。
残りのリクエスト可能な回数と、リセット日時 (エポック秒) はレスポンスヘッダに入っています。
リミットを超過した場合は、以下のようなレスポンスになります。
ただし、短い間隔でリクエストを送信した場合、リクエスト可能な回数が減ります。
残りのリクエスト可能な回数と、リセット日時 (エポック秒) はレスポンスヘッダに入っています。
レスポンスヘッダの例 (一部)
X-Rate-Limit-Limit: 120 X-Rate-Limit-Remaining: 112 X-Rate-Limit-Reset: 1589575609
リミットを超過した場合は、以下のようなレスポンスになります。
レスポンス
Status: 429 Too Many Requests
{ "error": { "code": 429, "message": "too many requests.", "additional_message": "" } }
レスポンス
JSON 形式で返却されます。
※エラーレスポンスの形式
{ "error": { "code": 400, "message": "bad request.", "additional_message": "the query is too long." } }
エンドポイント
自分のアカウントデーターを取得する
GET users/me
エンドポイント
GET https://api.chunirec.net/1.3/users/me.json
パラメーター
-
token
- アクセストークン。
リクエスト例
GET https://api.chunirec.net/1.3/users/me.json?token=YOUR_TOKEN
レスポンス例
Status: 200 OK
{ "account": { "user_id": 1, "user_name": "kn2kw", "is_protected": false, "user_description": "[d bg=#ebf0ff][b]夏川くいな[/b][/d]と[d bg=#fff6c9][b]忍野忍[/b][/d]推し。\nぱないの!" "urls": [ { "name": "mypage", "title": "kn2kw さんのマイページ", "url": "https://chunirec.net/users/kn2kw", "url_short": "https://chunirec.net/@kn2kw" }, { "name": "worldsend", "title": "kn2kw さんの WORLD'S END レコード", "url": "https://chunirec.net/users/kn2kw/worldsend", "url_short": "https://chunirec.net/@kn2kw/worldsend" }, { "name": "overpower", "title": "kn2kw さんのオーバーパワー", "url": "https://chunirec.net/users/kn2kw/overpower", "url_short": "https://chunirec.net/@kn2kw/overpower" }, { "name": "stat", "title": "kn2kw さんのレコード集計", "url": "https://chunirec.net/users/kn2kw/stat", "url_short": "https://chunirec.net/@kn2kw/stat" }, { "name": "course", "title": "kn2kw さんのコースレコード", "url": "https://chunirec.net/users/kn2kw/course", "url_short": "https://chunirec.net/@kn2kw/course" } ] }, "player": { "playername": "kn2kw", "honor": "天使ちゃんマジ天使", "honor_type": 5, "level": 54, "rating": 15.21, "rating_max": 15.42, "classemblem": 4, "updated_on": "2020-11-10" } }
アカウントデーターを取得する
GET users/show
エンドポイント
GET https://api.chunirec.net/1.3/users/show.json
パラメーター
-
user_id (省略可)
- ユーザー ID 。
- ここでのユーザー ID は、内部で使用する、整数値のみで表現される ID です。
user_id
とuser_name
のどちらか一方を指定します。- デフォルト: (アクセストークン所持者)
-
user_name (省略可)
- ユーザー名。
- ここでのユーザー名は、サイト上で表示される、英数字とアンダーラインで表現される文字列です。
user_name
とuser_id
のどちらか一方を指定します。- デフォルト: (アクセストークン所持者)
-
token
- アクセストークン。
注意
user_id
またはuser_name
パラメーターを指定することで他人の情報を取得することが出来ます。省略するとアクセストークン所持者の情報が取得されます。- サイトで使用する「ユーザー ID」と API で使用する「ユーザー ID」の意味は違います。(意味については、
user_id
とuser_name
パラメーターの説明を参照してください。) - 存在しないユーザーにアクセスしようとした場合は、404 エラーになります。
- フレンド同士ではない非公開ユーザーにアクセスしようとした場合は、403 エラーになります。
備考
レスポンスの形式はGET users/me
と同じです。
リクエスト例
GET https://api.chunirec.net/1.3/users/show.json?user_name=kn2kw&token=YOUR_TOKEN
レスポンス例
Status: 200 OK
{ "account": { "user_id": 1, "user_name": "kn2kw", "is_protected": false, "user_description": "[d bg=#ebf0ff][b]夏川くいな[/b][/d]と[d bg=#fff6c9][b]忍野忍[/b][/d]推し。\nぱないの!" "urls": [ { "name": "mypage", "title": "kn2kw さんのマイページ", "url": "https://chunirec.net/users/kn2kw", "url_short": "https://chunirec.net/@kn2kw" }, { "name": "worldsend", "title": "kn2kw さんの WORLD'S END レコード", "url": "https://chunirec.net/users/kn2kw/worldsend", "url_short": "https://chunirec.net/@kn2kw/worldsend" }, { "name": "overpower", "title": "kn2kw さんのオーバーパワー", "url": "https://chunirec.net/users/kn2kw/overpower", "url_short": "https://chunirec.net/@kn2kw/overpower" }, { "name": "stat", "title": "kn2kw さんのレコード集計", "url": "https://chunirec.net/users/kn2kw/stat", "url_short": "https://chunirec.net/@kn2kw/stat" }, { "name": "course", "title": "kn2kw さんのコースレコード", "url": "https://chunirec.net/users/kn2kw/course", "url_short": "https://chunirec.net/@kn2kw/course" } ] }, "player": { "playername": "kn2kw", "honor": "天使ちゃんマジ天使", "honor_type": 5, "level": 54, "rating": 15.21, "rating_max": 15.42, "classemblem": 4, "updated_on": "2020-11-10" } }
フレンド一覧を取得する
GET friends/list
エンドポイント
GET https://api.chunirec.net/1.3/friends/list.json
パラメーター
-
token
- アクセストークン。
リクエスト例
GET https://api.chunirec.net/1.3/friends/list.json?token=YOUR_TOKEN
レスポンス例
Status: 200 OK
{ "users" : [ { "user_id": 2, "user_name": "chunirec", "player_name": "CHUNIREC", "rating": 15.21, "rating_max": 15.25, "updated_on": "2020-11-04", "is_protected": true, "is_accepted": true, "incoming": false }, { "user_id": 3595, "user_name": "snb0sn", "player_name": "snb0sn", "rating": 15.01, "rating_max": 15.19, "updated_on": "2020-12-02", "is_protected": true, "is_accepted": true, "incoming": true } ] }
楽曲を検索する
GET music/search
エンドポイント
GET https://api.chunirec.net/1.3/music/search.json
パラメーター
-
q
- 検索文字列。
- db.chunirec.net の検索書式が利用できます。
-
token
- アクセストークン。
注意
一度に 200 件までしか取得できません。リクエスト例
GET https://api.chunirec.net/1.3/music/search.json?q=きみ&token=YOUR_TOKEN
レスポンス例
Status: 200 OK
[ { "title": "君の知らない物語", "genre": "POPS&ANIME", "artist": "supercell 「化物語」", "release": "2015-07-28", "id": "8ab225a42335bc89" }, { "title": "デリヘル呼んだら君が来た", "genre": "niconico", "artist": "ナナホシ管弦楽団", "release": "2017-06-08", "id": "dcb9566239106825" }, { "title": "眠れぬ夜君を想フ", "genre": "ORIGINAL", "artist": "baker", "release": "2017-08-24", "id": "84ff4b4f5577827a" }, { "title": "地獄の端にて君を待つ", "genre": "東方Project", "artist": "石鹸屋", "release": "2018-11-22", "id": "b36f0c4c98212152" }, { "title": "キミとボクのミライ", "genre": "POPS&ANIME", "artist": "ジータ(CV:金元寿子)、ルリア(CV:東山奈央)、ヴィーラ(CV:今井麻美)、マリー(CV:長谷川明子)「グランブルーファンタジー」", "release": "2019-04-11", "id": "6cfafa54313e23e0" }, { "title": "ただ君に晴れ", "genre": "POPS&ANIME", "artist": "ヨルシカ", "release": "2019-10-24", "id": "3340c91a9fb0a10e" }, { "title": "君色Everyday", "genre": "POPS&ANIME", "artist": "ヘスティア(CV:水瀬いのり)「ダンジョンに出会いを求めるのは間違っているだろうか」", "release": "2020-07-16", "id": "28dba073bee918b9" } ]
楽曲の譜面情報を取得する
GET music/show
エンドポイント
GET https://api.chunirec.net/1.3/music/show.json
パラメーター
-
id
- 楽曲 ID 。
-
token
- アクセストークン。
リクエスト例
GET https://api.chunirec.net/1.3/music/show.json?id=d300c054c179990a&token=YOUR_TOKEN
レスポンス例
Status: 200 OK
{ "data": { "BAS": { "level": 3, "const": 3, "maxcombo": 559, "is_const_unknown": false }, "ADV": { "level": 7, "const": 7, "maxcombo": 876, "is_const_unknown": false }, "EXP": { "level": 10, "const": 10.4, "maxcombo": 1363, "is_const_unknown": false }, "MAS": { "level": 12, "const": 12.5, "maxcombo": 1716, "is_const_unknown": false } }, "meta": { "id": "d300c054c179990a", "title": "Rendezvous", "genre": "ORIGINAL", "artist": "Crusher-P", "release": "2017-12-21", } }
全ての楽曲の譜面情報を取得する
GET music/showall
エンドポイント
GET https://api.chunirec.net/1.3/music/showall.json
パラメーター
-
token
- アクセストークン。
注意
毎日 12:00 と 21:00 に自動取得されたデーターが返ってくるため、得られる情報は古い場合があります。リクエスト例
GET https://api.chunirec.net/1.3/music/showall.json?token=YOUR_TOKEN
レスポンス例
Status: 200 OK
[ { "meta": { "id": "00105450e5b83f4b", "title": "XL TECHNO", "genre": "VARIETY", "artist": "from PACA PACA PASSION", "release": "2016-02-04" }, "data": { "BAS": { "level": 2, "const": 0, "maxcombo": 326, "is_const_unknown": false }, "ADV": { "level": 5, "const": 0, "maxcombo": 637, "is_const_unknown": false }, "EXP": { "level": 11, "const": 11.1, "maxcombo": 873, "is_const_unknown": false }, "MAS": { "level": 12, "const": 12.6, "maxcombo": 1292, "is_const_unknown": false } } }, { "meta": { "id": "00378e85937c9c8f", "title": "Ai Nov", "genre": "ゲキマイ", "artist": "Feryquitous", "release": "2019-04-11" }, "data": { "BAS": { "level": 4, "const": 0, "maxcombo": 496, "is_const_unknown": false }, "ADV": { "level": 7.5, "const": 7.7, "maxcombo": 878, "is_const_unknown": false }, "EXP": { "level": 12, "const": 12.1, "maxcombo": 1419, "is_const_unknown": false }, "MAS": { "level": 13.5, "const": 13.7, "maxcombo": 2088, "is_const_unknown": false } } }, { "meta": { "id": "00d6b1a6ba53f33e", "title": "VERTeX", "genre": "ゲキマイ", "artist": "Hiro「maimai」より", "release": "2017-12-07" }, "data": { "BAS": { "level": 4, "const": 0, "maxcombo": 542, "is_const_unknown": false }, "ADV": { "level": 8.5, "const": 8.7, "maxcombo": 846, "is_const_unknown": false }, "EXP": { "level": 11.5, "const": 11.9, "maxcombo": 1352, "is_const_unknown": false }, "MAS": { "level": 13.5, "const": 13.7, "maxcombo": 2279, "is_const_unknown": false } } }, { "meta": { "id": "00e2bd0a399a0e8d", "title": "オーケー? オーライ!", "genre": "イロドリミドリ", "artist": "五十嵐 撫子(CV:花井 美春)", "release": "2018-10-25" }, "data": { "BAS": { "level": 3, "const": 0, "maxcombo": 445, "is_const_unknown": false }, "ADV": { "level": 6, "const": 0, "maxcombo": 764, "is_const_unknown": false }, "EXP": { "level": 9, "const": 9.2, "maxcombo": 1074, "is_const_unknown": false }, "MAS": { "level": 11.5, "const": 11.7, "maxcombo": 1548, "is_const_unknown": false } } } ]
譜面の統計情報を取得する
GET music/stat
エンドポイント
GET https://api.chunirec.net/1.3/music/stat.json
パラメーター
-
id
- 楽曲 ID 。
-
diff
- 難易度。
- [
b
,a
,e
,m
,w
] の内から一つ選択
-
token
- アクセストークン。
注意
avg
辞書配列の中の値は null
になることがあります。リクエスト例
GET https://api.chunirec.net/1.3/music/stat.json?id=6a88218b1a936bd3&diff=m&token=YOUR_TOKEN
レスポンス例
Status: 200 OK
{ "users_count": 1405, "count": { "rank": { "max": 64, "sss": 765, "ss+": 134, "ss": 173, "s": 219, "<s": 50 }, "lamp": { "aj": 578, "fc": 214, "other": 613 } }, "avg": { "14.00": 978171.0769, "14.10": 975911.5556, "14.20": 984779, "14.30": 988905.8571, "14.40": 988090.4286, "14.50": 990594.5, "14.60": 994757.5238, "14.70": 987290.4286, "14.80": 994089.2581, "14.90": 998113.3846, "15.00": 995714.9623, "15.10": 998456.1707, "15.20": 1000936.5581, "15.30": 1001893, "15.40": 1001247.9818, "15.50": 1005429.9182, "15.60": 1004969.6358, "15.70": 1007829.4663, "15.80": 1008766.1902, "15.90": 1008947 } }
通常譜面の全レコードを取得する
GET records/showall
エンドポイント
GET https://api.chunirec.net/1.3/records/showall.json
パラメーター
-
user_id (省略可)
- ユーザー ID 。
- ここでのユーザー ID は、内部で使用する、整数値のみで表現される ID です。
user_id
とuser_name
のどちらか一方を指定します。- デフォルト: (アクセストークン所持者)
-
user_name (省略可)
- ユーザー名。
- ここでのユーザー名は、サイト上で表示される、英数字とアンダーラインで表現される文字列です。
user_name
とuser_id
のどちらか一方を指定します。- デフォルト: (アクセストークン所持者)
-
token
- アクセストークン。
注意
user_id
またはuser_name
パラメーターを指定することで他人のレコードを取得することが出来ます。省略するとアクセストークン所持者のレコードが取得されます。- サイトで使用する「ユーザー ID」と API で使用する「ユーザー ID」の意味は違います。(意味については、
user_id
とuser_name
パラメーターの説明を参照してください。) - 存在しないユーザーにアクセスしようとした場合は、404 エラーになります。
- フレンド同士ではない非公開ユーザーにアクセスしようとした場合は、403 エラーになります。
リクエスト例
GET https://api.chunirec.net/1.3/records/showall.json?&token=YOUR_TOKEN
レスポンス例
Status: 200 OK
{ "records": [ { "id": "711eb337f4d4bcb0", "diff": "MAS", "level": 12, "title": "あ・え・い・う・え・お・あお!!", "const": 12.4, "score": 1009211, "rating": 14.4, "is_const_unknown": false, "is_clear": true, "is_fullcombo": true, "is_alljustice": false, "is_fullchain": false, "genre": "POPS&ANIME", "is_played": true }, { "id": "e7595766be8ddb20", "diff": "MAS", "level": 11.5, "title": "レッツゴー!陰陽師", "const": 11.9, "score": 1009214, "rating": 13.9, "is_const_unknown": false, "is_clear": true, "is_fullcombo": true, "is_alljustice": false, "is_fullchain": false, "genre": "VARIETY", "is_played": true }, { "id": "5fb48eded517775f", "diff": "MAS", "level": 12, "title": "つるぺったん", "const": 12.4, "score": 1008549, "rating": 14.4, "is_const_unknown": false, "is_clear": true, "is_fullcombo": false, "is_alljustice": false, "is_fullchain": false, "genre": "東方Project", "is_played": true }, { "id": "ca471fa4c1b21eec", "diff": "MAS", "level": 12, "title": "L'épilogue", "const": 12.5, "score": 1009572, "rating": 14.5, "is_const_unknown": false, "is_clear": true, "is_fullcombo": true, "is_alljustice": true, "is_fullchain": false, "genre": "ゲキマイ", "is_played": true }, { "id": "a40be95f9cdc373e", "diff": "MAS", "level": 13, "title": "アイリちゃんは暗黒魔導士!", "const": 13.3, "score": 1008877, "rating": 15.3, "is_const_unknown": false, "is_clear": true, "is_fullcombo": true, "is_alljustice": false, "is_fullchain": false, "genre": "ORIGINAL", "is_played": true }, ] }
WORLD'S END の全レコードを取得する
GET records/worldsend
エンドポイント
GET https://api.chunirec.net/1.3/records/worldsend.json
パラメーター
-
user_id (省略可)
- ユーザー ID 。
- ここでのユーザー ID は、内部で使用する、整数値のみで表現される ID です。
user_id
とuser_name
のどちらか一方を指定します。- デフォルト: (アクセストークン所持者)
-
user_name (省略可)
- ユーザー名。
- ここでのユーザー名は、サイト上で表示される、英数字とアンダーラインで表現される文字列です。
user_name
とuser_id
のどちらか一方を指定します。- デフォルト: (アクセストークン所持者)
-
token
- アクセストークン。
注意
user_id
またはuser_name
パラメーターを指定することで他人のレコードを取得することが出来ます。省略するとアクセストークン所持者のレコードが取得されます。- サイトで使用する「ユーザー ID」と API で使用する「ユーザー ID」の意味は違います。(意味については、
user_id
とuser_name
パラメーターの説明を参照してください。) - 存在しないユーザーにアクセスしようとした場合は、404 エラーになります。
- フレンド同士ではない非公開ユーザーにアクセスしようとした場合は、403 エラーになります。
リクエスト例
GET https://api.chunirec.net/1.3/records/worldsend.json?&token=YOUR_TOKEN
レスポンス例
Status: 200 OK
{ "records": [ { "id": "b7317ede27096418", "diff": "WE", "level": 0, "title": "B.B.K.K.B.K.K.", "const": 0, "score": 943349, "rating": 0, "is_const_unknown": false, "is_clear": true, "is_fullcombo": false, "is_alljustice": false, "is_fullchain": false, "genre": "WORLD'S END", "is_played": true }, { "id": "e858fa8d4ead4585", "diff": "WE", "level": 0, "title": "チルノのパーフェクトさんすう教室", "const": 0, "score": 974318, "rating": 0, "is_const_unknown": false, "is_clear": true, "is_fullcombo": false, "is_alljustice": false, "is_fullchain": false, "genre": "WORLD'S END", "is_played": true }, { "id": "591fb7484c761de3", "diff": "WE", "level": 0, "title": "回レ!雪月花", "const": 0, "score": 924336, "rating": 0, "is_const_unknown": false, "is_clear": true, "is_fullcombo": false, "is_alljustice": false, "is_fullchain": false, "genre": "WORLD'S END", "is_played": true }, { "id": "7155c385c74d6a92", "diff": "WE", "level": 0, "title": "ウソラセラ", "const": 0, "score": 960831, "rating": 0, "is_const_unknown": false, "is_clear": true, "is_fullcombo": false, "is_alljustice": false, "is_fullchain": false, "genre": "WORLD'S END", "is_played": true }, { "id": "50b099a2b2480ba0", "diff": "WE", "level": 0, "title": "灼熱スイッチ", "const": 0, "score": 1008493, "rating": 0, "is_const_unknown": false, "is_clear": true, "is_fullcombo": true, "is_alljustice": false, "is_fullchain": false, "genre": "WORLD'S END", "is_played": true }, { "id": "30b233c311048dd4", "diff": "WE", "level": 0, "title": "POP TEAM EPIC", "const": 0, "score": 1007210, "rating": 0, "is_const_unknown": false, "is_clear": true, "is_fullcombo": false, "is_alljustice": false, "is_fullchain": false, "genre": "WORLD'S END", "is_played": true }, { "id": "9f324353909cab0d", "diff": "WE", "level": 0, "title": "アリサのテーマ", "const": 0, "score": 1006860, "rating": 0, "is_const_unknown": false, "is_clear": true, "is_fullcombo": false, "is_alljustice": false, "is_fullchain": false, "genre": "WORLD'S END", "is_played": true } ] }
コースレコードを取得する
GET records/course
エンドポイント
GET https://api.chunirec.net/1.3/records/course.json
パラメーター
-
user_id (省略可)
- ユーザー ID 。
- ここでのユーザー ID は、内部で使用する、整数値のみで表現される ID です。
user_id
とuser_name
のどちらか一方を指定します。- デフォルト: (アクセストークン所持者)
-
user_name (省略可)
- ユーザー名。
- ここでのユーザー名は、サイト上で表示される、英数字とアンダーラインで表現される文字列です。
user_name
とuser_id
のどちらか一方を指定します。- デフォルト: (アクセストークン所持者)
-
token
- アクセストークン。
注意
user_id
またはuser_name
パラメーターを指定することで他人のレコードを取得することが出来ます。省略するとアクセストークン所持者のレコードが取得されます。- サイトで使用する「ユーザー ID」と API で使用する「ユーザー ID」の意味は違います。(意味については、
user_id
とuser_name
パラメーターの説明を参照してください。) - 存在しないユーザーにアクセスしようとした場合は、404 エラーになります。
- フレンド同士ではない非公開ユーザーにアクセスしようとした場合は、403 エラーになります。
リクエスト例
GET https://api.chunirec.net/1.3/records/course.json?&token=YOUR_TOKEN
レスポンス例
Status: 200 OK
{ "records": [ { "course_idx": 4008, "course_name": "Revo@LC vs Jack", "course_class": 3, "score": 3016713, "is_clear": true, "is_fullcombo": false, "is_alljustice": false }, { "course_idx": 4012, "course_name": "ぴちネコ vs Moon Strix", "course_class": 4, "score": 2995976, "is_clear": true, "is_fullcombo": false, "is_alljustice": false } ] }