This page lists YouTube Live Streaming API changes and documentation updates.
Subscribe to this changelog
.
October 9, 2023
For reference only, you can find which Sticker IDs relate to which Super Stickers in this
CSV file
.
The definitions of the
liveChatMessage
resource's
snippet.superStickerDetails.superStickerMetadata.stickerId
property and the
superChatEvent
resource's
snippet.superStickerMetadata.stickerId
property have both been updated to reflect this information.
September 15, 2023
The API now supports a new way of inserting ads into live broadcasts. In addition to
liveCuepoints
, which let you
manually insert ad breaks into a broadcast, YouTube now supports a feature to automatically
insert midroll ad breaks into a broadcast at fixed intervals.
If the broadcast owner enables automated ads, they can view the following aspects of
ad behavior:
- the length of the interval between midroll ad breaks.
- the scheduling strategy for ad cuepoints. Cuepoints can be inserted concurrently for all
viewers or the timing of the cuepoints can vary from viewer to viewer. The latter strategy
enables YouTube to schedule cuepoints at an increased rate that allows viewers to receive
cuepoints when they are eligible to do so.
- a period during which midroll ads are not shown; for this feature, the broadcast owner specifies
that midroll ads insertion is paused until a particular time.
The documentation reflects the following API changes to support this feature:
- The
liveBroadcast
resource now contains a
monetizationDetails
object. The object's fields indicate whether automatic ad insertion is enabled for the
broadcast and specify additional information for scheduling cuepoints.
- The
liveBroadcast.list
method's
part
parameter
supports the value
monetizationDetails
.
- The
update
method
can be used to pause midroll ads insertion for a certain period for a live broadcast. The documentation also now
identifies several errors that can occur when updating the monetization details for a live broadcast.
August 1, 2023
This update contains the following changes:
November 1, 2022
-
The new
liveBroadcasts.cuepoint
method enables any channel owner running a live broadcast on YouTube to insert cuepoints into
that broadcast, which can trigger ad breaks. This method replaces the
liveCuepoints.insert
method, which only enabled YouTube content partners to
insert cuepoints into live broadcasts.
Several guides have been updated to reflect the availability of this new method.
-
Note:
This is a deprecation announcement.
The
liveCuepoints.insert
method is now deprecated. Support for the
liveCuepoints.insert
method will be removed on or after May 1, 2023. API
users should update their applications to call the
liveBroadcasts.cuepoint
method instead.
-
Documentation for the
liveBroadcasts.control
method has been removed. A
deprecation notice for that method was posted in September 2020.
October 1, 2022
This update contains the following changes:
-
The
liveBroadcasts.update
method no long requires values to be specified for these fields:
contentDetails.enableContentEncryption
contentDetails.enableDvr
contentDetails.enableEmbed
contentDetails.recordFromStart
contentDetails.startWithSlate
Omitting these fields from the request will leave them unchanged.
-
Removed documentation for obsolete
liveBroadcast
fields:
contentDetails.enableContentEncryption
contentDetails.startWithSlate
April 1, 2022
This update contains the following changes:
September 15, 2021
This update contains the following changes:
-
The
snippet.type
property now supports two new values:
newSponsorEvent
memberMilestoneChatEvent
-
The
liveChatMessage
resource's new
snippet.memberMilestoneChatDetails
property and its children contain information about the Member Milestone Chat event. Similarly, the new
snippet.newSponsorDetails
property and its children contain information about the New Sponsor event.
December 1, 2020
The API's
liveBroadcasts.transition
method supports a new
403
(
Forbidden
) error, which indicates that the user
has sent too many requests within a given timeframe. The error reason is
userRequestsExceedRateLimit
.
September 21, 2020
-
The definition of the
liveBroadcast
resource's
status.madeForKids
property has been updated to clarify that the property is read-only. This does not reflect a
change in API functionality.
To designate a live broadcast as being child-directed, set the
status.selfDeclaredMadeForKids
property to
true
when calling the
liveBroadcasts.insert
method to create the broadcast.
-
Note:
This change includes a deprecation announcement and an update to
a prior deprecation announcement.
The
liveBroadcasts.control
method will be deprecated on or after 1 October 2020. After that date, all calls to this
method will return a forbidden (403) error, and the method will later be completely removed.
Clients can still implement their own slating by adding an overlay to the video sent to
YouTube’s ingestion servers.
The deprecation date for the
deprecation announcement
made on 16 April 2020
, which was originally scheduled for 1 September 2020, has been
pushed back and will now happen on or after 1 October 2020. Thus, the features included in
that deprecation announcement and the
liveBroadcasts.control
method will all be
deprecated at the same time.
July 17, 2020
Note:
This is an update to a prior deprecation announcement.
The
liveStream
resource's
cdn.format
field, which was deprecated in April 2016, will no longer be supported
as of August 17, 2020. Requests still using that field will fail as of that date.
If your code still uses the
cdn.format
field, it must be updated to specify the
frame rate and resolution separately, using the
cdn.frameRate
and
cdn.resolution
properties.
July 6, 2020
The
Delivering Live YouTube Content via HLS
guide has been updated with a few changes:
In addition, the new
ingestion
protocol comparison
lists the ingestion protocols that YouTube supports, the codecs supported
for each protocol, and additional information regarding appropriate use cases for each protocol.
April 16, 2020
This update includes a new property and a deprecation announcement:
-
The
liveBroadcast
resource now supports the
contentDetails.enableAutoStop
property. The property indicates whether a broadcast should stop automatically around one
minute after the channel owner stops streaming video on the bound video stream.
The
life of a broadcast
document has been
updated to explain how the step-by-step process of creating and managing a live YouTube event
changes if you set the
contentDetails.enableAutoStart
or
contentDetails.enableAutoStop
properties to
true
.
-
Note:
This is a deprecation announcement. These changes will go into
effect on or after September 1, 2020. The actual date that the changes take effect is referred
to below as the deprecation date.
This update explains a potentially breaking change. It affects API client applications that use
channels' default
liveStream
and
liveBroadcast
resources to stream live
content on YouTube. Specifically, the
broadcast ID
and
stream ID
associated with the persistent
broadcast and stream will no longer function to start new broadcasts.
Your application will be affected if any of the following are true:
- It checks the value of the
liveBroadcast
resource's
isDefaultBroadcast
property. This property will not be returned after the deprecation date.
- It checks the value of the
liveStream
resource's
isDefaultStream
property. This property will not be returned after the deprecation date.
- It calls the
liveBroadcasts.list
method
and sets the
broadcastType
parameter value to
persistent
or
all
. This parameter will be
deprecated as part of these changes. As of the deprecation date:
- If the
broadcastType
parameter value is
persistent
, then the
liveBroadcasts.list
method will not return any results.
- If the
broadcastType
parameter value is
all
, then the
liveBroadcasts.list
method will not return persistent broadcasts that
existed before that time.
As background, for the past few years, YouTube has automatically created a default stream and a
default broadcast for a channel when that channel was enabled for live streaming. The default
stream existed indefinitely, did not have a start or end time associated with it, and could not be
deleted. Similarly, the default broadcast was considered
persistent
. It always existed and
was not bound to a particular event.
As of the deprecation date:
- YouTube will no longer create default streams and broadcasts. Instead of relying on the
default resources, API clients need to be able to create and manage
liveBroadcast
and
liveStream
resources and to bind those resources
together.
- If a channel's default broadcast and default stream are actively live, meaning the channel
is using them for a live broadcast at the time the deprecation goes into effect, the ongoing
broadcast will not be affected. However, after that broadcast ends, the channel will not be
able to use the default broadcast and default stream again.
- If a channel's default broadcast and default stream are not actively live, then after the
deprecation goes into effect, YouTube will ignore attempts to use those resources to
broadcast video.
If your application is affected, please refer to the following documents, which will help you to
update your application so that it still works as expected following this change:
- A new
migration
guide
tries to explain the steps that developers might need to address in API clients
that currently use default broadcasts and streams.
- The
Life of a broadcast
guide takes you
through a step-by-step process that explains how to create and manage a live event on YouTube.
Each step explains the API calls or other things that you need to do to complete a specific
action, and your application will need to follow that process when YouTube stops supporting
default streams and broadcasts.
March 31, 2020
Note:
This is a deprecation announcement.
The
sponsor
resource and
sponsors.list
method have been
deprecated and replaced by the
member
resource and
members.list
method.
The
sponsors.list
method will no longer be supported on or after September 30, 2020.
API clients should update calls to the
sponsors.list
method to use the
members.list
method instead. Please see the
YouTube Data API revision history
for more information
about the new resource.
March 11, 2020
The
Ingestion endpoint
section of the
Delivering Live YouTube Content via HLS
guide has been updated to
clarify the process that an encoder should use to complete the
file=
parameter value
when forming the primary and backup ingestion URLs.
February 4, 2020
The
Delivering Live YouTube Content via HLS
guide has been updated to note that
DELETE
requests are optional and that YouTube's
HLS endpoint ignores them. For performance reasons, YouTube recommends clients do not send
DELETE
requests.
January 10, 2020
The API now supports the ability to identify child-directed content, which YouTube calls
"made for kids."
Learn more about
"made for kids" content
in the YouTube Help Center.
-
The
liveBroadcast
resource
supports two new properties to enable content creators and viewers to identify "made for
kids" content:
-
The
selfDeclaredMadeForKids
property enables content creators to specify whether a live broadcast is child-directed
content. This property can be set when
creating a broadcast
via the
liveBroadcasts.insert
method. Note that this property is only included in API
responses that contain
liveBroadcast
resources if the channel owner authorized
the API request.
-
The
madeForKids
property enables any API user to retrieve the "made for kids" status of a broadcast. For
example, the status might be determined based on the value of the
selfDeclaredMadeForKids
property. See the
YouTube Help Center
for more
information about setting the audience for your channel, videos, or broadcasts.
-
In the YouTube Data API, the
channel
resource also supports new
selfDeclaredMadeForKids
and
madeForKids
properties.
We have also updated the YouTube API Services Terms of Service and Developer Policies. Please
see the
YouTube API Services Terms of Service - Revision
History
for more information. The changes to the YouTube API Services Terms of Service and
Developer Policies will take effect on January 10, 2020 Pacific Time.
August 20, 2019
The
Requirements
section of the
Delivering Live YouTube Content via HLS
guide has been updated with two changes:
- It explains that it is a best practice to include both acknowledged segments and outstanding
segments in each Media Playlist. This practice makes it less likely for a segment to be skipped
if a Media Playlist is lost on the server side. For example, you could include up to two
acknowledged segments and up to five outstanding segments in each Media Playlist.
- It is now a requirement to send a Media Playlist for every Media Segment. This enables the
server to recover quickly if a Media Playlist is lost. This practice was previously listed as a
recommendation.
June 28, 2019
YouTube now supports HLS ingestion. Accordingly, the
liveStream
resource's
ingestionType
property supports the new value
hls
to identify streams ingested to YouTube using HLS.
The new
Delivering Live YouTube Content via HLS
guide provides guidelines for using HLS to stream live content to YouTube from an encoder. The guide aims to help encoder vendors add HLS delivery support to their products.
April 4, 2019
This update contains the following changes:
-
The API reference documentation has been updated to better explain common use cases for each method and to provide dynamic, high-quality code samples through the APIs Explorer widget. See the
liveBroadcasts.list
method's documentation for an example. There are now two new elements on pages that describe API methods:
-
The APIs Explorer widget lets you select authorization scopes, enter sample parameter and property values, and then send actual API requests and see actual API responses. The widget also offers a fullscreen view that shows complete code samples, which dynamically update to use the scopes and values that you have entered.
-
The
Common use cases
section describes one or more common use cases for the method explained on the page. For example, you could call the
liveBroadcasts.list
method to retrieve data about a specific broadcast or to retrieve data about the current user's broadcasts.
You can use links in that section to populate the APIs Explorer with sample values for your use case or to open the fullscreen APIs Explorer with those values already populated. These changes aim to make it easier for you to see code samples that are directly applicable to the use case that you're trying to implement in your own application.
Code samples are currently supported for Java, JavaScript, PHP, Python, and curl.
-
The
code samples
page has also a new UI that offers all of the same features described above. Using that tool, you can explore use cases for different methods, load values into the APIs Explorer, and open the fullscreen APIs Explorer to get code samples in Java, JavaScript, PHP, and Python.
In conjunction with this change, the pages that previously listed available code samples for Java, PHP, and Python have been removed.
February 25, 2019
The documentation of the
liveChatMessage
and
superChatEvent
resources has been updated to reflect the fact that both resources can now contain information about Super Stickers. Super Stickers are a type of Super Chat message that displays an image. Like other Super Chats, a Super Sticker message is purchased by a fan during a YouTube live stream.
- In a
liveChatMessage
resource, the
snippet.type
property is now set to
superStickerEvent
to indicate that the resource contains information about a Super Sticker. In that case, the resource also contains the
snippet.superStickerDetails
object, which contains additional information about the Super Sticker.
- In a
superChatEvent
resource, the boolean
snippet.isSuperStickerEvent
indicates whether the Super Chat message is also a Super Sticker. If so, then the
snippet.superStickerMetadata
object contains additional details about the Super Sticker.
April 5, 2018
The description of the
superChatEvents.list
method has been updated to reflect the fact that the API response no longer contains
fanFundingEvents
, which were deprecated in early 2017.
April 3, 2017
New
Java code samples
have been added that show how to
list
,
insert
, and
delete
live chat messages. The samples call the following methods:
February 13, 2017
This update contains the following changes:
February 9, 2017
This update contains the following changes:
February 1, 2017
This update contains the following changes:
January 12, 2017
Note:
This is a deprecation announcement.
In conjunction with the release of the new
Super Chat
feature, YouTube has deprecated the Fan Funding feature, and the Fan Funding API will be turned off on February 28, 2017. As of that date:
August 11, 2016
This update contains the following changes:
-
The newly published YouTube API Services Terms of Service ("the Updated Terms"), discussed in detail on the
YouTube Engineering and Developers Blog
, provides a rich set of updates to the current Terms of Service. In addition to the
Updated Terms
, which will go into effect as of February 10, 2017, this update includes several supporting documents to help explain the policies that developers must follow.
The full set of new documents is described in the
revision history for the Updated Terms
. In addition, future changes to the Updated Terms or to those supporting documents will also be explained in that revision history. You can subscribe to an RSS feed listing changes in that revision history from a link in that document.
May 20, 2016
YouTube now supports DASH ingestion. Accordingly, the
liveStream
resource's
ingestionType
property supports the new value
dash
to identify streams ingested to YouTube using DASH.
The new
Delivering Live YouTube Content via DASH
guide provides guidelines for using the DASH Delivery format to stream live data on YouTube from an encoder. It is intended to help encoder vendors add DASH delivery support to their products.
April 18, 2016
This update contains the following changes:
December 18, 2015
European Union (EU) laws require that certain disclosures must be given to and consents obtained from end users in the EU. Therefore, for end users in the European Union, you must comply with the
EU User Consent Policy
. We have added a notice of this requirement in our
YouTube API Terms of Service
.
December 17, 2015
This update contains the following changes: