PikaNetwork Stats API
Unofficial reference for stats.pika-network.net's public HTTP API. No specification is published upstream; every entry here is crawl-verified or explicitly marked as inferred.
Consuming this from TypeScript: use PikaNetworkClient, not this section directly.
Base URL
https://stats.pika-network.net/apiAuth
noneNo API key, no token, no per-key quota. Rate-limited by IP only.
Content type
| Endpoint | Content-Type |
|---|---|
all except /ping | application/json |
/ping | text/plain |
Numeric encoding
quirk
Numeric fields are not consistently typed.
| Encoding | Example | Where |
|---|---|---|
JSON number | 4377967 | Totals, most fields |
| numeric string | "5158777955980.7333984375" | Leaderboards value, some balances |
Coerce both to number at the parse boundary. Do not assume one or the other.
Status code contract
| Status | Body | Meaning |
|---|---|---|
200 | JSON | success |
204 | empty | valid request, no data for this gamemode/mode |
404 | empty | entity does not exist (player, clan, recap) |
404 | JSON error | route unmapped |
400 | JSON error | invalid gamemode / mode / stat / interval combination |
429 | JSON error | rate limited |
5xx | varies | upstream / edge failure |
not an error
204 is a valid, successful response. Handle it as an empty result, never as a thrown exception.
Rate limits
undocumented
No RateLimit-* or Retry-After response headers. This package defaults to 350 req/s, burst 16, derived from load testing, not a published SLA. See Rate Limiting.
Crawl coverage
| Metric | Value |
|---|---|
| Gamemodes | 14 |
| Stat keys | 105 |
| Verification method | live 200 response per gamemode/stat combination, see Gamemode Catalog |
Endpoints
/leaderboardspaginated global ranking
/leaderboards/totalserver-wide aggregate
/profile/${username}account profile
/profile/${username}/leaderboardper-player stats
/clans/${clanName}clan profile
/recaps/${gameId}match recap
/pingliveness check
gamemode catalogfull crawl-verified gamemode/stat table