Endpoints
Windows · macOS · Android · home
Every endpoint. All are GET unless marked otherwise, and none of
the GETs change anything. {platform} is one of
windows, macos, android.
| Endpoint | Answers |
|---|---|
/api/v1 | A machine-readable index of this list. |
/api/v1/platforms | Every tracked platform, with its live version. One call. |
/api/v1/{platform}/version | Current version and its release time. |
/api/v1/{platform}/current | Which build to use, plus a download URL. |
/api/v1/{platform}/files | Every file this server holds for it. |
/api/v1/{platform}/files/{version} | One of them. |
/api/v1/{platform}/history | Version history, newest first. |
/api/v1/{platform}/status | Everything the platform page shows. |
/api/v1/{platform}/offsets | Versions with published offsets. See Offsets. |
/download/{platform}/{version} | The file itself. See Downloading files. |
/healthz | Whether the tracker itself is working. |
POST /internal/poll | Operator-only. Forces a poll cycle. |
POST /internal/offsets/{platform}/{version} | Operator-only. Publishes a dump. |
GET /api/v1/platforms
The whole site in one request. Use this rather than three calls to
/version when you want a dashboard.
curl -s https://rbxoffsets.com/api/v1/platforms
{
"site": "rbxoffsets",
"platforms": [
{
"platform": "windows",
"label": "Windows",
"slug": "windows",
"version": "version-ddf602d9cfe44005",
"displayVersion": "0.734.0.7340917",
"releasedAt": "2026-08-12T16:00:13.000Z",
"storedFiles": 3,
"offsets": { "supported": true, "versions": 5 },
"links": { "page": "https://rbxoffsets.com/windows", "version": "...", "offsets": "..." }
}
]
}
GET /api/v1/{platform}/version
The question this API exists for: what is the current version, and when did it arrive? Cheap — it reads the database and makes no outbound request.
curl -s https://rbxoffsets.com/api/v1/windows/version
{
"platform": "windows",
"label": "Windows",
"version": "version-ddf602d9cfe44005",
"displayVersion": "0.734.0.7340917",
"versionCode": null,
"releasedAt": "2026-08-12T16:00:13.000Z",
"releasedAtEpochMs": 1786550413000,
"ageSeconds": 259200,
"firstSeenAt": "2026-08-12T16:03:09.000Z",
"previousVersion": "version-91c4a0e8b7d24f13",
"installable": true,
"abis": [],
"stored": true,
"download": "https://rbxoffsets.com/download/windows/version-ddf602d9cfe44005",
"sha256": "9f2c...",
"sizeBytes": 133904975,
"offsets": { "supported": true, "versions": 5, "url": "https://rbxoffsets.com/api/v1/windows/offsets" },
"checkedAt": "2026-08-18T09:04:00.000Z"
}
| Field | Meaning |
|---|---|
version | What Roblox production is serving, as its identity. null before the first successful poll. See the identity note. |
displayVersion | The dotted version for humans. Not unique across platforms or binary types. |
versionCode | Android's own integer version. Always null on desktop, which has no such concept. |
releasedAt | When this build went live. Recorded by WEAO where available; otherwise it is when this tracker first observed it, accurate to roughly one poll interval (60s). |
firstSeenAt | When the build first appeared at all. On Android usually earlier than releasedAt, because builds are staged on the mirror before production adopts them. On desktop the two are close together. |
installable | Android: whether the build was verified to carry a x86_64 library. False is a real state, not an error. Desktop: whether a copy is stored here. |
abis | Android only. Always [] on desktop. |
stored | Whether /download/{platform}/{version} will serve this exact version. |
offsets | supported: false means the platform will never have them (macOS today), not that none have been published yet. |
GET /api/v1/{platform}/current
Different question, and the important distinction on this page:
/version reports what Roblox released; /current
reports what you should use.
They usually match. On Android, when the newest release ships no
x86_64 artifact they do not, and this endpoint
deliberately answers with the newest build that is installable, explaining itself in
heldBack. On desktop there is no such ambiguity, so it always answers with
production.
It resolves a live download URL, so it is slower and may reach out to upstream. Pass
?url=false for the decision without the URL.
curl -s "https://rbxoffsets.com/api/v1/android/current"
{
"platform": "android",
"version": "2.734.917",
"displayVersion": "2.734.917",
"versionCode": 273491700,
"kind": "apk",
"fileName": "roblox-2.734.917.apk",
"url": "https://<account>.r2.cloudflarestorage.com/...",
"urlExpiresAt": 1786554013000,
"source": "r2",
"sha256": "9f2c...",
"sizeBytes": 231014912,
"abis": ["armeabi-v7a", "arm64-v8a", "x86", "x86_64"],
"targetAbi": "x86_64",
"isProduction": true,
"heldBack": null,
"downloadPath": "https://rbxoffsets.com/download/android/2.734.917"
}
| Field | Meaning |
|---|---|
kind | apk for a single universal Android file, xapk for a split bundle, zip for a desktop package. They are installed differently. |
url | A direct link, time-limited when it points at our storage. Do not cache it — see Downloading files. |
source | r2 = this project's own copy. mirror = the public Android mirror. roblox = Roblox's setup CDN, used for a desktop build we have not archived. |
sha256 | Non-empty only when source is r2. An empty string means UNPINNED: log it, do not treat it as verified. |
heldBack | null normally. Otherwise an object with newestVersion and reason, meaning a newer release exists and was skipped on purpose. Android only. |
GET /api/v1/{platform}/files
The inventory. Only versions in this list can be downloaded from this server; older ones are pruned as new builds land (5 kept per platform). Offsets are never pruned.
{
"platform": "windows",
"count": 2,
"latest": "version-ddf602d9cfe44005",
"archiveEnabled": true,
"retainVersions": 5,
"files": [
{
"platform": "windows",
"version": "version-ddf602d9cfe44005",
"displayVersion": "0.734.0.7340917",
"versionCode": null,
"kind": "zip",
"fileName": "RobloxApp.zip",
"sizeBytes": 133904975,
"sha256": "9f2c...",
"storedAt": "2026-08-12T16:09:55.000Z",
"isProduction": true,
"isLatest": true,
"path": "/download/windows/version-ddf602d9cfe44005",
"url": "https://rbxoffsets.com/download/windows/version-ddf602d9cfe44005",
"abis": []
}
]
}
GET /api/v1/{platform}/files/{version}
One entry, in the same shape as an element of files. latest is
accepted in place of a version. A tracked-but-unstored version answers 404 with
a reason saying which kind of "no" it is.
curl -s https://rbxoffsets.com/api/v1/mac/files/latest
GET /api/v1/{platform}/history?limit=N
Recent versions, newest first. limit defaults to 10, maximum 50. Desktop
history begins when this server first polled — see the note on
the contents page.
curl -s "https://rbxoffsets.com/api/v1/windows/history?limit=5"
GET /api/v1/{platform}/status
The whole picture for one platform in one object: production, builds in flight, the newest usable build, stored files, and recent events. This is what the platform pages render. Useful for a dashboard; heavier than an updater needs.
GET /healthz
Answers 200 when the poll loop is running and 503 when it has
stalled — a dead tracker reports unhealthy rather than cheerfully serving a version number
that stopped updating three days ago. Point an uptime monitor here.
{"ok": true, "uptimeSeconds": 84213, "platforms": ["windows","mac","android"], "poll": {"stalled": false}}
POST /internal/poll
Operator-only, always requires the token. Forces a poll cycle immediately across every tracked platform. Listed here for completeness; a client should never call it.
POST /internal/offsets/{platform}/{version}
Operator-only. How a dump gets published. Covered on the Offsets page.