Public API
Public API
Base URL:
https://api.monkrel.cc
The API has two access levels:
- Free: no account or key required.
- Premium: send
Authorization: Bearer <api_key>to unlock licensed-game data.
Why the free tier is a few hours behind
Read this before asking me about it in Discord.
War Thunder ships a new build roughly every 30 hours — 12 of them in the last two weeks. Every one of those builds moves the offsets, and every one has to be re-scanned. And that somebody keeps alive by hand. That somebody is me. When something breaks, no machine fixes it: I sit down and fix it, usually the same day, often at night, so that the numbers you read are correct instead of plausible. On top of that there's a server, bandwidth, and an exe archive that all cost real money every month.
For a long time the free tier handed out the current build to anyone who asked, no key, no questions. What happened is what always happens: a handful of rented servers started polling it around the clock and quietly resold my work inside their own products, while paying nothing and answering to nobody. One of them tuned its polling to sit exactly under the old rate limit. That is what open-handedness gets spent on, and it is the reason this section exists.
So the free tier is now late, not crippled. Everything is still there — same offsets, same endpoints, no key required — it just arrives a few hours after the build lands. Nothing is hidden while you wait: /version tells you the new build exists and the exact minute its offsets unlock.
- Learning, experimenting, building something for yourself? The delay costs you nothing. Take your time, it's genuinely free.
- Need offsets working the hour a patch drops, because other people depend on your thing? Then you're running a service on my upkeep, and that's what the $15/month key is for. It gets you every build the moment the scan finishes, all offsets, the dev channel, and history.
That's the whole deal. I'd rather explain it once, plainly, than start blocking people.
Polling politely. Free requests are rate limited, but the limit is deliberately generous — I'd rather you poll than guess. Send If-None-Match with the ETag from your last /offsets response: if nothing changed you get a 304 with an empty body, which costs us both nothing. Please do that instead of pulling the full payload every few minutes. If the free API is switched off from the admin panel, anonymous requests return 503; keys keep working.
Old https://dash.monkrel.cc/api... API addresses are retired. They return a migration message with the replacement https://api.monkrel.cc/... URL and this docs link.
Paid tier and pricing:
https://user.monkrel.cc/docs/paid-tier
Discord contact: monkrel.
Free Endpoints
Current version
GET /api/v1/version?game=warthunder
Response:
{
"game": "warthunder",
"channel": "live",
"version": "2.57.0.35"
}
version is always the build whose offsets you can fetch right now — so it never disagrees with /offsets. When a newer build exists but is still inside the free-tier delay, a pending block is added:
{
"game": "warthunder",
"channel": "live",
"version": "2.57.0.35",
"pending": {
"latest_version": "2.57.0.36",
"detected_at": "2026-07-25T06:12:44",
"offsets_available_at": "2026-07-25T09:12:44",
"offsets_available_in": 7412,
"delay_seconds": 10800,
"reason": "Every build is re-scanned and its broken signatures fixed by hand before release; new builds unlock here a few hours after detection."
}
}
Premium responses never carry pending. Use latest_version to detect a new build early, and offsets_available_in (seconds) to schedule your next fetch.
Version history
GET /api/v1/history?game=warthunder
Free history is for the default public channel only: War Thunder live.
Current offsets
GET /api/v1/offsets?game=warthunder
Free offset responses include only the groups or individual offsets exposed by the admin panel.
Response shape:
{
"game": "warthunder",
"channel": "live",
"version": "2.57.0.35",
"count": 42,
"offsets": [
{
"group": "Global",
"name": "g_LocalPlayer",
"value": "0x12345678",
"type": "uint64"
}
]
}
Free responses add the same pending block as /version while a newer build is inside the delay window.
Every /offsets response carries a weak ETag. Send it back as If-None-Match and an unchanged payload answers 304 Not Modified with no body — the cheapest way to poll:
GET /api/v1/offsets?game=warthunder
If-None-Match: W/"3f2a…"
The tag covers the served version, the offset values and which build is pending; it deliberately ignores the offsets_available_in countdown, so it stays stable between builds.
Changelog
GET /api/v1/changelog?game=warthunder
GET /api/v1/changelog?game=warthunder&limit=10
Per-version offset diffs, newest first. Each entry compares a build against its
predecessor: added, removed, and changed (with old/new values) plus
counts. Free tier: exposed offsets only, up to the last 3 transitions, and —
since a diff carries the new build's values — the same freshness delay as
/offsets. Premium: all offsets, limit up to 20, and channel=dev.
{
"game": "warthunder",
"channel": "live",
"count": 1,
"entries": [
{
"version": "2.57.0.35",
"previous": "2.57.0.32",
"timestamp": "2026-07-01T10:00:00",
"added": [],
"removed": [],
"changed": [
{ "group": "Global", "name": "g_LocalPlayer", "old": "0x111", "new": "0x222" }
Docs API
Docs are public and can be rendered by the website or consumed directly.
GET /api/v1/docs
GET /api/v1/docs/{slug}
The old-style HTML API docs are available at:
https://dash.monkrel.cc/api_docs.html
The panel docs view is available at:
https://user.monkrel.cc/docs
Paid tier details are available at:
https://user.monkrel.cc/docs/paid-tier
Premium Additions
Premium requests use the same endpoints with an API key:
curl -H "Authorization: Bearer wtk_..." \
"https://api.monkrel.cc/api/v1/offsets?game=warthunder&channel=dev"
Premium unlocks:
- War Thunder
devchannel. - Historical offsets with
version=<build>. - All offsets for licensed games.
- Exports through
/api/v1/export. - Bindiff patch downloads through
/api/v1/patch.
Free callers receive 403 for premium-only features.
An API key whose license for the requested game has expired receives 402
instead of silently falling back to free data. The response points to
https://user.monkrel.cc/renew; remove the Authorization header to opt into
the anonymous free tier explicitly. The panel session remains usable with
free-tier data.
Error Codes
400: unknown game, channel, format, or bad query.401: invalid API key.402: the supplied API key is valid, but its license for the requested game expired.403: premium-only feature or unlicensed game.404: version, patch, or doc was not found.429: free-tier rate limit exceeded.503: free public API disabled by admin.
