---
title: "Returns daily benchmark percentiles for a metric, comparing a universe against other experiences on Roblox."
method: POST
path: "/analytics-benchmark/v1/universes/{universeId}/benchmarks"
tags: ["Analytics"]
---

# Returns daily benchmark percentiles for a metric, comparing a universe against other experiences on Roblox.

`POST /analytics-benchmark/v1/universes/{universeId}/benchmarks`

## Request

- Base URL: `https://apis.roblox.com`
- URL: `https://apis.roblox.com/analytics-benchmark/v1/universes/{universeId}/benchmarks`
- Auth: one of:
  - API key in header `x-api-key`
  - OAuth 2
    - Authorization code: `https://apis.roblox.com/oauth/v1/authorize`
    - Token URL: `https://apis.roblox.com/oauth/v1/token` scopes: `universe.analytics:read`

See [Analytics Guide](https://create.roblox.com/docs/cloud/guides/analytics) for more information.

## Path parameters

- `universeId` integer, required

## Request body

- BenchmarkQuery: BenchmarkQuery is the request object for the benchmark query.
  - `metric` string: The metric to benchmark, such as `ForwardD1Retention`, using the same metric names as the Analytics Query API. Metrics without benchmark data return no data points.
  - `startTime` string: The start of the date range, inclusive. Required. Each benchmark value has a midnight UTC date, so a start time later in the day excludes that day.
  - `endTime` string: The end of the date range, inclusive. Required. For `/v1/universes/{universe_id}/benchmarks`, it must not be earlier than `start_time`, and must be at most 400 days after it.
  - `filter` BreakdownFilter[]: Dimension filters. Only applied to `BENCHMARK_TYPE_TOP_EXPERIENCES` benchmarks, and ignored otherwise. Filter values without benchmark data return no data points.
    - `dimension` string: The name of the dimension.
    - `value` string: The value of the dimension.
  - `benchmarkType` 'BENCHMARK_TYPE_INVALID' | 'BENCHMARK_TYPE_GENRE' | 'BENCHMARK_TYPE_SIMILARITY' | 'BENCHMARK_TYPE_TOP_EXPERIENCES', string: BenchmarkType is to store the type of benchmark. `BENCHMARK_TYPE_SIMILARITY` compares against experiences with similar players. `BENCHMARK_TYPE_GENRE` compares against experiences in the same genre, or against all experiences when the universe has no genre or its genre doesn't qualify for genre benchmarks. `BENCHMARK_TYPE_TOP_EXPERIENCES` compares against the top experiences on Roblox, and is the only type for `DailyActiveUsers`, `DailyRevenue`, `MonthlyActiveUsers`, `PayingUsers`, `TotalPlayTimeHours`, `UniqueAbuseReportSubmittersPer1000PlaytimeHours`, and `Visits`.
  - `percentiles` integer[]: The percentiles to return, each between 0 and 100, with at most 10 values. Defaults to 50 and 90, or 10 and 50 when lower values are favorable. Percentiles without benchmark data return no data points. Ignored for `BENCHMARK_TYPE_TOP_EXPERIENCES` benchmarks, which return a single percentile chosen from the universe's own average over the last 30 days, or a fixed percentile for some metrics.
  - `benchmarkVariantId` string: The metric variant to benchmark. The only supported value is `l7_average`, which benchmarks the 7-day rolling average of `metric`. Not every metric has this variant, and the API rejects requests for metrics without it. Omit to benchmark `metric` itself.

## Response `200`

OK

- QueryUniverseBenchmarkResponse: QueryUniverseBenchmarkResponse is the response message for QueryUniverseBenchmark.
  - `result` QueryBenchmarkResult: QueryBenchmarkResult is the response object for the benchmark query.
    - `values` MetricValue[]: The benchmark series, one per percentile.
      - `breakdownValue` BreakdownValue[]: The dimensions identifying the series. Always includes a `Percentile` dimension. `BENCHMARK_TYPE_TOP_EXPERIENCES` series also include the requested filters.
        - `dimension` string: The name of the dimension.
        - `value` string: The value of the dimension.
        - `displayValue` string: A display name for `value`. Not set in benchmark results.
      - `dataPoints` DataPoint[]: The data points for the breakdown.
        - `time` string: The date of the benchmark value.
        - `value` number, double: The benchmark value, in the metric's units.
        - `metadata` DataPointMetadata: DataPointMetadata metadata for a data point.
          - `benchmarkType` 'BENCHMARK_TYPE_INVALID' | 'BENCHMARK_TYPE_GENRE' | 'BENCHMARK_TYPE_SIMILARITY' | 'BENCHMARK_TYPE_TOP_EXPERIENCES', string: BenchmarkType is to store the type of benchmark. `BENCHMARK_TYPE_SIMILARITY` compares against experiences with similar players. `BENCHMARK_TYPE_GENRE` compares against experiences in the same genre, or against all experiences when the universe has no genre or its genre doesn't qualify for genre benchmarks. `BENCHMARK_TYPE_TOP_EXPERIENCES` compares against the top experiences on Roblox, and is the only type for `DailyActiveUsers`, `DailyRevenue`, `MonthlyActiveUsers`, `PayingUsers`, `TotalPlayTimeHours`, `UniqueAbuseReportSubmittersPer1000PlaytimeHours`, and `Visits`.
          - `genre` string: The genre compared against, set for `BENCHMARK_TYPE_GENRE` data points. `general` means all experiences.
  - `availableTypes` BenchmarkType[]: The benchmark types available for this universe and metric. Request one with `benchmark_type`.
  - `objective` 'BENCHMARK_OBJECTIVE_INVALID' | 'BENCHMARK_OBJECTIVE_MAXIMIZE' | 'BENCHMARK_OBJECTIVE_MINIMIZE', string: BenchmarkObjective describes which direction is favorable for a metric.

## Other responses

- `default`: Error

## Changes

- **2026-10-22** `36bd1650f8f5`: 1 info
  - api tag `Analytics` added
- **2026-10-21** `ff290d96e136`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/roblox/apis/roblox-api/changes/analytics-benchmark/v1/universes/:universeId/benchmarks/post.md)

---

[API](https://skmtc.dev/roblox/apis/roblox-api.md) - [All operations](https://skmtc.dev/roblox/apis/roblox-api/llms.txt) - [OpenAPI document](https://skmtc.dev/roblox/apis/roblox-api/revisions/bcfdc20689cd?raw)
