CCloud Releases
Home
Following

Cloud Releases

Service catalogues and updates come from each provider's public product listing and announcements.

Explore

  • Home
  • Latest updates
  • Following

About

  • About
  • Contact
  • Privacy Policy
  • Terms of Use

Providers

  • Amazon Web Services
  • Microsoft Azure
  • Google Cloud
  • Cloudflare

Not affiliated with any cloud provider. Product names and logos belong to their owners.

  1. Providers
  2. ›Cloudflare
  3. ›Stream
  4. ›Update

Feature•May 7, 2026

Introducing Stream Bindings for Workers

StreamCloudflare · Developer platform

You can now interact with your Stream video library using new bindings for Workers! This allows customers to upload content to Stream, provision direct uploads, manage videos, and generate signed URLs from a Worker without making authenticated API calls. We're excited to bring Stream and Workers closer together to empower more programmatic pipelines, tighter integrations, and support generative AI and inference workloads.

Use the Stream binding when you want to:

  • Upload videos from URLs or create basic direct upload links for end users
  • Generate signed playback tokens without managing signing keys
  • Manage video metadata, captions, downloads, and watermarks
  • Build video pipelines entirely within Workers

To get started, add the Stream binding to your Wrangler configuration:

{ "$schema": "./node_modules/wrangler/config-schema.json", "stream": { "binding": "STREAM" } }

[stream] binding = "STREAM"

Generate a video with AI and upload directly to Stream or send a URL of a file you already have:

const aiResponse = await env.AI.run( "google/veo-3.1", { prompt: "A dog walking next to a river", duration: "10s", aspect_ratio: "16:9", resolution: "1080p", generate_audio: true, }, { gateway: { id: "experiments" }, }, ); // Veo will return a URL of the generated asset. const videoUrl = aiResponse.result.video; // Alternative option: a video of the Austin Office mobile // const videoUrl = 'https://pub-d9fcbc1abcd244c1821f38b99017347f.r2.dev/aus-mobile.mp4'; // Upload to Stream by providing a URL const streamVideo = await env.STREAM.upload(videoUrl); // The streamVideo response will include the video ID, playback and manifest // URLs, and other information, just like the REST API.

const aiResponse = await env.AI.run( 'google/veo-3.1', { prompt: 'A dog walking next to a river', duration: '10s', aspect_ratio: '16:9', resolution: '1080p', generate_audio: true, }, { gateway: { id: 'experiments' }, }, ); // Veo will return a URL of the generated asset. const videoUrl = aiResponse.result.video; // Alternative option: a video of the Austin Office mobile // const videoUrl = 'https://pub-d9fcbc1abcd244c1821f38b99017347f.r2.dev/aus-mobile.mp4'; // Upload to Stream by providing a URL const streamVideo = await env.STREAM.upload(videoUrl); // The streamVideo response will include the video ID, playback and manifest // URLs, and other information, just like the REST API.

Generate a signed URL without using a signing key or an API call:

const video_id = "ce800be43a9772f4bb02f35b860fb516"; const token = await env.STREAM.video(video_id).generateToken(); // Use the "token" in an iframe embed code, manifest URL, or thumbnail: const embedUrl = `https://customer-igynxd2rwhmuoxw8.cloudflarestream.com/${token}/iframe`;

const video_id = 'ce800be43a9772f4bb02f35b860fb516'; const token = await env.STREAM.video(video_id).generateToken(); // Use the "token" in an iframe embed code, manifest URL, or thumbnail: const embedUrl = `https://customer-igynxd2rwhmuoxw8.cloudflarestream.com/${token}/iframe`;

Get and set video properties easily:

const video_id = "46c8b7f480d410840758c1cb14a72e47"; const result = await env.STREAM.video(video_id).details(); await env.STREAM.video(video_id).update({ meta: { name: "sample video" }, });

const video_id = '46c8b7f480d410840758c1cb14a72e47'; const result = await env.STREAM.video(video_id).details(); await env.STREAM.video(video_id).update({ meta: { name: 'sample video' } });

For setup instructions and the full API reference, refer to Bind to Workers API.

Get started with your Agent

Add a binding for Cloudflare Stream (env.STREAM). On the watch page, use the Stream binding to get info based on the ID, and leverage video.meta.name as the page title.

Read the original announcement↗

More from Stream

All Stream updates →
  1. Rotate Stream broadcast keys for live inputs

    You can now rotate the broadcast credentials for a Stream live input without changing the live input identifier.

    Stream•Feature•Jul 31, 2026
  2. Media Transformations binding for Workers

    You can now use a Workers binding to transform videos with Media Transformations. This allows you to resize, crop, extract frames, and extract audio from videos stored anywhere, even in private locations like R2 buckets.

    Stream•Feature•Mar 18, 2026
  3. Stream live inputs can now be disabled and enabled

    You can now disable a live input to reject incoming RTMPS and SRT connections. When a live input is disabled, any broadcast attempts will fail to connect.

    Stream•Feature•Feb 24, 2026