---
title: "Move Widget"
method: POST
path: "/api/v1/dashboards/{dashboard_id}/widgets/{widget_id}/move"
tags: ["dashboards"]
---

# Move Widget

`POST /api/v1/dashboards/{dashboard_id}/widgets/{widget_id}/move`

Move a widget to another dashboard (same or different tab).

Reassigns the widget's ``dashboard_id`` and gives it a fresh grid
``position`` on the destination (preserving its ``w``/``h``). The
``DashboardTemplateSync`` LEDGER IS NEVER TOUCHED: it is a per-``(dashboard,
template)`` tombstone with no ``widget_id`` (and many widgets can share a
``source_ref``), so repointing it would delete the source tombstone and
cause the re-seed we prevent. The moved ``Widget`` records its own
destination presence; the source tombstone stays as immutable history.

## Path parameters

- `dashboard_id` string, uuid, required
- `widget_id` string, uuid, required

## Request body

- WidgetMoveRequest — Relocate a widget to another dashboard (same or different tab). A dedicated action — ``update_widget`` is path-scoped and 404s a cross-dashboard write.
  - `destination_dashboard_id` string, uuid, required

## Response `200`

Successful Response

- WidgetRead
  - `id` string, uuid, required
  - `dashboard_id` string, uuid, required
  - `title` string, required
  - `viz_type` 'line' | 'bar' | 'pie' | 'number' | 'pivot' | 'logs_table' | 'heatmap', required
  - `config` object, required
  - `position` object, required
  - `is_system` boolean
  - `source_kind` 'system' | 'user', nullable
  - `source_ref` string, nullable
  - `source_config_snapshot` object, nullable
  - `source_viz_snapshot` 'line' | 'bar' | 'pie' | 'number' | 'pivot' | 'logs_table' | 'heatmap'
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `404` — Not found
- `422` — Validation Error

## Changes

- **2026-09-03** `d65b8fefae34` — 2 info
  - added the optional property `detail/items/ctx` to the response with the `422` status
  - added the optional property `detail/items/input` to the response with the `422` status

[Change history](https://skmtc.dev/getanana/apis/cleon-api/changes/api/v1/dashboards/:dashboard_id/widgets/:widget_id/move/post.md)

---

[API](https://skmtc.dev/getanana/apis/cleon-api.md) · [All operations](https://skmtc.dev/getanana/apis/cleon-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/getanana/cleon-api/revisions/d65b8fefae34/schema)
