Endpoints

com.roblox.client · target ABI x86_64 · status page

Every endpoint. All are GET unless marked otherwise, and none of them change anything.

EndpointAnswers
/api/v1A machine-readable index of this list.
/api/v1/android/versionCurrent version and its release time.
/api/v1/android/currentWhich build to install, plus a download URL.
/api/v1/android/filesEvery APK this server holds.
/api/v1/android/files/{version}One of them.
/api/v1/android/historyVersion history, newest first.
/api/v1/android/statusEverything the status page shows.
/download/{version}The file itself. See Downloading files.
/healthzWhether the tracker itself is working.

GET /api/v1/android/version

The question this API exists for: what is the current Roblox Android version, and when did it arrive? Cheap — it reads the database and makes no outbound request.

curl -s https://robloxandriod.com/api/v1/android/version
{
  "package": "com.roblox.client",
  "targetAbi": "x86_64",
  "version": "2.734.917",
  "versionCode": 273491700,
  "releasedAt": "2025-08-14T17:02:41.000Z",
  "releasedAtEpochMs": 1755190961000,
  "ageSeconds": 259200,
  "firstSeenAt": "2025-08-14T16:31:09.000Z",
  "previousVersion": "2.734.612",
  "installable": true,
  "abis": ["armeabi-v7a", "arm64-v8a", "x86", "x86_64"],
  "stored": true,
  "download": "/download/2.734.917",
  "checkedAt": "2025-08-17T21:04:00.000Z"
}
FieldMeaning
versionWhat Roblox production is serving. null before the first successful poll.
versionCodeAndroid's own integer version. null when the mirror never exposed it.
releasedAtWhen this version was first observed live in production. Not Roblox's internal build time, which is published nowhere; it is accurate to roughly one poll interval (60s).
firstSeenAtWhen the build first appeared at all, usually earlier — builds are staged on the mirror before production adopts them.
ageSecondsSeconds since releasedAt. Convenience only.
installableWhether this build was verified to carry a x86_64 library. False is a real state, not an error — see Failures.
storedWhether /download/{version} will serve this exact version.
downloadPath to fetch it, or null when not stored.

GET /api/v1/android/current

Different question, and the important distinction on this page: /version reports what Roblox released; /current reports what you should install. They usually match. When the newest release ships no x86_64 artifact, they do not, and this endpoint deliberately answers with the newest build that is installable.

It resolves a live download URL, so it is slower and may reach out to the mirror. Pass ?url=false for the decision without the URL.

curl -s "https://robloxandriod.com/api/v1/android/current"
{
  "version": "2.734.917",
  "versionCode": 273491700,
  "kind": "apk",
  "url": "https://<account>.r2.cloudflarestorage.com/...",
  "urlExpiresAt": 1755194561000,
  "source": "r2",
  "sha256": "9f2c...",
  "sizeBytes": 231014912,
  "abis": ["armeabi-v7a", "arm64-v8a", "x86", "x86_64"],
  "targetAbi": "x86_64",
  "isProduction": true,
  "heldBack": null
}
FieldMeaning
kindapk for a single universal file, xapk for a split bundle. They install differently.
urlA direct, time-limited link. Do not cache it — see Downloading files.
sourcer2 when it points at this project's own copy, mirror when it points at the public mirror.
sha256Non-empty only when source is r2. An empty string means UNPINNED: log it, do not treat it as verified.
heldBacknull normally. Otherwise an object with newestVersion and reason, meaning a newer release exists and was skipped on purpose.

GET /api/v1/android/files

The inventory. Only versions in this list can be downloaded from this server; older ones are pruned as new builds land (5 kept).

{
  "count": 2,
  "targetAbi": "x86_64",
  "latest": "2.734.917",
  "files": [
    {
      "version": "2.734.917",
      "versionCode": 273491700,
      "kind": "apk",
      "fileName": "roblox-2.734.917.apk",
      "sizeBytes": 231014912,
      "sha256": "9f2c...",
      "storedAt": "2025-08-14T17:09:55.000Z",
      "isProduction": true,
      "isLatest": true,
      "path": "/download/2.734.917",
      "url": "https://robloxandriod.com/download/2.734.917",
      "abis": ["armeabi-v7a", "arm64-v8a", "x86", "x86_64"]
    }
  ]
}

GET /api/v1/android/files/{version}

One entry, in the same shape as an element of files. latest is accepted in place of a version number. A tracked-but-unstored version answers 404 with a reason saying which kind of "no" it is.

curl -s https://robloxandriod.com/api/v1/android/files/latest

GET /api/v1/android/history?limit=N

Recent versions, newest first. limit defaults to 10, maximum 50.

curl -s "https://robloxandriod.com/api/v1/android/history?limit=5"

GET /api/v1/android/status

The whole picture in one object: production, builds in flight, the newest installable build, and recent events. This is what the status page renders. 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, "poll": {"stalled": false}}

POST /internal/poll

Operator-only, always requires the token. Forces a poll cycle immediately. Listed here for completeness; a client should never call it.