Introduction
PPvR public API
This is a really basic api to provide most of the data that is provided by PPvR.
All API calls are rate limited to 60 requests per minute to ensure that the api is used responsibly. This is the only way I can keep it public.
Base URL
http://localhost
Authenticating requests
This API is not authenticated.
Posts
Posts
Get all posts (paginated, 50 per page)
Example request:
curl --request GET \
--get "https://ppvr.andrus.io/api/posts" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://ppvr.andrus.io/api/posts"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://ppvr.andrus.io/api/posts';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://ppvr.andrus.io/api/posts'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": [
{
"id": "1001lgy",
"player_id": 10549880,
"map_artist": "Apocalyptica",
"map_title": "Reign of Fear",
"map_diff": "III",
"author": "kipster15",
"score": 128,
"ups": 131,
"downs": 3,
"silver": 0,
"gold": 0,
"platinum": 0,
"created_utc": 1672514755,
"final": 0,
"created_at": "2022-12-31T19:30:07.000000Z",
"updated_at": "2023-01-01T19:15:15.000000Z"
},
{
"id": "1001lgy",
"player_id": 10549880,
"map_artist": "Apocalyptica",
"map_title": "Reign of Fear",
"map_diff": "III",
"author": "kipster15",
"score": 128,
"ups": 131,
"downs": 3,
"silver": 0,
"gold": 0,
"platinum": 0,
"created_utc": 1672514755,
"final": 0,
"created_at": "2022-12-31T19:30:07.000000Z",
"updated_at": "2023-01-01T19:15:15.000000Z"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "/",
"per_page": 50,
"to": 2,
"total": 2
}
}
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.
Post
Get a post by id (same as reddit post id)
Example request:
curl --request GET \
--get "https://ppvr.andrus.io/api/posts/u3rk97" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://ppvr.andrus.io/api/posts/u3rk97"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://ppvr.andrus.io/api/posts/u3rk97';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://ppvr.andrus.io/api/posts/u3rk97'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"id": "1001lgy",
"player_id": 10549880,
"map_artist": "Apocalyptica",
"map_title": "Reign of Fear",
"map_diff": "III",
"author": "kipster15",
"score": 128,
"ups": 131,
"downs": 3,
"silver": 0,
"gold": 0,
"platinum": 0,
"created_utc": 1672514755,
"final": 0,
"created_at": "2022-12-31T19:30:07.000000Z",
"updated_at": "2023-01-01T19:15:15.000000Z"
}
}
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.
Posts by Player
Get a players' posts by player id (same as osu player id)
Example request:
curl --request GET \
--get "https://ppvr.andrus.io/api/posts/by-player/124493" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://ppvr.andrus.io/api/posts/by-player/124493"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://ppvr.andrus.io/api/posts/by-player/124493';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://ppvr.andrus.io/api/posts/by-player/124493'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"id": "1001lgy",
"player_id": 10549880,
"map_artist": "Apocalyptica",
"map_title": "Reign of Fear",
"map_diff": "III",
"author": "kipster15",
"score": 128,
"ups": 131,
"downs": 3,
"silver": 0,
"gold": 0,
"platinum": 0,
"created_utc": 1672514755,
"final": 0,
"created_at": "2022-12-31T19:30:07.000000Z",
"updated_at": "2023-01-01T19:15:15.000000Z"
}
}
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.
Players
Players
Get all players (paginated, 50 per page)
Example request:
curl --request GET \
--get "https://ppvr.andrus.io/api/players" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://ppvr.andrus.io/api/players"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://ppvr.andrus.io/api/players';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://ppvr.andrus.io/api/players'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": [
{
"id": 2,
"name": "peppy",
"score": 9540,
"created_at": "2018-09-10T23:34:06.000000Z",
"updated_at": "2024-08-01T21:51:04.000000Z"
},
{
"id": 2,
"name": "peppy",
"score": 9540,
"created_at": "2018-09-10T23:34:06.000000Z",
"updated_at": "2024-08-01T21:51:04.000000Z"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "/?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "/",
"per_page": 50,
"to": 2,
"total": 2
}
}
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.
Player
Get a player by id (same as osu player id)
Example request:
curl --request GET \
--get "https://ppvr.andrus.io/api/players/124493" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://ppvr.andrus.io/api/players/124493"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://ppvr.andrus.io/api/players/124493';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://ppvr.andrus.io/api/players/124493'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"id": 2,
"name": "peppy",
"score": 9540,
"created_at": "2018-09-10T23:34:06.000000Z",
"updated_at": "2024-08-01T21:51:04.000000Z"
}
}
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.
Ranks
Ranks
Get the rank history for a player
Example request:
curl --request GET \
--get "https://ppvr.andrus.io/api/ranks/124493" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://ppvr.andrus.io/api/ranks/124493"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://ppvr.andrus.io/api/ranks/124493';
$response = $client->get(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://ppvr.andrus.io/api/ranks/124493'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": [
{
"id": 4620143,
"player_id": 7562902,
"rank": 1,
"created_at": "2024-09-12T03:00:39.000000Z",
"updated_at": "2024-09-12T03:00:39.000000Z"
},
{
"id": 4620143,
"player_id": 7562902,
"rank": 1,
"created_at": "2024-09-12T03:00:39.000000Z",
"updated_at": "2024-09-12T03:00:39.000000Z"
}
]
}
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.