Open Cloud Analytics Query API Is Live (Beta) — Tested, Documented, With a Client

Open Cloud Analytics Query API Is Live (Beta) — Tested, Documented, With a Client

I recently noticed that Roblox has published documentation for an Open Cloud Analytics Query API. I could not find a corresponding public announcement, so I tested the API against one of my own experiences on July 24, 2026.

It worked. I successfully queried historical aggregated metrics and received real data from that experience. I have not yet confirmed whether the Beta is available to every creator account.

Authentication

Create a dedicated API key for the target experience with only the following permission:

System: universe-analytics
Operation: universe.analytics:read

Minimal working request

curl --location \
  "https://apis.roblox.com/analytics-query-api/v1/universes/UNIVERSE_ID/metrics" \
  --header "x-api-key: API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "metric": "DailyActiveUsers",
    "granularity": "OneDay",
    "startTime": "2026-05-01T00:00:00Z",
    "endTime": "2026-07-24T00:00:00Z"
  }'

startTime is inclusive and endTime is exclusive. Results are bucketed in UTC.

Example response shape, with the operation ID shortened:

{
  "path": "v1/universes/UNIVERSE_ID/operations/metrics/OPERATION_ID",
  "done": true,
  "metadata": {
    "createdTime": "2026-07-24T00:00:00Z"
  },
  "response": {
    "values": [
      {
        "breakdowns": [],
        "dataPoints": [
          {
            "time": "2026-05-28T00:00:00Z",
            "value": 4
          }
        ]
      }
    ]
  }
}

The sample value above comes from a small test experience and is included only to demonstrate that the endpoint returns real historical data.

One observed detail: in my test, dates with no activity were omitted instead of being returned as explicit zero-value data points. Consumers requiring a continuous series should handle missing buckets according to each metric’s semantics rather than automatically treating them as zero. This is observed behavior, not a guarantee.

Supported analytics

Roblox now maintains an extensive official table of supported metrics, granularities, retention periods and compatible dimensions:

It currently covers retention, engagement, monetization, acquisition, performance and stability, economy events, funnels, custom events, thumbnails, advertising and other product areas. Because compatibility and retention vary by metric, the official table should be treated as the source of truth rather than a copied list in this post.

Many standard metrics currently retain up to 1,468 days (4 years), while many performance and stability metrics retain only 28 days. Other metrics use different windows, including 90 or 365 days, so the official table should be checked before designing a collection schedule.

Long-running queries

Most small queries complete immediately with done: true. Larger requests can return 202 Accepted with done: false and a path to poll. Use the returned path rather than constructing it from assumptions.

The API reference currently documents 30 initial POST queries per minute per API-key owner and 3,000 operation-polling GET requests per minute per owner.

Open-source client

I published a small unofficial Python client that provides:

  • environment-variable authentication;
  • generic metric and dimension-value queries;
  • automatic polling of long-running operations;
  • JSON and CSV export;
  • examples for common analytics queries.

Repository:

kentiq/roblox-analytics-query

Why this matters

This enables external dashboards, scheduled reports, retention alerts, LiveOps monitoring, thumbnail analysis and analytics-assisted experimentation without manually copying values from Creator Dashboard.

The API is marked Beta, so behavior, schemas and supported metrics may change.

Official documentation:

Has anyone seen an official announcement for this release, or tested it across other experiences yet?

The documentation is pretty sparse on whether this is rolled out to everyone yet. If it’s still in Beta, there might be some permission or account-level restrictions that aren’t mentioned in the official docs.