Implementation: Broadcasts and Streams

The following examples show how to use the YouTube Live Streaming API to create and manage live broadcasts and streams.

Create a broadcast

Call the liveBroadcasts.insert method to schedule a new live event. The request body must define the broadcast's title, scheduled start time, and privacy status. You can also optionally specify the video category using the snippet.categoryId property. You can retrieve a list of categories using the videoCategories.list method.

https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.liveBroadcasts.insert?
        part=snippet,status

The request body contains a liveBroadcast resource. In this example, the request body is:

{
  "snippet": {
    "title": "My Live Event",
    "scheduledStartTime": "2026-10-30T19:00:00Z",
    "categoryId": "17"
  },
  "status": {
    "privacyStatus": "unlisted"
  }
}

Create a stream

Call the liveStreams.insert method to create a stream that defines the transmission settings for your video. You must specify the stream's title and its CDN settings (ingestion type, resolution, and frame rate).

https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.liveStreams.insert?
        part=snippet,cdn

The request body contains a liveStream resource. In this example, the request body is:

{
  "snippet": {
    "title": "My Live Stream"
  },
  "cdn": {
    "frameRate": "30fps",
    "ingestionType": "rtmp",
    "resolution": "720p"
  }
}

Bind broadcast to stream

Call the liveBroadcasts.bind method to associate your broadcast with your stream. Set the id parameter to the broadcast ID and the streamId query parameter to the stream ID.

https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.liveBroadcasts.bind?
        id=BROADCAST_ID
        &streamId=STREAM_ID
        &part=id,snippet

Transition broadcast status

Call the liveBroadcasts.transition method to change the state of your broadcast. For example, to start testing, transition the status to testing. To start the actual broadcast, transition the status to live.

This example transitions the broadcast to testing. Set the id parameter to the broadcast ID and the broadcastStatus parameter to testing.

https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.liveBroadcasts.transition?
        broadcastStatus=testing
        &id=BROADCAST_ID
        &part=id,status

Retrieve broadcasts

Call the liveBroadcasts.list method to retrieve broadcasts. You can filter by broadcastStatus (e.g., active, completed, upcoming) or retrieve your own broadcasts using the mine parameter.

This example retrieves the authenticated user's upcoming broadcasts.

https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.liveBroadcasts.list?
        part=snippet,status
        &broadcastStatus=upcoming
        &mine=true