> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trackplay.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Restore a past deploy

> Re-applies a past version's settings snapshot as the video's live settings, recompiles the player, and snapshots the restore itself as a new version. Restoring is not destructive to history: the version you restored from, and every version before it, are still there afterward.

Like deploy, the player is compiled and pushed to both CDNs before anything is marked live.

Requires a token with the `videos:write` scope.



## OpenAPI

````yaml /api-reference/openapi.json post /videos/{video}/deploys/{version}/restore
openapi: 3.1.0
info:
  title: TrackPlay API
  description: >-
    Send conversions and events to TrackPlay, and read them back. Authenticated
    with scoped tokens you mint in the dashboard.
  version: 1.0.0
servers:
  - url: https://app.trackplay.io/api/v1
    description: App API. Conversions, videos, webhooks.
  - url: https://e.trackplay.io
    description: Events API. High-volume event ingest.
security:
  - bearerAuth: []
tags:
  - name: Videos
    description: Create, read, update, and delete videos, and read workspace metadata.
  - name: Video settings
    description: Save a settings draft, publish it live, and read or restore past deploys.
  - name: Uploads
    description: >-
      Upload a source video file in one request or in resumable chunks, and poll
      its processing status.
  - name: Captions and chapters
    description: >-
      Manage caption tracks, chapter markers, AI-generated segments, and CTA
      cards on a video.
  - name: Playlists
    description: Group videos into a playlist or course, and manage the videos inside it.
  - name: Webhooks
    description: Subscribe a URL to TrackPlay lifecycle events and test deliveries.
  - name: Zapier
    description: >-
      The REST-hook endpoints Zapier calls to connect a workspace and manage
      triggers.
  - name: Analytics
    description: Read play, retention, event, and conversion analytics for a video.
  - name: Exports
    description: Queue and download bulk analytics exports.
  - name: Conversions
    description: Report a sale or a lead, from your own server or from a browser fallback.
  - name: Events
    description: Send a custom event tied to a viewer's session.
  - name: Identity
    description: Resolve a viewer's identity from the page, with no token required.
paths:
  /videos/{video}/deploys/{version}/restore:
    post:
      tags:
        - Video settings
      summary: Restore a past deploy
      description: >-
        Re-applies a past version's settings snapshot as the video's live
        settings, recompiles the player, and snapshots the restore itself as a
        new version. Restoring is not destructive to history: the version you
        restored from, and every version before it, are still there afterward.


        Like deploy, the player is compiled and pushed to both CDNs before
        anything is marked live.


        Requires a token with the `videos:write` scope.
      operationId: restoreVideoDeploy
      parameters:
        - name: video
          in: path
          required: true
          schema:
            type: integer
          description: The video's numeric ID.
        - name: version
          in: path
          required: true
          schema:
            type: integer
          description: The version ID to restore, from `GET /videos/{video}/deploys`.
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
          description: >-
            Retry-safe key. The first response for a given key is cached for 24
            hours and replayed on a repeat, with `Idempotency-Replayed: true`
            set.
      responses:
        '200':
          description: Restored.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestoreResponse'
        '401':
          description: >-
            `AUTH_REQUIRED`: no token sent. `INVALID_TOKEN`: the token is
            invalid, expired, or revoked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: '`INSUFFICIENT_SCOPE`: the token does not carry `videos:write`.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: >-
            No video with that ID exists in this workspace, or no version with
            that ID exists on this video.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaravelNotFoundError'
        '429':
          description: Rate limited. 60 requests per minute per token.
        '500':
          description: >-
            The player failed to compile, or the compiled bundle failed to reach
            the CDN. The video's settings were already overwritten with the
            restored snapshot at this point; retry the restore to reach a
            consistent compiled state.
components:
  schemas:
    RestoreResponse:
      type: object
      properties:
        video:
          $ref: '#/components/schemas/Video'
        restored_version_id:
          type: integer
    ApiError:
      type: object
      description: The error shape the app API returns on a failed read or export.
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: >-
                A stable error code, e.g. `INSUFFICIENT_SCOPE`,
                `VIDEO_NOT_FOUND`, `EXPORT_NOT_FOUND`.
            message:
              type: string
              description: What went wrong, in plain English.
    LaravelNotFoundError:
      type: object
      description: >-
        The default not-found body Laravel returns when a route model lookup
        fails (`findOrFail`). It carries no stable error code, unlike the app's
        own `{"error": {"code": ...}}` shape used on hand-written error paths in
        this API.
      properties:
        message:
          type: string
          examples:
            - No query results for model [App\\Models\\WorkspaceVideo] 481
    Video:
      type: object
      description: >-
        A video and its settings. A video carries around thirty option-group
        columns (style, playback, autoplay, captions, chapters, CTA cards,
        playlist, and more) that are not itemized here. Read `GET
        /videos/{video}/settings` for the full set, or the dedicated endpoint
        for the group you care about (captions, chapters, AI segments, CTA
        cards).
      additionalProperties: true
      properties:
        id:
          type: integer
          description: The video's numeric ID.
        code:
          type: string
          description: >-
            The video's public code, used in `video_code` fields across the API
            and in conversions and events.
        title:
          type: string
        workspace_id:
          type: integer
        folder_id:
          type:
            - integer
            - 'null'
        tags:
          type: array
          items:
            type: string
        player_version:
          type: string
          examples:
            - v2
        landscape_hls:
          type:
            - string
            - 'null'
          description: >-
            The landscape HLS manifest URL, once an upload has completed for
            that orientation.
        portrait_hls:
          type:
            - string
            - 'null'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        A scoped token minted in **Settings → API tokens**. Send it as
        `Authorization: Bearer tplt_…` or `X-API-Key: tplt_…`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.