---
title: "Update Video"
method: PUT
path: "/videos/{id}"
tags: ["Video"]
---

# Update Video

`PUT /videos/{id}`

## Request

- Base URL: `https://myworkspace.myclickfunnels.com/api/v2`
- URL: `https://myworkspace.myclickfunnels.com/api/v2/videos/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://accounts.myclickfunnels.com/oauth/authorize`
    - Token URL: `https://accounts.myclickfunnels.com/oauth/token`
- TypeScript: <https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/docs/videos/:id/put.ts> (a function with typed inputs; its response is checked against the schema)

Also accepts PATCH. Only ready or failed videos may be changed. A re-import resets status to queued and error_code to null; attached lessons retain this video ID.

## Path parameters

- `id` string, required

## Request body

- object
  - `video` VideoParametersUpdate, required: Only ready or failed videos may be updated. A new upload_source_url queues a re-import, retaining the video ID and lesson references.
    - `name` string, nullable: Optional on create; defaults to the downloaded filename without its extension.
    - `upload_source_url` string: Download URL. Import runs in the background, follows checked redirects and accepts MP4, AVI, or MPEG up to 3 GB. MOV is not supported.
    - `poster_image_id` union: Numeric or public ID of a workspace image; null detaches.
      - integer
      - string

## Response `200`

OK

- VideoAttributes
  - `id` integer: Video ID
  - `public_id` string: Public ID
  - `workspace_id` integer: Workspace ID
  - `name` string: Video name
  - `status` 'queued' | 'processing' | 'ready' | 'failed': Computed import state. Poll until ready before attaching to a lesson.
  - `error_code` 'download_failed' | 'file_too_large' | 'invalid_file_type' | 'processing_failed' | 'null', nullable: Null unless failed. Network and URL download failures share download_failed. An import that stops progressing for 3 hours fails with processing_failed.
  - `metadata` object, nullable: Details of the processed file; null until the video has one.
    - `filename` string, nullable: Stored filename.
    - `mime_type` string, nullable: Server-detected MIME type.
    - `duration` number, nullable: Duration in seconds.
    - `width` integer, nullable: Width in pixels.
    - `height` integer, nullable: Height in pixels.
  - `poster_image_id` integer, nullable: Poster image ID in this workspace.
  - `url` string, nullable: Signed MP4 URL, expires one hour after this response; null until the video has a processed file. Fetch again to renew. No HLS URL is exposed.
  - `thumbnail_url` string, nullable: Signed generated frame URL, expires one day after this response; null until the video has a processed file.
  - `created_at` string, date-time: Added
  - `updated_at` string, date-time: Updated

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `429`: At most five queued or processing imports per workspace, including re-imports.

## Changes

- **2026-11-03** `511d88b30aea`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/changes/videos/:id/put.md)

---

[API](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api.md) - [All operations](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/llms.txt) - [OpenAPI document](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/revisions/511d88b30aea?raw)
