---
title: "Restore a historical dashboard version"
method: POST
path: "/api/dashboards/restore"
tags: ["Dashboards"]
---

# Restore a historical dashboard version

`POST /api/dashboards/restore`

## Request

- Base URL: `https://pluto-api.trainy.ai`
- URL: `https://pluto-api.trainy.ai/api/dashboards/restore`
- Auth: HTTP bearer

Copies a historical name/config snapshot into the dashboard and appends a new immutable head version.

## Request body

- RestoreDashboardVersionRequest
  - `viewId` string, required
  - `version` integer, required
  - `expectedUpdatedAt` string, date-time, required: Optimistic-concurrency guard from the current dashboard details response

## Response `200`

Dashboard version restored as a new current version

- RestoreDashboardVersionResponse
  - `id` string, required
  - `name` string, required
  - `projectName` string, required
  - `isDefault` boolean, required
  - `currentVersion` integer, required
  - `restoredFromVersion` integer, required
  - `config` object, required
  - `updatedAt` string, required
  - `url` string, required

## Other responses

- `400`: The selected version is already current
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Dashboard or version not found
- `409`: Name conflict or stale expectedUpdatedAt
- `422`: Stored version config failed validation

---

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