Skip to main content
Convertly Video Streams turn a stored video file into production-ready HLS or DASH/CMAF playback. The API creates a video asset, queues background encoding, generates manifests, bitrate renditions, captions, poster art, and returns playback URLs when the stream is ready. Convertly can prepare streams with either the built-in packager or faster managed encoding for paid workspaces. Existing assets keep the provider they were created with. Use Video Streams when your product needs browser/mobile playback instead of a single downloadable MP4: course videos, user-generated video, webinars, previews, clipping workflows, internal media libraries, and AI-generated highlight reels.

Capabilities

Create a stream

Upload a source video to Convertly Storage first, then create a stream from the stored file ID.
The response is accepted immediately while the worker processes the stream:
Poll GET /api/video/streams/{id} or subscribe to video.stream.ready.

Profiles

Convertly only generates renditions at or below the source height.

Video codecs

videoCodec is optional and defaults to h264. AV1 is currently available on Convertly’s built-in packager. Workspaces routed to managed Cloudflare Stream encoding still keep the AV1 option; selecting av1 routes that asset through Convertly’s video worker, while h264 can use the configured managed provider. Existing assets keep the provider and codec selected when they were created. Plan limits cap monthly processing and delivery. Source minutes count the input duration once, regardless of the number of renditions generated. Delivery minutes count viewer watch time. A 10 minute video watched fully by 100 viewers uses 1,000 delivery minutes. All plans can generate the complete seven-rendition ladder through 2160p when the source contains those pixels. Convertly does not upscale a lower-resolution source into fake 4K. Pro and Business can use optional metered overage when it is enabled in billing settings. See Limits for source and delivery minute allowances.

Custom ladders

Playback

When status becomes ready, the stream includes:
For built-in signed assets, Convertly validates the HMAC before every cache lookup and rewrites playlist references so every rendition playlist and segment carries the same expiring token. Public streams omit the token. Some paid workspaces use managed encoding for faster transcoding. Those assets may return provider-hosted HLS/DASH URLs. Convertly mints signed playback tokens for you — you do not configure provider signing keys. When a signed URL expires, create a new playback session from the stream API. Managed Cloudflare Stream mode requires VIDEO_STREAM_PROVIDER=cloudflare_stream, CLOUDFLARE_STREAM_ACCOUNT_ID, and CLOUDFLARE_STREAM_API_TOKEN. Signed playback additionally requires CLOUDFLARE_STREAM_SIGNING_KEY_ID and CLOUDFLARE_STREAM_SIGNING_PRIVATE_KEY. To show delivery minutes in Convertly Usage, run POST /api/video/streams/cloudflare-usage-sync on a schedule with CLOUDFLARE_STREAM_SYNC_SECRET. Set CLOUDFLARE_STREAM_ANALYTICS_API_TOKEN to a dedicated token scoped to the Stream account with Account Analytics: Read; ordinary Stream edit tokens cannot query the GraphQL Analytics API.

JS player

Use @convertly-sh/player for a full HLS player with controls and analytics. See the Video player docs for install steps and an interactive embed. For a minimal integration (your own UI + analytics only):
The legacy @convertly-sh/sdk ConvertlyPlayer class still attaches captions and analytics to a raw <video> element, but does not include hls.js or custom controls — prefer @convertly-sh/player for new projects.

Webhook payloads

video.stream.ready includes the asset ID, playback ID, duration, and generated renditions. video.stream.failed includes the error message.

Operational notes

  • HLS and DASH packaging runs asynchronously after you create a stream. Poll the stream status or listen for webhooks until the asset is ready.
  • Source files must already exist in Convertly Storage.
  • Built-in packaged manifests, posters, captions, and renditions count toward the same storage allowance as source files.
  • Managed encoding copies the source to Convertly’s video provider for faster packaging. Your library record stays in Convertly; delivery minutes still count toward your plan.
  • Cloudflare Stream delivery minutes appear in Usage after the Cloudflare analytics sync job imports minutes viewed.
  • AV1 requires the Convertly video worker’s FFmpeg build to include libsvtav1.
  • Deleting a built-in stream removes its packaged output. Deleting a managed-encoding asset also removes the remote packaged copy.
  • Segment duration defaults to 6 seconds and may be set from 2 to 12.
  • Signed playback URLs expire after tokenTtlSeconds. Create a new signed playback session when the URL expires.
  • Domain restrictions check the playback request Origin or Referer host when allowedDomains is set.
  • DRM is tracked as planned in the asset response. It is not enforced yet.