DocumentationAccount
Volleyball API usage
GET/v1/usage
Your plan, the calls you have made today and this month, your limits, when the quota resets and the days you can read. Calls to this endpoint are never counted.
Parameters
None. Any parameter sent is refused with a 422, so a typo never passes unnoticed.
Request
Send your key in the Authorization header as a Bearer token, or in X-API-Key. A key in the address is refused, so it never ends up in a log.
# Your plan, your calls today and this month, your limits and the dates you can read curl "https://api.volleyballapi.com/v1/usage" \ -H "Authorization: Bearer $VBA_KEY"
$ch = curl_init('https://api.volleyballapi.com/v1/usage'); curl_setopt_array($ch, [ CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('VBA_KEY')], CURLOPT_RETURNTRANSFER => true, ]); $res = json_decode(curl_exec($ch), true); print_r($res['data']);
import os, requests r = requests.get( "https://api.volleyballapi.com/v1/usage", headers={"Authorization": f"Bearer {os.environ['VBA_KEY']}"}, ) print(r.json()["data"])
const res = await fetch("https://api.volleyballapi.com/v1/usage", { headers: { "X-API-Key": process.env.VBA_KEY }, }); const { data, meta } = await res.json();
Response
Every answer is data plus meta. This is a real answer to the request above, counted 2026-10-13, with long lists cut short.
{
"data": {
"plan": "Complete",
"key": "vba_6c1f",
"calls": { "today": 1240, "this_month": 18604 },
"limits": {
"per_minute": 120,
"quota": 250000,
"quota_period": "month",
"quota_resets_utc": "2026-11-01T00:00:00Z"
},
"reads_from": null,
"live": true,
"points": true,
"players": true
},
"meta": { "plan": "Complete" }
}Fields
| Field | Type | What it holds |
|---|---|---|
plan | string | Your plan |
key | string | The first characters of the key you called with |
calls | object | today and this_month |
limits | object | per_minute, quota, quota_period and quota_resets_utc |
reads_from | date | The first day your plan reads, or null for every season |
live, points, players | bool | Whether your plan includes live scores, rallies and player figures |
Errors
Errors come back as {"error": {"code", "message", "docs"}}, with plan and pricing added when a plan would answer. Every error.
| HTTP | Code | When |
|---|---|---|
| 401 | unauthorized | No key, or a key that is not known or was revoked |
| 422 | unknown_parameter | A parameter this endpoint does not take; the answer lists the ones it does |
| 429 | rate_limited | Too many calls this minute; Retry-After says when to try again |
Try it
Fill in what you need; the request is built as you type. Paste your key to run it here, straight against the API.