Introduction
This documentation aims to provide all the information you need to work with our API.
Authenticating requests
To authenticate requests, include an Authorization
header with the value "Bearer {YOUR_API_TOKEN}"
.
All authenticated endpoints are marked with a requires authentication
badge in the documentation below.
You can retrieve your token by visiting API Tokens in your dashboard.
Metadata
Fetch Platforms
Fetches all enabled platforms and their metadata.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/platforms" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/platforms';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/platforms"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/platforms'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
Show headers
content-type: application/json
content-encoding: gzip
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 499
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"data": [
{
"slug": "steam",
"name": "Steam",
"start_date": "2014-07-30",
"end_date": null
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch Tag Combos for Platform
Fetches all tag combos for the specified platform.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/platforms/steam/tag-combos?limit=2" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/platforms/steam/tag-combos';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/platforms/steam/tag-combos"
);
const params = {
"limit": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/platforms/steam/tag-combos'
params = {
'limit': '2',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 498
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 2
},
"data": [
{
"slug": "all-time~all-chars~amplified~deathless",
"metric": "wins",
"includes_wildcard": true,
"includes_meme": true
},
{
"slug": "all-time~all-chars~amplified~deathless~co-op",
"metric": "wins",
"includes_wildcard": true,
"includes_meme": true
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch Metrics for Platform
Fetches all enabled metrics and their metadata for the specified platform.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/platforms/steam/metrics?limit=2" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/platforms/steam/metrics';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/platforms/steam/metrics"
);
const params = {
"limit": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/platforms/steam/metrics'
params = {
'limit': '2',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 497
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 2
},
"data": [
{
"slug": "score",
"name": "Score"
},
{
"slug": "time",
"name": "Time"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch Ranking Timeframes
Fetches all enabled ranking timeframes and their metadata.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/ranking-timeframes" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/ranking-timeframes';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/ranking-timeframes"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/ranking-timeframes'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
Show headers
content-type: application/json
content-encoding: gzip
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 496
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"data": [
{
"slug": "all",
"name": "All",
"start_date": null,
"end_date": null
},
{
"slug": "past-6-months",
"name": "Past 6 Months",
"start_date": "2023-07-07",
"end_date": "2024-01-07"
},
{
"slug": "past-month",
"name": "Past Month",
"start_date": "2023-12-07",
"end_date": "2024-01-07"
},
{
"slug": "past-week",
"name": "Past Week",
"start_date": "2023-12-31",
"end_date": "2024-01-07"
},
{
"slug": "past-year",
"name": "Past Year",
"start_date": "2023-01-07",
"end_date": "2024-01-07"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Leaderboards
Fetch Leaderboard Entries for Date
Fetch the entries for a leaderboard that is tied to a date.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/leaderboards/steam/daily~any-percent~cadence~amplified~normal~score~seeded~single-player~ost/2022-06-30/entries?limit=2" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/leaderboards/steam/daily~any-percent~cadence~amplified~normal~score~seeded~single-player~ost/2022-06-30/entries';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/leaderboards/steam/daily~any-percent~cadence~amplified~normal~score~seeded~single-player~ost/2022-06-30/entries"
);
const params = {
"limit": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/leaderboards/steam/daily~any-percent~cadence~amplified~normal~score~seeded~single-player~ost/2022-06-30/entries'
params = {
'limit': '2',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 493
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 2
},
"data": [
{
"user": [],
"player_external_id": "76561198207378484",
"username": "Ocre",
"rank": 1,
"metric": "29203",
"metric_type": "score",
"date": "2022-06-30",
"pb_metadata": [
{
"name": "end_level",
"value": "6",
"display_name": "End Level"
},
{
"name": "end_zone",
"value": "5",
"display_name": "End Zone"
}
],
"seed": "44832",
"replay_id": 3900146047,
"replay_metadata": [
{
"name": "last_damage_source",
"value": "",
"display_name": "Last Damage Source"
},
{
"name": "replay_version",
"value": "94",
"display_name": "Replay Version"
}
]
},
{
"user": [],
"player_external_id": "76561197997560639",
"username": "Hellminthiasis",
"rank": 2,
"metric": "27867",
"metric_type": "score",
"date": "2022-06-30",
"pb_metadata": [
{
"name": "end_level",
"value": "6",
"display_name": "End Level"
},
{
"name": "end_zone",
"value": "5",
"display_name": "End Zone"
}
],
"seed": "44832",
"replay_id": 3902609047,
"replay_metadata": [
{
"name": "last_damage_source",
"value": "",
"display_name": "Last Damage Source"
},
{
"name": "replay_version",
"value": "94",
"display_name": "Replay Version"
}
]
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch Leaderboard Entries for All Time
Fetch the entries for a leaderboard that is not tied to a date.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/leaderboards/steam/all-time~any-percent~cadence~amplified~normal~score~unseeded~single-player~ost/entries?limit=2" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/leaderboards/steam/all-time~any-percent~cadence~amplified~normal~score~unseeded~single-player~ost/entries';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/leaderboards/steam/all-time~any-percent~cadence~amplified~normal~score~unseeded~single-player~ost/entries"
);
const params = {
"limit": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/leaderboards/steam/all-time~any-percent~cadence~amplified~normal~score~unseeded~single-player~ost/entries'
params = {
'limit': '2',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 492
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 2
},
"data": [
{
"user": [],
"player_external_id": "76561197995201379",
"username": "dannyboy5600",
"rank": 1,
"metric": "99440",
"metric_type": "score",
"date": "2022-08-25",
"pb_metadata": [
{
"name": "end_level",
"value": "2",
"display_name": "End Level"
},
{
"name": "end_zone",
"value": "1",
"display_name": "End Zone"
},
{
"name": "gold_duplication",
"value": "no",
"display_name": "Gold Duplication"
},
{
"name": "killer_id",
"value": "Red Dragon",
"display_name": "Killer"
},
{
"name": "low_percent",
"value": "no",
"display_name": "Low Percent"
},
{
"name": "number_of_players",
"value": "1",
"display_name": "Number of Players"
},
{
"name": "raw_version",
"value": "17173394",
"display_name": "Raw Version"
},
{
"name": "version",
"value": "3.1.6-b2962",
"display_name": "Version"
},
{
"name": "victory",
"value": "no",
"display_name": "Victory"
}
],
"seed": null,
"replay_id": null,
"replay_metadata": []
},
{
"user": [],
"player_external_id": "76561198072415677",
"username": "Aipexos",
"rank": 2,
"metric": "98715",
"metric_type": "score",
"date": "2024-01-04",
"pb_metadata": [
{
"name": "end_level",
"value": "1",
"display_name": "End Level"
},
{
"name": "end_zone",
"value": "1",
"display_name": "End Zone"
},
{
"name": "gold_duplication",
"value": "no",
"display_name": "Gold Duplication"
},
{
"name": "killer_id",
"value": "Light Minotaur",
"display_name": "Killer"
},
{
"name": "low_percent",
"value": "no",
"display_name": "Low Percent"
},
{
"name": "number_of_players",
"value": "1",
"display_name": "Number of Players"
},
{
"name": "raw_version",
"value": "118100769",
"display_name": "Raw Version"
},
{
"name": "version",
"value": "3.7.10-b4897",
"display_name": "Version"
},
{
"name": "victory",
"value": "no",
"display_name": "Victory"
}
],
"seed": null,
"replay_id": null,
"replay_metadata": []
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Rankings
Fetch Ranking Entries
Fetches ranking entries for the specified platform, slug, and timeframe.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/rankings/steam/all-time~any-percent/all/entries?limit=2" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/rankings/steam/all-time~any-percent/all/entries';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/rankings/steam/all-time~any-percent/all/entries"
);
const params = {
"limit": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/rankings/steam/all-time~any-percent/all/entries'
params = {
'limit': '2',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 495
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 2
},
"data": [
{
"user": [],
"username": "TruthOrMare",
"rank": 1,
"points": "575915.3673626177",
"leaderboard_entries_count": 7342,
"sum_of_ranks": 252545,
"first_place_ranks": 4770,
"top_5_ranks": 5806,
"top_10_ranks": 6206,
"top_25_ranks": 6643,
"top_50_ranks": 6901,
"top_100_ranks": 7065,
"lowest_rank": 27042,
"metrics": [
{
"metric": 403680.4320000001,
"points": 25032.407491516937,
"lowest_rank": 1963,
"metric_type": "time",
"top_5_ranks": 244,
"sum_of_ranks": 11291,
"top_10_ranks": 300,
"top_25_ranks": 388,
"top_50_ranks": 454,
"top_100_ranks": 487,
"first_place_ranks": 106,
"leaderboard_entries_count": 502
},
{
"metric": 3067310,
"points": 499172.42214048654,
"lowest_rank": 27042,
"metric_type": "score",
"top_5_ranks": 5035,
"sum_of_ranks": 229991,
"top_10_ranks": 5342,
"top_25_ranks": 5651,
"top_50_ranks": 5822,
"top_100_ranks": 5933,
"first_place_ranks": 4242,
"leaderboard_entries_count": 6176
},
{
"metric": 119,
"points": 51710.53773060954,
"lowest_rank": 1570,
"metric_type": "wins",
"top_5_ranks": 527,
"sum_of_ranks": 11263,
"top_10_ranks": 564,
"top_25_ranks": 604,
"top_50_ranks": 625,
"top_100_ranks": 645,
"first_place_ranks": 422,
"leaderboard_entries_count": 664
}
]
},
{
"user": [],
"username": "philburt",
"rank": 2,
"points": "29594.30562995018",
"leaderboard_entries_count": 758,
"sum_of_ranks": 162405,
"first_place_ranks": 19,
"top_5_ranks": 307,
"top_10_ranks": 426,
"top_25_ranks": 549,
"top_50_ranks": 604,
"top_100_ranks": 654,
"lowest_rank": 18486,
"metrics": [
{
"metric": 136,
"points": 1203.8339465698675,
"lowest_rank": 904,
"metric_type": "wins",
"top_5_ranks": 14,
"sum_of_ranks": 2653,
"top_10_ranks": 19,
"top_25_ranks": 21,
"top_50_ranks": 22,
"top_100_ranks": 25,
"first_place_ranks": 0,
"leaderboard_entries_count": 30
},
{
"metric": 293258.97900000005,
"points": 11683.893469344632,
"lowest_rank": 4930,
"metric_type": "time",
"top_5_ranks": 121,
"sum_of_ranks": 30921,
"top_10_ranks": 171,
"top_25_ranks": 223,
"top_50_ranks": 238,
"top_100_ranks": 257,
"first_place_ranks": 5,
"leaderboard_entries_count": 277
},
{
"metric": 2296209,
"points": 16706.578214035595,
"lowest_rank": 18486,
"metric_type": "score",
"top_5_ranks": 172,
"sum_of_ranks": 128831,
"top_10_ranks": 236,
"top_25_ranks": 305,
"top_50_ranks": 344,
"top_100_ranks": 372,
"first_place_ranks": 14,
"leaderboard_entries_count": 451
}
]
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch Leaderboard Entries for Ranking Entry
Fetches all leaderboard entries used in the calculation of the specified ranking entry.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/rankings/steam/all-time~any-percent/all/entries/1/leaderboards/1?rank=1&metric=score&limit=2&search=any-percent%2Ccadence" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/rankings/steam/all-time~any-percent/all/entries/1/leaderboards/1';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'rank' => '1',
'metric' => 'score',
'limit' => '2',
'search' => 'any-percent,cadence',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/rankings/steam/all-time~any-percent/all/entries/1/leaderboards/1"
);
const params = {
"rank": "1",
"metric": "score",
"limit": "2",
"search": "any-percent,cadence",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/rankings/steam/all-time~any-percent/all/entries/1/leaderboards/1'
params = {
'rank': '1',
'metric': 'score',
'limit': '2',
'search': 'any-percent,cadence',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 494
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": [],
"data": []
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Users
Fetch PBs for the specified User
Fetch all PBs for a registered user.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/pbs/steam?limit=2&search=any-percent%2Ccadence" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/pbs/steam';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
'search' => 'any-percent,cadence',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/pbs/steam"
);
const params = {
"limit": "2",
"search": "any-percent,cadence",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/pbs/steam'
params = {
'limit': '2',
'search': 'any-percent,cadence',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 491
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 6008968335
},
"data": [
{
"slug": "all-time~any-percent~cadence~synchrony-amplified~normal~score~unseeded~single-player~ost",
"rank": 764,
"leaderboard_entry_rank": 765,
"metric": "7573",
"metric_type": "score",
"date": "2024-01-02",
"pb_metadata": [
{
"name": "end_level",
"value": "5",
"display_name": "End Level"
},
{
"name": "end_zone",
"value": "5",
"display_name": "End Zone"
},
{
"name": "gold_duplication",
"value": "no",
"display_name": "Gold Duplication"
},
{
"name": "killer_id",
"value": "Nothing!",
"display_name": "Killer"
},
{
"name": "low_percent",
"value": "no",
"display_name": "Low Percent"
},
{
"name": "number_of_players",
"value": "1",
"display_name": "Number of Players"
},
{
"name": "raw_version",
"value": "118100769",
"display_name": "Raw Version"
},
{
"name": "version",
"value": "3.7.10-b4897",
"display_name": "Version"
},
{
"name": "victory",
"value": "yes",
"display_name": "Victory"
}
],
"seed": null,
"replay_id": null,
"replay_metadata": []
},
{
"slug": "all-time~any-percent~cadence~synchrony-amplified~normal~speed~seeded~single-player~ost",
"rank": 3,
"leaderboard_entry_rank": 4,
"metric": "331.416",
"metric_type": "time",
"date": "2022-12-16",
"pb_metadata": [
{
"name": "end_level",
"value": "5",
"display_name": "End Level"
},
{
"name": "end_zone",
"value": "5",
"display_name": "End Zone"
},
{
"name": "gold_duplication",
"value": "no",
"display_name": "Gold Duplication"
},
{
"name": "killer_id",
"value": "Nothing!",
"display_name": "Killer"
},
{
"name": "low_percent",
"value": "no",
"display_name": "Low Percent"
},
{
"name": "number_of_players",
"value": "1",
"display_name": "Number of Players"
},
{
"name": "raw_version",
"value": "50597347",
"display_name": "Raw Version"
},
{
"name": "version",
"value": "3.3.4-b3555",
"display_name": "Version"
},
{
"name": "victory",
"value": "yes",
"display_name": "Victory"
}
],
"seed": null,
"replay_id": null,
"replay_metadata": []
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch leaderboard entries for the specified User
Fetch all leaderboard entries for a registered user.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/leaderboards/steam/entries?limit=2&search=any-percent%2Ccadence" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/leaderboards/steam/entries';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
'search' => 'any-percent,cadence',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/leaderboards/steam/entries"
);
const params = {
"limit": "2",
"search": "any-percent,cadence",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/leaderboards/steam/entries'
params = {
'limit': '2',
'search': 'any-percent,cadence',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 490
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 2
},
"data": [
{
"slug": "all-time~any-percent~cadence~synchrony-amplified~normal~speed~seeded~single-player~ost",
"rank": 4,
"metric": "331.416",
"metric_type": "time",
"date": "2022-12-16",
"pb_metadata": [
{
"name": "end_level",
"value": "5",
"display_name": "End Level"
},
{
"name": "end_zone",
"value": "5",
"display_name": "End Zone"
},
{
"name": "gold_duplication",
"value": "no",
"display_name": "Gold Duplication"
},
{
"name": "killer_id",
"value": "Nothing!",
"display_name": "Killer"
},
{
"name": "low_percent",
"value": "no",
"display_name": "Low Percent"
},
{
"name": "number_of_players",
"value": "1",
"display_name": "Number of Players"
},
{
"name": "raw_version",
"value": "50597347",
"display_name": "Raw Version"
},
{
"name": "version",
"value": "3.3.4-b3555",
"display_name": "Version"
},
{
"name": "victory",
"value": "yes",
"display_name": "Victory"
}
],
"seed": null,
"replay_id": null,
"replay_metadata": []
},
{
"slug": "all-time~any-percent~cadence~amplified~mystery~speed~unseeded~single-player~ost",
"rank": 5,
"metric": "517.1",
"metric_type": "time",
"date": "2019-10-16",
"pb_metadata": [
{
"name": "end_level",
"value": "6",
"display_name": "End Level"
},
{
"name": "end_zone",
"value": "5",
"display_name": "End Zone"
}
],
"seed": "6336765",
"replay_id": 1000289418,
"replay_metadata": [
{
"name": "last_damage_source",
"value": "BLACK SKELETON KNIGHT",
"display_name": "Last Damage Source"
},
{
"name": "replay_version",
"value": "94",
"display_name": "Replay Version"
}
]
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch Unsubmitted Leaderboards for User
Fetch all leaderboards that the specified user has not submitted an entry for.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/leaderboards/steam/unsubmitted?limit=2&search=any-percent%2Ccadence&next=0" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/leaderboards/steam/unsubmitted';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
'search' => 'any-percent,cadence',
'next' => '0',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/leaderboards/steam/unsubmitted"
);
const params = {
"limit": "2",
"search": "any-percent,cadence",
"next": "0",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/leaderboards/steam/unsubmitted'
params = {
'limit': '2',
'search': 'any-percent,cadence',
'next': '0',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 489
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 2
},
"data": [
{
"slug": "all-time~any-percent~cadence~amplified~hard~score~seeded~co-op~custom",
"end_rank": 5,
"metric_type": "score",
"metric_total": "3341"
},
{
"slug": "all-time~any-percent~cadence~amplified~hard~score~seeded~co-op~ost",
"end_rank": 79,
"metric_type": "score",
"metric_total": "173954"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch Ranking Entries for the Specified User
Fetch all ranking entries for a registered user and a specified timeframe.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/rankings/steam/all/entries?limit=2&search=any-percent%2Ccadence" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/rankings/steam/all/entries';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
'search' => 'any-percent,cadence',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/rankings/steam/all/entries"
);
const params = {
"limit": "2",
"search": "any-percent,cadence",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/users/52735c47-b6c6-46fe-9962-b438496f5647/rankings/steam/all/entries'
params = {
'limit': '2',
'search': 'any-percent,cadence',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 488
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 2
},
"data": [
{
"slug": "all-time~any-percent~cadence~normal~speed~seeded~single-player~ost",
"rank": 4,
"points": "105.438680146868",
"leaderboard_entries_count": 3,
"sum_of_ranks": 45,
"first_place_ranks": 0,
"top_5_ranks": 1,
"top_10_ranks": 2,
"top_25_ranks": 2,
"top_50_ranks": 3,
"top_100_ranks": 3,
"lowest_rank": 32,
"metrics": [
{
"metric": 910.409,
"points": 105.438680146868,
"lowest_rank": 32,
"metric_type": "time",
"top_5_ranks": 1,
"sum_of_ranks": 45,
"top_10_ranks": 2,
"top_25_ranks": 2,
"top_50_ranks": 3,
"top_100_ranks": 3,
"first_place_ranks": 0,
"leaderboard_entries_count": 3
}
]
},
{
"slug": "all-time~any-percent~cadence~amplified~speed~unseeded~single-player~ost",
"rank": 6,
"points": "170.075504259145",
"leaderboard_entries_count": 6,
"sum_of_ranks": 91,
"first_place_ranks": 0,
"top_5_ranks": 1,
"top_10_ranks": 2,
"top_25_ranks": 5,
"top_50_ranks": 6,
"top_100_ranks": 6,
"lowest_rank": 29,
"metrics": [
{
"metric": 2749.2569999999996,
"points": 170.075504259145,
"lowest_rank": 29,
"metric_type": "time",
"top_5_ranks": 1,
"sum_of_ranks": 91,
"top_10_ranks": 2,
"top_25_ranks": 5,
"top_50_ranks": 6,
"top_100_ranks": 6,
"first_place_ranks": 0,
"leaderboard_entries_count": 6
}
]
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Me
Fetch PBs for Me
requires authentication
Fetch all PBs for the currently authenticated User.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/me/pbs/steam?limit=2&search=any-percent%2Ccadence" \
--header "Authorization: Bearer {YOUR_API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/me/pbs/steam';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
'search' => 'any-percent,cadence',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/me/pbs/steam"
);
const params = {
"limit": "2",
"search": "any-percent,cadence",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/me/pbs/steam'
params = {
'limit': '2',
'search': 'any-percent,cadence',
}
headers = {
'Authorization': 'Bearer {YOUR_API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 499
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 6008968335
},
"data": [
{
"slug": "all-time~any-percent~cadence~synchrony-amplified~normal~score~unseeded~single-player~ost",
"rank": 764,
"leaderboard_entry_rank": 765,
"metric": "7573",
"metric_type": "score",
"date": "2024-01-02",
"pb_metadata": [
{
"name": "end_level",
"value": "5",
"display_name": "End Level"
},
{
"name": "end_zone",
"value": "5",
"display_name": "End Zone"
},
{
"name": "gold_duplication",
"value": "no",
"display_name": "Gold Duplication"
},
{
"name": "killer_id",
"value": "Nothing!",
"display_name": "Killer"
},
{
"name": "low_percent",
"value": "no",
"display_name": "Low Percent"
},
{
"name": "number_of_players",
"value": "1",
"display_name": "Number of Players"
},
{
"name": "raw_version",
"value": "118100769",
"display_name": "Raw Version"
},
{
"name": "version",
"value": "3.7.10-b4897",
"display_name": "Version"
},
{
"name": "victory",
"value": "yes",
"display_name": "Victory"
}
],
"seed": null,
"replay_id": null,
"replay_metadata": []
},
{
"slug": "all-time~any-percent~cadence~synchrony-amplified~normal~speed~seeded~single-player~ost",
"rank": 3,
"leaderboard_entry_rank": 4,
"metric": "331.416",
"metric_type": "time",
"date": "2022-12-16",
"pb_metadata": [
{
"name": "end_level",
"value": "5",
"display_name": "End Level"
},
{
"name": "end_zone",
"value": "5",
"display_name": "End Zone"
},
{
"name": "gold_duplication",
"value": "no",
"display_name": "Gold Duplication"
},
{
"name": "killer_id",
"value": "Nothing!",
"display_name": "Killer"
},
{
"name": "low_percent",
"value": "no",
"display_name": "Low Percent"
},
{
"name": "number_of_players",
"value": "1",
"display_name": "Number of Players"
},
{
"name": "raw_version",
"value": "50597347",
"display_name": "Raw Version"
},
{
"name": "version",
"value": "3.3.4-b3555",
"display_name": "Version"
},
{
"name": "victory",
"value": "yes",
"display_name": "Victory"
}
],
"seed": null,
"replay_id": null,
"replay_metadata": []
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch Leaderboard Entries for Me
requires authentication
Fetch all leaderboard entries for the currently authenticated User.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/me/leaderboards/steam/entries?limit=2&search=any-percent%2Ccadence" \
--header "Authorization: Bearer {YOUR_API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/me/leaderboards/steam/entries';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
'search' => 'any-percent,cadence',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/me/leaderboards/steam/entries"
);
const params = {
"limit": "2",
"search": "any-percent,cadence",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/me/leaderboards/steam/entries'
params = {
'limit': '2',
'search': 'any-percent,cadence',
}
headers = {
'Authorization': 'Bearer {YOUR_API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 498
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 2
},
"data": [
{
"slug": "all-time~any-percent~cadence~synchrony-amplified~normal~speed~seeded~single-player~ost",
"rank": 4,
"metric": "331.416",
"metric_type": "time",
"date": "2022-12-16",
"pb_metadata": [
{
"name": "end_level",
"value": "5",
"display_name": "End Level"
},
{
"name": "end_zone",
"value": "5",
"display_name": "End Zone"
},
{
"name": "gold_duplication",
"value": "no",
"display_name": "Gold Duplication"
},
{
"name": "killer_id",
"value": "Nothing!",
"display_name": "Killer"
},
{
"name": "low_percent",
"value": "no",
"display_name": "Low Percent"
},
{
"name": "number_of_players",
"value": "1",
"display_name": "Number of Players"
},
{
"name": "raw_version",
"value": "50597347",
"display_name": "Raw Version"
},
{
"name": "version",
"value": "3.3.4-b3555",
"display_name": "Version"
},
{
"name": "victory",
"value": "yes",
"display_name": "Victory"
}
],
"seed": null,
"replay_id": null,
"replay_metadata": []
},
{
"slug": "all-time~any-percent~cadence~amplified~mystery~speed~unseeded~single-player~ost",
"rank": 5,
"metric": "517.1",
"metric_type": "time",
"date": "2019-10-16",
"pb_metadata": [
{
"name": "end_level",
"value": "6",
"display_name": "End Level"
},
{
"name": "end_zone",
"value": "5",
"display_name": "End Zone"
}
],
"seed": "6336765",
"replay_id": 1000289418,
"replay_metadata": [
{
"name": "last_damage_source",
"value": "BLACK SKELETON KNIGHT",
"display_name": "Last Damage Source"
},
{
"name": "replay_version",
"value": "94",
"display_name": "Replay Version"
}
]
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch Unsubmitted Leaderboards for Me
requires authentication
Fetch all leaderboards that the currently authenticated user has not submitted an entry for.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/me/leaderboards/steam/unsubmitted?limit=2&search=any-percent%2Ccadence" \
--header "Authorization: Bearer {YOUR_API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/me/leaderboards/steam/unsubmitted';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
'search' => 'any-percent,cadence',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/me/leaderboards/steam/unsubmitted"
);
const params = {
"limit": "2",
"search": "any-percent,cadence",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/me/leaderboards/steam/unsubmitted'
params = {
'limit': '2',
'search': 'any-percent,cadence',
}
headers = {
'Authorization': 'Bearer {YOUR_API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 497
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 2
},
"data": [
{
"slug": "all-time~any-percent~cadence~amplified~hard~score~seeded~co-op~custom",
"end_rank": 5,
"metric_type": "score",
"metric_total": "3341"
},
{
"slug": "all-time~any-percent~cadence~amplified~hard~score~seeded~co-op~ost",
"end_rank": 79,
"metric_type": "score",
"metric_total": "173954"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch Ranking Entries for Me
requires authentication
Fetch all ranking entries for the currently authenticated User.
Example request:
curl --request GET \
--get "https://www.necrolab.com/api/me/rankings/steam/all/entries?limit=2&search=any-percent%2Ccadence" \
--header "Authorization: Bearer {YOUR_API_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$url = 'https://www.necrolab.com/api/me/rankings/steam/all/entries';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_API_TOKEN}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'limit' => '2',
'search' => 'any-percent,cadence',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
"https://www.necrolab.com/api/me/rankings/steam/all/entries"
);
const params = {
"limit": "2",
"search": "any-percent,cadence",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_API_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://www.necrolab.com/api/me/rankings/steam/all/entries'
params = {
'limit': '2',
'search': 'any-percent,cadence',
}
headers = {
'Authorization': 'Bearer {YOUR_API_TOKEN}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
Show headers
content-type: application/json
cache-control: no-cache, private
x-ratelimit-limit: 500
x-ratelimit-remaining: 496
access-control-allow-origin: *
access-control-expose-headers: x-inertia
{
"cursors": {
"next": 2
},
"data": [
{
"slug": "all-time~any-percent~cadence~normal~speed~seeded~single-player~ost",
"rank": 4,
"points": "105.438680146868",
"leaderboard_entries_count": 3,
"sum_of_ranks": 45,
"first_place_ranks": 0,
"top_5_ranks": 1,
"top_10_ranks": 2,
"top_25_ranks": 2,
"top_50_ranks": 3,
"top_100_ranks": 3,
"lowest_rank": 32,
"metrics": [
{
"metric": 910.409,
"points": 105.438680146868,
"lowest_rank": 32,
"metric_type": "time",
"top_5_ranks": 1,
"sum_of_ranks": 45,
"top_10_ranks": 2,
"top_25_ranks": 2,
"top_50_ranks": 3,
"top_100_ranks": 3,
"first_place_ranks": 0,
"leaderboard_entries_count": 3
}
]
},
{
"slug": "all-time~any-percent~cadence~amplified~speed~unseeded~single-player~ost",
"rank": 6,
"points": "170.075504259145",
"leaderboard_entries_count": 6,
"sum_of_ranks": 91,
"first_place_ranks": 0,
"top_5_ranks": 1,
"top_10_ranks": 2,
"top_25_ranks": 5,
"top_50_ranks": 6,
"top_100_ranks": 6,
"lowest_rank": 29,
"metrics": [
{
"metric": 2749.2569999999996,
"points": 170.075504259145,
"lowest_rank": 29,
"metric_type": "time",
"top_5_ranks": 1,
"sum_of_ranks": 91,
"top_10_ranks": 2,
"top_25_ranks": 5,
"top_50_ranks": 6,
"top_100_ranks": 6,
"first_place_ranks": 0,
"leaderboard_entries_count": 6
}
]
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.