Capabilities
Create a stream
Upload a source video to Convertly Storage first, then create a stream from the stored file ID.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
Whenstatus becomes ready, the stream includes:
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):
@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
6seconds and may be set from2to12. - Signed playback URLs expire after
tokenTtlSeconds. Create a new signed playback session when the URL expires. - Domain restrictions check the playback request
OriginorRefererhost whenallowedDomainsis set. - DRM is tracked as planned in the asset response. It is not enforced yet.