---
title: "Roll back to a version"
method: POST
path: "/v1/templates/{template_id}/rollback"
tags: ["Templates"]
---

# Roll back to a version

`POST /v1/templates/{template_id}/rollback`

## Request

- Base URL: `https://api-eu.dynamicdocumentapi.com`
- URL: `https://api-eu.dynamicdocumentapi.com/v1/templates/{template_id}/rollback`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Points `live_version` at an existing version. Nothing is re-rendered and no new version is created.

## Path parameters

- `template_id` string, required

## Headers

- `Idempotency-Key` string

## Request body

- TemplateRollback
  - `version` union, required: Version number (`7`) or a `tv_…` id.
    - integer
    - string

## Response `200`

- ManagedTemplate: `POST /v1/templates` and `POST /v1/templates/{id}/rollback`. The read endpoints (`GET /v1/templates*`) answer from the regional mirror and use the `Template` schema; this is the control-plane representation, which also carries the draft revision.
  - `created_at` string, date-time, required
  - `default_options` object, nullable, required: Output options of the live version.
  - `deleted_at` string, date-time, nullable, required
  - `description` string, required
  - `draft_revision` integer, required
  - `engine` string, required: Engine channel, e.g. `2026.4`.
  - `folder` TemplateFolder, required
    - `id` string, required
    - `name` string, required
  - `id` string, required: `tpl_…`
  - `live_version` TemplateWriteVersion, required
    - `id` string, required
    - `note` string, required
    - `number` integer, required
    - `published_at` string, date-time, nullable, required
  - `name` string, required
  - `object` string
  - `tags` string[], required
  - `thumbnail_url` string, uri, nullable, required
  - `type` 'pdf_code' | 'pdf_markdown' | 'image_canvas' | 'docx' | 'pdf_form', required: * `pdf_code` - pdf_code * `pdf_markdown` - pdf_markdown * `image_canvas` - image_canvas * `docx` - docx * `pdf_form` - pdf_form
  - `updated_at` string, date-time, required

## Other responses

- `400`: Invalid request body (`errors[]` with JSON pointers).
- `401`: Missing, invalid, expired or revoked credentials.
- `403`: Insufficient scope, IP not allowed, workspace suspended or scheduled for deletion, or email not verified.
- `404`: Template or version not found.
- `410`: Template deleted.
- `429`: Rate limited (`Retry-After`).
- `503`: The control plane is unreachable (`Retry-After`).

---

[API](https://skmtc.dev/dynamicdocumentapi/apis/dynamic-document-api.md) · [All operations](https://skmtc.dev/dynamicdocumentapi/apis/dynamic-document-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dynamicdocumentapi/apis/dynamic-document-api/revisions/0f14bc0000f4?raw)
