# Restore an archived workflow state machine

> Writes an archived version's state machine back as the workflow's live definition, which archives it again as a new version rather than rewinding the counter…

Writes an archived version's state machine back as the workflow's live definition, which archives it again as a **new** version rather than rewinding the counter — so a task pinned to any version in between still runs on the machine it entered on.

The restore runs through the ordinary update path, so the archived definition goes through the same validation as an authored one. That includes resolving every `on_enter` dispatch target, so restoring a version whose agent or orchestration has since been deleted fails with `400` rather than writing a definition that would strand a task on entry. Restoring the definition the workflow already holds is a no-op and archives nothing. Tasks already in flight are unaffected either way — a restore is an ordinary edit, and pinning is what keeps it from reaching them.

  Request

<ParamsDetails
  {...require("./restore-workflow-version.ParamsDetails.json")}
>

<RequestSchema
  {...require("./restore-workflow-version.RequestSchema.json")}
>

<StatusCodes
  {...require("./restore-workflow-version.StatusCodes.json")}
>
