---
title: "Lists dashboard metadata for a universe."
method: GET
path: "/analytics-custom-dashboards/v1/universes/{universeId}/custom-dashboards"
tags: ["Analytics"]
---

# Lists dashboard metadata for a universe.

`GET /analytics-custom-dashboards/v1/universes/{universeId}/custom-dashboards`

## Request

- Base URL: `https://apis.roblox.com`
- URL: `https://apis.roblox.com/analytics-custom-dashboards/v1/universes/{universeId}/custom-dashboards`
- Auth: one of:
  - API key in cookie `.ROBLOSECURITY`
  - 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.dashboard:read`

## Path parameters

- `universeId` integer, required

## Query parameters

- `pageSize` integer
- `pageToken` string

## Response `200`

OK

- ListDashboardsResponse
  - `dashboards` DashboardMetadata[], nullable
    - `dashboardId` string, nullable
    - `universeId` string, nullable: Signed 64-bit integer encoded as a decimal string.
    - `name` string, nullable
    - `description` string, nullable
    - `lifecycleState` union: DashboardLifecycleState describes whether a dashboard is visible to normal reads.
      - union
        - 'DASHBOARD_LIFECYCLE_STATE_INVALID' | 'DASHBOARD_LIFECYCLE_STATE_ACTIVE' | 'DASHBOARD_LIFECYCLE_STATE_DELETED'
        - integer
      - unknown
    - `isPinned` boolean, nullable
    - `pinnedTime` union
      - string, date-time
      - unknown
    - `createdTime` union
      - string, date-time
      - unknown
    - `createdBy` union: DashboardActor identifies a user responsible for creating or mutating dashboard state.
      - DashboardActor: DashboardActor identifies a user responsible for creating or mutating dashboard state.
        - `userId` string, nullable: Signed 64-bit integer encoded as a decimal string.
      - unknown
    - `updatedTime` union
      - string, date-time
      - unknown
    - `updatedBy` union: DashboardActor identifies a user responsible for creating or mutating dashboard state.
      - DashboardActor: DashboardActor identifies a user responsible for creating or mutating dashboard state.
        - `userId` string, nullable: Signed 64-bit integer encoded as a decimal string.
      - unknown
    - `publishedTime` union
      - string, date-time
      - unknown
    - `publishedBy` union: DashboardActor identifies a user responsible for creating or mutating dashboard state.
      - DashboardActor: DashboardActor identifies a user responsible for creating or mutating dashboard state.
        - `userId` string, nullable: Signed 64-bit integer encoded as a decimal string.
      - unknown
    - `deletedTime` union
      - string, date-time
      - unknown
    - `deletedBy` union: DashboardActor identifies a user responsible for creating or mutating dashboard state.
      - DashboardActor: DashboardActor identifies a user responsible for creating or mutating dashboard state.
        - `userId` string, nullable: Signed 64-bit integer encoded as a decimal string.
      - unknown
    - `headEtag` string, nullable: Optimistic concurrency token for metadata, publish, and delete mutations.
    - `latestPublishedDocumentId` string, nullable: Identifier for the latest persisted dashboard document. Latest-only content wins; older document payloads are not exposed for backend restore.
    - `latestPublishedVersion` string, nullable: Monotonically increasing version for latest persisted content.
  - `nextPageToken` string, nullable
  - `capabilities` union: Capabilities and limits for the calling user in `ListDashboardsRequest.universe_id`. Identical to what `GetDashboardCapabilities` returns for the same caller and universe; both are populated by one shared implementation. Present on every page so a manage page does not need a second round trip.
    - DashboardCapabilities: DashboardCapabilities describes what the calling creator may do in a universe and the limits the service enforces on writes. Limits can change without a client update. Open Cloud credential scopes are enforced separately by API Gateway. These booleans describe creator permissions, not credential scopes.
      - `universeId` string, nullable: Signed 64-bit integer encoded as a decimal string.
      - `canCreate` boolean, nullable: True when the caller may create a new dashboard in this universe.
      - `canEdit` boolean, nullable: True when the caller may change dashboard metadata.
      - `canPublish` boolean, nullable: True when the caller may replace a dashboard's published document.
      - `canDelete` boolean, nullable: True when the caller may soft-delete a dashboard.
      - `limits` union: DashboardLimits mirrors the write-time caps enforced by this service. Values are resolved per request, so they reflect the current runtime configuration rather than the values present at deploy time. A limit of 0 means the cap is disabled and the service does not enforce it. Clients should treat these as upper bounds and may apply a stricter presentation limit of their own; the effective cap for a client is the minimum of the two.
        - DashboardLimits: DashboardLimits mirrors the write-time caps enforced by this service. Values are resolved per request, so they reflect the current runtime configuration rather than the values present at deploy time. A limit of 0 means the cap is disabled and the service does not enforce it. Clients should treat these as upper bounds and may apply a stricter presentation limit of their own; the effective cap for a client is the minimum of the two.
          - `maxDashboardsPerUniverse` integer, nullable: Maximum active dashboards per universe, enforced by the quota guard.
          - `maxDocumentPayloadBytes` integer, nullable: Maximum encoded dashboard document payload size in bytes.
          - `maxSummaryCardsPerDashboard` integer, nullable: Maximum summary card tiles in one dashboard document.
          - `maxChartTilesPerDashboard` integer, nullable: Maximum chart tiles in one dashboard document.
          - `maxTableMetricColumns` integer, nullable: Maximum metric columns in a single table chart tile.
          - `maxDashboardNameLength` integer, nullable: Maximum dashboard name length in characters.
          - `maxDashboardDescriptionLength` integer, nullable: Maximum dashboard description length in characters.
          - `maxTileTitleLength` integer, nullable: Maximum tile title length in characters.
          - `maxPinnedDashboardsPerUniverse` integer, nullable: Maximum pinned dashboards per universe, enforced by the quota guard.
          - `maxIdempotencyKeyLength` integer, nullable: Maximum `CreateDashboardRequest.idempotency_key` length in characters accepted for a new create. Because the key is client-supplied and this cap is runtime-configurable, clients should read it here rather than assuming a fixed length. Lowering it does not invalidate keys that are already bound: those keep replaying at their original length.
        - unknown
    - unknown

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `429`: Too Many Requests
- `500`: Internal Server Error
- `503`: Service Unavailable

## Changes

- **2026-11-13** `e1e00fbc18e5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/roblox/apis/roblox-api/changes/analytics-custom-dashboards/v1/universes/:universeId/custom-dashboards/get.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/c2ba38e6ba62?raw)
