WhoPlays / docs

NAME

whoplays-api — look up the in-game name behind a player ID.

SYNOPSIS

POST https://whoplays.doedja.com/api/check
Authorization: Bearer wp_...
Content-Type: application/json

{ "game": "<slug>", "input": { ... } }

OVERVIEW

MethodPOST
URLhttps://whoplays.doedja.com/api/check
HeaderAuthorization: Bearer wp_…
Body typeapplication/json
Limit30 lookups a minute, counted per person
CacheSuccessful: 1 hour. Player-not-found: 5 minutes. Errors: not cached.

REQUEST

Send a JSON object with two fields. game is the slug from the list further down. input is the per-game data — usually userId, sometimes also zoneId, sometimes a Riot ID.

{
  "game": "mobile-legends",
  "input": { "userId": "1690585197", "zoneId": "18190" }
}

RESPONSE — OK

{
  "ok": true,
  "game": "mobile-legends",
  "username": "Akari."
}

RESPONSE — ERRORS

Every error has the same shape. Switch on the error field.

{
  "ok": false,
  "error": "<kind>",
  "message": "<human-readable>",
  "code": "<optional, set when the lookup itself failed>",
  "issues": [{"field":"…","message":"…"}]   // only on validation errors
}
kindhttpwhat happened
unauthorized401Your key is missing or wrong.
validation400A field is missing or in the wrong format (e.g. Riot ID without #).
unknown_game404That game value isn't supported.
not_found422Couldn't find that player. Wrong ID, wrong region, or the game doesn't allow lookups for it.
rate_limited429You hit the 30-per-minute cap. retryAfter tells you how long to wait.
parse502Got a reply but couldn't read a name out of it. Rare.
upstream502The game's servers gave us an error.

GAMES

16 supported. Slug goes in the game field. Below each slug are the fields you put inside input.

mobile-legends

Mobile Legends: Bang Bang

  • userId: userId
  • zoneId: zoneId
mobile-legends-adventure

Mobile Legends: Adventure

  • userId: userId
  • zoneId: zoneId
genshin-impact

Genshin Impact

  • userId: Server detected from prefix.

We figure out your server from the UID — 1/2/9 = TW/HK/MO, 5/6 = America, 7 = Europe, 8 = Asia. Pass `server` to set it yourself.

honkai-star-rail

Honkai: Star Rail

  • userId: Server detected from prefix.

Same UID rule as Genshin.

free-fire

Garena Free Fire

  • userId: userId
free-fire-max

Garena Free Fire MAX

  • userId: userId
free-fire-ph

Garena Free Fire (PH)

  • userId: Philippines server only.

Looks up the Philippines server. If your ID is for another region, use `free-fire` instead.

call-of-duty-mobile

Call of Duty Mobile

  • userId: userId
arena-of-valor

Arena of Valor

  • userId: userId
valorant

Valorant

  • riotId: Format name#tag, case matters.

Format: `name#tag`. Case matters.

wild-rift

League of Legends: Wild Rift

  • riotId: Format name#tag, case matters.

Format: `name#tag`. Case matters.

league-of-legends

League of Legends (PC)

  • riotId: Format name#tag, case matters.

Format: `name#tag`. Case matters.

sausage-man

Sausage Man

  • userId: userId
speed-drifters

Garena Speed Drifters

  • userId: userId
point-blank

Point Blank (PH)

  • userId: userId
path-to-nowhere

Path to Nowhere

  • userId: userId

KEYS

Sign in, make a key in the dashboard, copy it once (we don't show it again). Keys look like wp_a1b2c3… — 35 characters. We store them hashed, so even we can't read your key after you save it.

The 30-per-minute limit counts you, not your keys, so making more keys won't get you more lookups.

Revoking a key takes effect on the next call. Use a separate key for each project or machine so if one leaks you only have to revoke that one.

NOTES

WhoPlays / · /dashboard