Skip to content

delete_dashboard

Retire a dashboard by its canonical slug. Parameters, the deletion ordering, the degraded return variants, errors and scope.

Retires a dashboard. The public URL stops resolving, the dashboard leaves the app, and the stored bytes are removed. The database row is preserved internally so the deletion can be audited or reversed out of band; do not offer this as end-user undo. Deleting a slug frees that name for a fresh publish.

To roll a body back to an earlier snapshot without retiring the dashboard, use restore_dashboard_version instead.

Behaviour hints for clients: not read-only, destructive, not open-world.

Parameters

ParameterTypeRequiredNotes
slugstringyesThe canonical slug. Aliases left by earlier renames are rejected.

There is no workspace argument. A workspace-authorized connection deletes that workspace's dashboards.

Returns

Deleted dashboard for mickey.
Slug: revenue-overview
URL https://mickey.dashies.xyz/revenue-overview now 404s.
Aliases tombstoned: 1
R2 objects removed: 3
Version snapshots purged: 7

Deletion runs database-first, then best-effort cleanup: soft-delete the row, purge versions, delete the stored prefix, then garbage-collect per-version objects. A cleanup step that does not finish replaces its line rather than failing the call:

Note: R2 cleanup didn't finish - some object bytes may linger (not user-visible). Error: <err>
Version snapshots: purge failed (rows may remain, swept later). Error: <err>

Both of those mean the dashboard is deleted and its URL does 404. What lingers is invisible storage that a later sweep collects.

Errors

The shared slug rules, plus a rejection when you pass an alias rather than the canonical slug:

delete rejected: <msg>

The message names the current canonical slug, so the recovery is to re-issue the call with it.

Scope

Workspace-capable. A workspace dashboard's stored objects live under a workspace-scoped prefix, and the receipt labels the target the <workspace> workspace.

Check it worked

Load the URL the receipt printed. It should return 404. Then run list_dashboards and confirm the slug is gone, since the list excludes soft-deleted rows.

Last updated 2026-08-04