VOD Status
When a video is uploaded and processed, the status field reflects the current state of the file:Empty
– Video entity created, but no source file has been uploaded yet. For prolonged delays, inspect the error field.Pending
– Source file uploaded and queued for processing.Viewable
– Playback available already. At least one rendition is available for playback, but not all target renditions are complete.Ready
– Playback in all qualities. All renditions have been successfully processed and are available for playback.Error
– Processing failed. Details available in theerror
field.
When playback starts:Playback becomes available immediately when the video reaches
Viewable
status, even if only a subset of renditions is ready.Additional renditions are appended automatically to manifest.m3u8 and master.mpd as processing completes. When all renditions are available, the status transitions to Ready
.
So no waiting for Ready
is required to start playback.Uploading process
Process of uploading is described in the Upload video via API article. Briefly:- You create a video (TUS upload or copy from external origin_url).
- Backend schedules transcodes for the target quality set.
- Each rendition becomes an item in
converted_videos
. Fields update as jobs run.
Renditions status
Each video entity is transcoded into several qualities – each such individual quality is called a rendition. So for a video entity there is always a set of renditions with specified parameters: quality and size. An array of renditions for each playback of the video entity in API has name ofconverted_videos
. Each element contains playback metadata for the rendition and status of processing.
Status lifecycle per rendition:
processing
– transcode job accepted and running for this quality.complete
– rendition finished. mp4_url becomes available and the quality is appended to HLS/DASH manifests.error
– rendition failed. Inspect the item’s error string. 
When playback starts:Playback can be started once at least one rendition is
complete
. Additional renditions appear automatically as they complete. No need to wait for all renditions are ready./streaming/videos/{video_id}
):
- Dimensions and approximate bitrate proxy: width, height, size.
- Completion percent: progress (0–100).
- Availability: status, mp4_url presence.
- Failure reason: error.
- Name/label for UI or logging: name (e.g., vod720p). 
/streaming/videos/{video_id}
. Completion events can also be delivered via webhooks. Read more about Webhooks here. 
Long video processing
The duration of video transcoding is directly proportional to the length of the original video. A 1 minute video will be processed in a matter of seconds. A 10 hour video will take a long time to process, possibly tens of minutes due to a queue of other videos. All renditions are queued at the same time. Remember that the lower the quality, the easier it is to transcode and the faster you can get the result. That’s why SD and other medium resolutions often become available faster than 1080, 2K and 4K.Error handling
During upload and processing, the API may return errors in theerror
field of the video object or in a specific rendition (converted_videos[i].error
).Each error indicates the reason why the system was unable to fetch, parse, or process the video file. If a video remains in
empty
or pending
state for long period, inspect the check the error
field and check corresponding converted_videos[].status
values for details.
In most cases, the video cannot be processed correctly due to problems with the original file. It may not fit to recommended input parameters.
If you encounter an error, first check the error message against the list below. Then validate your input (URL, headers, original video file) and retry the operation. If the issue persists or is caused by quota limitations, contact the Support Team.
Error message | Description |
---|---|
Encoding problems | |
Encoding has failed | Transcoding stopped due to broken/corrupted frames. Ensure source file is playable. |
Unable to analyze the origin file | File structure could not be parsed. Confirm input format. |
Unable to validate video file | File validation failed. Confirm input format. |
Video file has codec parameters issue | Codec parameters unsupported. Check codec against system requirements. |
Video file has empty streams | No video streams detected in file. Validate content before upload. |
Video file is invalid | File is not a recognized format or container. Verify input format. |
Clips | |
Requested encoding duration exceeds clip length | Requested clip duration exceeds actual file duration. Review start/end range. |
Limits | |
The storage limit has been exceeded | Storage or encoding quota exceeded. Contact support to increase limits. |
Migration from external origin | |
Access to the origin is forbidden | origin_url requires authentication but failed. Check URL and origin_http_headers . |
Connection reset by peer | origin_url exists but the external server dropped the connection. |
Network timeout occurred | origin_url exists but external server did not respond. Network timeout occurred. |
The downloaded file is incomplete | File download started but finished incomplete. Validate the URL and source server. |
The requested origin was not found | origin_url points to a non-existent HTTP resource. Verify the URL. |
Demo video with “viewable” status
We prepared a demo video which has the statusviewable
and was not fully processed. In this demo video, one quality has a deliberate conversion error.
HTML player:
- Entity status:
viewable
- Renditions status:
- vod360p:
complete
- vod480p:
complete
- vod720p:
complete
- vod1080p:
error
- vod360p: