---
title: "Deletes a dashboard."
method: POST
path: "/analytics-custom-dashboards/v1/universes/{universeId}/custom-dashboards/{dashboardId}/delete"
tags: ["Analytics"]
---

# Deletes a dashboard.

`POST /analytics-custom-dashboards/v1/universes/{universeId}/custom-dashboards/{dashboardId}/delete`

## Request

- Base URL: `https://apis.roblox.com`
- URL: `https://apis.roblox.com/analytics-custom-dashboards/v1/universes/{universeId}/custom-dashboards/{dashboardId}/delete`
- 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:write`

## Path parameters

- `universeId` integer, required
- `dashboardId` string, required

## Request body

- object
  - `expectedHeadEtag` string, nullable

## Response `200`

OK

- DeleteDashboardResponse
  - `metadata` union: DashboardMetadata is the metadata-only shape returned by list calls. It intentionally omits the document body so list views do not load dashboard payloads.
    - DashboardMetadata: DashboardMetadata is the metadata-only shape returned by list calls. It intentionally omits the document body so list views do not load dashboard payloads.
      - `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.
    - unknown

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `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/:dashboardId/delete/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/c2ba38e6ba62?raw)
