Open data API
Free, read-only, no key. The same data as these pages. Each event is published as soon as it is final. Every Copy JSON button on these pages gives the same shape as the API.
Loading…
Endpoints
GET /api/v1/summary | Headline figures now, or as they stood at any past moment (at=). | Try it |
GET /api/v1/contests?status=closed | Every contest since launch: running, upcoming, paying, paid; pool, times, entries, prizes redeemed. | Try it |
GET /api/v1/contests/{id}/ledger | One contest: its pool, each kind of prize owed and redeemed so far, each payout and its transaction. | |
GET /api/v1/schedule | What is planned: contest closes and opens, the next loyalty payment. | Try it |
GET /api/v1/payouts?contestId= | Prizes won but not paid yet: when each becomes available (unlock, review hold) and those awaiting claim. Per contest and kind. | Try it |
GET /api/v1/flows?from=&to=&bucket=day | Spent on play, paid in prizes, burned from platform income, and the KOTS price, per minute, hour, day or week. | Try it |
GET /api/v1/funds?from=&to=&bucket=day | Treasury, running pools, loyalty fund, prizes not yet redeemed: now and as a history. | Try it |
GET /api/v1/loyalty/runs | Each month's loyalty reward, with the digests of its published input and output. | Try it |
GET /api/v1/events?after=&from=&type=&nonzero=1&format=csv | The event log, from any sequence number or date, by type, as JSON or CSV. | Try it |
GET /api/v1/events/{seq} | One event, by its number: a stable URL to cite or hand to an AI agent. | |
GET /api/v1/patterns?from=&to=&tz=-240 | Game activity (spending on play, also per kind, prizes paid, burns from platform income) by hour of the day and day of the week, in any time zone (tz = minutes from UTC). Pool trades are not included. | Try it |
GET /api/v1/archive/{yyyy-mm}.jsonl.gz | Every event of one month in one file. Closed months never change. | |
GET /api/v1/stream?after= | The same events pushed live (Server-Sent Events). Reconnect with the last number and miss nothing. |
One event
{
"seq": 1840221,
"type": "payout",
"kind": "voter_share",
"at": "2026-10-11T23:24:37.000Z",
"atMs": 1791761077000,
"contestId": 411,
"kots": "1204.000000000",
"tx": "2dPx…aV7c"
}
Open to people, scripts and AI agents
No key, no sign-up, CORS open to every site: any program, notebook or AI agent can read these URLs directly. Every JSON shown on these pages comes with its URL.
Time
The pages show times relative to now and keep them moving. The data always carries the moment itself: at in UTC (ISO 8601) and atMs, milliseconds since 1970. Query times accept either.
How the data is released
Each event is published as soon as it is final, to the API, the stream and these pages at the same moment. Each has a sequence number, so a client can tell it missed nothing, and payments carry their Solana transaction. History is never rewritten: a correction is a new event.
KOTS amounts are strings with nine decimals. No wallet address is ever included.
Rate limit: 60 requests a minute per address. For live data, use the stream rather than polling.
Totals only: no wallet address is shown here. Each payment can be checked on Solana through its transaction.
Data only. Nothing here is advice, a forecast or an offer. Figures come from kingoftheshill.com and the Solana chain.