Skip to content
Start here

Edit video details

stream.edit(stridentifier, StreamEditParams**kwargs) -> Video
POST/accounts/{account_id}/stream/{identifier}

Edit details for a single video.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
ParametersExpand Collapse
account_id: str

The account identifier tag.

maxLength32
identifier: str

A Cloudflare-generated unique identifier for a media item.

maxLength32
allowed_origins: Optional[SequenceNotStr[AllowedOrigins]]

Lists the origins allowed to display the video. Enter allowed origin domains in an array and use * for wildcard subdomains. Empty arrays allow the video to be viewed on any origin.

creator: Optional[str]

A user-defined identifier for the media creator.

maxLength64
max_duration_seconds: Optional[int]

The maximum duration in seconds for a video upload. Can be set for a video that is not yet uploaded to limit its duration. Uploads that exceed the specified duration will fail during processing. A value of -1 means the value is unknown.

maximum36000
minimum1
meta: Optional[object]

A user modifiable key-value store used to reference other systems of record for managing videos.

require_signed_urls: Optional[bool]

Indicates whether the video can be a accessed using the UID. When set to true, a signed token must be generated with a signing key to view the video.

scheduled_deletion: Optional[Union[str, datetime]]

Indicates the date and time at which the video will be deleted. Omit the field to indicate no change, or include with a null value to remove an existing scheduled deletion. If specified, must be at least 30 days from upload time.

formatdate-time
thumbnail_timestamp_pct: Optional[float]

The timestamp for a thumbnail image calculated as a percentage value of the video's duration. To convert from a second-wise timestamp to a percentage, divide the desired timestamp by the total duration of the video. If this value is not set, the default thumbnail image is taken from 0s of the video.

maximum1
minimum0
upload_expiry: Optional[Union[str, datetime]]

The date and time when the video upload URL is no longer valid for direct user uploads.

formatdate-time
ReturnsExpand Collapse
class Video:
allowed_origins: Optional[List[AllowedOrigins]]

Lists the origins allowed to display the video. Enter allowed origin domains in an array and use * for wildcard subdomains. Empty arrays allow the video to be viewed on any origin.

created: Optional[datetime]

The date and time the media item was created.

formatdate-time
creator: Optional[str]

A user-defined identifier for the media creator.

maxLength64
duration: Optional[float]

The duration of the video in seconds. A value of -1 means the duration is unknown. The duration becomes available after the upload and before the video is ready.

input: Optional[Input]
height: Optional[int]

The video height in pixels. A value of -1 means the height is unknown. The value becomes available after the upload and before the video is ready.

width: Optional[int]

The video width in pixels. A value of -1 means the width is unknown. The value becomes available after the upload and before the video is ready.

live_input: Optional[str]

The live input ID used to upload a video with Stream Live.

maxLength32
max_duration_seconds: Optional[int]

The maximum duration in seconds for a video upload. Can be set for a video that is not yet uploaded to limit its duration. Uploads that exceed the specified duration will fail during processing. A value of -1 means the value is unknown.

maximum36000
minimum1
meta: Optional[object]

A user modifiable key-value store used to reference other systems of record for managing videos.

modified: Optional[datetime]

The date and time the media item was last modified.

formatdate-time
playback: Optional[Playback]
dash: Optional[str]

DASH Media Presentation Description for the video.

hls: Optional[str]

The HLS manifest for the video.

preview: Optional[str]

The video's preview page URI. This field is omitted until encoding is complete.

formaturi
ready_to_stream: Optional[bool]

Indicates whether the video is playable. The field is empty if the video is not ready for viewing or the live stream is still in progress.

ready_to_stream_at: Optional[datetime]

Indicates the time at which the video became playable. The field is empty if the video is not ready for viewing or the live stream is still in progress.

formatdate-time
require_signed_urls: Optional[bool]

Indicates whether the video can be a accessed using the UID. When set to true, a signed token must be generated with a signing key to view the video.

scheduled_deletion: Optional[datetime]

Indicates the date and time at which the video will be deleted. Omit the field to indicate no change, or include with a null value to remove an existing scheduled deletion. If specified, must be at least 30 days from upload time.

formatdate-time
size: Optional[float]

The size of the media item in bytes.

status: Optional[Status]

Specifies a detailed status for a video. If the state is inprogress or error, the step field returns encoding or manifest. If the state is inprogress, pctComplete returns a number between 0 and 100 to indicate the approximate percent of completion. If the state is error, errorReasonCode and errorReasonText provide additional details.

error_reason_code: Optional[str]

Specifies why the video failed to encode. This field is empty if the video is not in an error state. Preferred for programmatic use.

error_reason_text: Optional[str]

Specifies why the video failed to encode using a human readable error message in English. This field is empty if the video is not in an error state.

pct_complete: Optional[str]

Indicates the progress as a percentage between 0 and 100.

maximum100
minimum0
state: Optional[Literal["pendingupload", "downloading", "queued", 4 more]]

Specifies the processing status for all quality levels for a video.

One of the following:
"pendingupload"
"downloading"
"queued"
"inprogress"
"ready"
"error"
"live-inprogress"
thumbnail: Optional[str]

The media item's thumbnail URI. This field is omitted until encoding is complete.

formaturi
thumbnail_timestamp_pct: Optional[float]

The timestamp for a thumbnail image calculated as a percentage value of the video's duration. To convert from a second-wise timestamp to a percentage, divide the desired timestamp by the total duration of the video. If this value is not set, the default thumbnail image is taken from 0s of the video.

maximum1
minimum0
uid: Optional[str]

A Cloudflare-generated unique identifier for a media item.

maxLength32
uploaded: Optional[datetime]

The date and time the media item was uploaded.

formatdate-time
upload_expiry: Optional[datetime]

The date and time when the video upload URL is no longer valid for direct user uploads.

formatdate-time
watermark: Optional[Watermark]
created: Optional[datetime]

The date and a time a watermark profile was created.

formatdate-time
downloaded_from: Optional[str]

The source URL for a downloaded image. If the watermark profile was created via direct upload, this field is null.

height: Optional[int]

The height of the image in pixels.

name: Optional[str]

A short description of the watermark profile.

opacity: Optional[float]

The translucency of the image. A value of 0.0 makes the image completely transparent, and 1.0 makes the image completely opaque. Note that if the image is already semi-transparent, setting this to 1.0 will not make the image completely opaque.

maximum1
minimum0
padding: Optional[float]

The whitespace between the adjacent edges (determined by position) of the video and the image. 0.0 indicates no padding, and 1.0 indicates a fully padded video width or length, as determined by the algorithm.

maximum1
minimum0
position: Optional[str]

The location of the image. Valid positions are: upperRight, upperLeft, lowerLeft, lowerRight, and center. Note that center ignores the padding parameter.

scale: Optional[float]

The size of the image relative to the overall size of the video. This parameter will adapt to horizontal and vertical videos automatically. 0.0 indicates no scaling (use the size of the image as-is), and 1.0 fills the entire video.

maximum1
minimum0
size: Optional[float]

The size of the image in bytes.

uid: Optional[str]

The unique identifier for a watermark profile.

maxLength32
width: Optional[int]

The width of the image in pixels.

Edit video details

import os
from cloudflare import Cloudflare

client = Cloudflare(
    api_token=os.environ.get("CLOUDFLARE_API_TOKEN"),  # This is the default and can be omitted
)
video = client.stream.edit(
    identifier="ea95132c15732412d22c1476fa83f27a",
    account_id="023e105f4ecef8ad9ca31a8372d0c353",
)
print(video.uid)
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "allowedOrigins": [
      "example.com"
    ],
    "created": "2014-01-02T02:20:00Z",
    "creator": "creator-id_abcde12345",
    "duration": 0,
    "input": {
      "height": 0,
      "width": 0
    },
    "liveInput": "fc0a8dc887b16759bfd9ad922230a014",
    "maxDurationSeconds": 1,
    "meta": {
      "name": "video12345.mp4"
    },
    "modified": "2014-01-02T02:20:00Z",
    "playback": {
      "dash": "https://customer-m033z5x00ks6nunl.cloudflarestream.com/ea95132c15732412d22c1476fa83f27a/manifest/video.mpd",
      "hls": "https://customer-m033z5x00ks6nunl.cloudflarestream.com/ea95132c15732412d22c1476fa83f27a/manifest/video.m3u8"
    },
    "preview": "https://customer-m033z5x00ks6nunl.cloudflarestream.com/ea95132c15732412d22c1476fa83f27a/watch",
    "readyToStream": true,
    "readyToStreamAt": "2014-01-02T02:20:00Z",
    "requireSignedURLs": true,
    "scheduledDeletion": "2014-01-02T02:20:00Z",
    "size": 4190963,
    "status": {
      "errorReasonCode": "ERR_NON_VIDEO",
      "errorReasonText": "The file was not recognized as a valid video file.",
      "pctComplete": "pctComplete",
      "state": "inprogress"
    },
    "thumbnail": "https://customer-m033z5x00ks6nunl.cloudflarestream.com/ea95132c15732412d22c1476fa83f27a/thumbnails/thumbnail.jpg",
    "thumbnailTimestampPct": 0.529241,
    "uid": "ea95132c15732412d22c1476fa83f27a",
    "uploaded": "2014-01-02T02:20:00Z",
    "uploadExpiry": "2014-01-02T02:20:00Z",
    "watermark": {
      "created": "2014-01-02T02:20:00Z",
      "downloadedFrom": "https://company.com/logo.png",
      "height": 0,
      "name": "Marketing Videos",
      "opacity": 0.75,
      "padding": 0.1,
      "position": "center",
      "scale": 0.1,
      "size": 29472,
      "uid": "ea95132c15732412d22c1476fa83f27a",
      "width": 0
    }
  }
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "allowedOrigins": [
      "example.com"
    ],
    "created": "2014-01-02T02:20:00Z",
    "creator": "creator-id_abcde12345",
    "duration": 0,
    "input": {
      "height": 0,
      "width": 0
    },
    "liveInput": "fc0a8dc887b16759bfd9ad922230a014",
    "maxDurationSeconds": 1,
    "meta": {
      "name": "video12345.mp4"
    },
    "modified": "2014-01-02T02:20:00Z",
    "playback": {
      "dash": "https://customer-m033z5x00ks6nunl.cloudflarestream.com/ea95132c15732412d22c1476fa83f27a/manifest/video.mpd",
      "hls": "https://customer-m033z5x00ks6nunl.cloudflarestream.com/ea95132c15732412d22c1476fa83f27a/manifest/video.m3u8"
    },
    "preview": "https://customer-m033z5x00ks6nunl.cloudflarestream.com/ea95132c15732412d22c1476fa83f27a/watch",
    "readyToStream": true,
    "readyToStreamAt": "2014-01-02T02:20:00Z",
    "requireSignedURLs": true,
    "scheduledDeletion": "2014-01-02T02:20:00Z",
    "size": 4190963,
    "status": {
      "errorReasonCode": "ERR_NON_VIDEO",
      "errorReasonText": "The file was not recognized as a valid video file.",
      "pctComplete": "pctComplete",
      "state": "inprogress"
    },
    "thumbnail": "https://customer-m033z5x00ks6nunl.cloudflarestream.com/ea95132c15732412d22c1476fa83f27a/thumbnails/thumbnail.jpg",
    "thumbnailTimestampPct": 0.529241,
    "uid": "ea95132c15732412d22c1476fa83f27a",
    "uploaded": "2014-01-02T02:20:00Z",
    "uploadExpiry": "2014-01-02T02:20:00Z",
    "watermark": {
      "created": "2014-01-02T02:20:00Z",
      "downloadedFrom": "https://company.com/logo.png",
      "height": 0,
      "name": "Marketing Videos",
      "opacity": 0.75,
      "padding": 0.1,
      "position": "center",
      "scale": 0.1,
      "size": 29472,
      "uid": "ea95132c15732412d22c1476fa83f27a",
      "width": 0
    }
  }
}