WoS Atlas

API reference

A read-only census API. Everything below is a GET, and a key reads exactly what a signed-in person reads — no more.

Authentication

Send your key in either header. Nothing else authenticates a request, and a key sent to a route that is not listed here is refused rather than served.

X-Api-Key: wos_YOUR_KEY

Or, as a bearer token

Authorization: Bearer wos_YOUR_KEY

Quickstart

Replace the key with your own.

curl -H "X-Api-Key: wos_YOUR_KEY" \ "https://api.wosatlas.com/v1/players/search?playerName=LordFrost"

Endpoints

MethodPathWhat it returnsCounts as
GET/v1/alliances/{aid}/membersFetch one alliance and its rosterRequest
GET/v1/alliances/leaderboardRank alliances by total powerRequest
GET/v1/alliances/recruitingList alliances taking applicationsRequest
GET/v1/alliances/searchSearch alliances by tag or nameSearch
GET/v1/players/{uid}Fetch one player by internal uidRequest
GET/v1/players/searchSearch players by name or Chief IDSearch

Plans and limits

Current operating values, not an entitlement. They can change.

Every limit is per account. Extra keys do not buy extra budget.

Both quota windows are ROLLING, not calendar periods: the read window looks back thirty days from now and the search window looks back twenty-four hours from now. Quota and search windows are metered per ACCOUNT, not per key — every key an account holds draws on one budget.

Response headers

A served response carries all of these, and so does a quota refusal. A burst refusal carries the three X-RateLimit headers alone, and a request refused before metering — 401 or 403 — carries none.

HeaderMeaning
X-Quota-LimitThe account's read allowance for the rolling thirty-day window.
X-Quota-RemainingReads left in that window.
X-Quota-ResetUnix seconds at which the oldest read in the window ages out.
X-Search-LimitThe account's search allowance for the rolling twenty-four-hour window.
X-Search-RemainingSearches left in that window.
X-Search-ResetUnix seconds at which the oldest search in the window ages out.
X-RateLimit-LimitThe account's burst allowance for the short window.
X-RateLimit-RemainingRequests left in the burst window.
X-RateLimit-ResetUnix seconds at which the burst window rolls.
Retry-AfterSeconds to wait before retrying. Sent on every 429, and specific to the window that denied.

Being refused

Three different things answer with a 429, and they are not interchangeable.

Error codeWhat happened
QUOTA_EXCEEDEDThe account's rolling thirty-day read quota is spent. `X-Quota-Remaining` reads zero; `X-Search-Remaining` stays honest.
SEARCH_QUOTA_EXCEEDEDThe account's rolling twenty-four-hour search quota is spent. `X-Search-Remaining` reads zero; `X-Quota-Remaining` stays honest. Only the two search routes count against it.
RATE_LIMIT_EXCEEDEDThe account's short burst window is full. `X-RateLimit-Remaining` reads zero. This is a per-second-scale ceiling and clears on its own; neither quota window has been touched.

Take the retry decision from the `error` code and the `Retry-After` header, never from a remaining counter. A monthly denial and a daily-search denial are both 429 and both leave the OTHER window's remaining counter truthfully non-zero, so a client watching only `X-Quota-Remaining` will see a 429 beside a large remaining count and conclude the server is broken.

Error codes

CodeStatusMeaning
INVALID_API_KEY401The key is unknown, revoked, or its owning account has been deleted.
ENDPOINT_NOT_ALLOWED403The route is not on the developer surface. Presenting a key on a route off the surface is refused rather than served, so do not send a key to endpoints this document does not list.
QUOTA_EXCEEDED429The account's rolling thirty-day read quota is spent. `X-Quota-Remaining` reads zero; `X-Search-Remaining` stays honest.
SEARCH_QUOTA_EXCEEDED429The account's rolling twenty-four-hour search quota is spent. `X-Search-Remaining` reads zero; `X-Quota-Remaining` stays honest. Only the two search routes count against it.
RATE_LIMIT_EXCEEDED429The account's short burst window is full. `X-RateLimit-Remaining` reads zero. This is a per-second-scale ceiling and clears on its own; neither quota window has been touched.

Machine-readable spec

The OpenAPI document below is generated from the running server and is the same one this page renders.

Download openapi.json

Terms