<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history</id>
  <title>YouTube Live Streaming API - Revision History</title>
  <updated>2023-10-09T16:00:00:-0800</updated>
  <link rel="self" href="https://developers.google.com/youtube/v3/live/feeds/livestreaming-api-revision-history.xml"/>
  <author>
    <name>YouTube</name>
  </author>
  <entry>
    <title>October 9, 2023</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2023-10-09</id>
    <updated>2023-10-09T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
  <p>For reference only, you can find which Sticker IDs relate to which Super Stickers in this
    <a href="https://youtube.googleapis.com/super_stickers/sticker_ids_to_urls.csv">CSV file</a>.
    The definitions of the <code>liveChatMessage</code> resource's
    <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.superStickerDetails.superStickerMetadata.stickerId">snippet.superStickerDetails.superStickerMetadata.stickerId</a></code>
    property and the <code>superChatEvent</code> resource's
    <code><a href="https://developers.google.com/youtube/v3/live/docs/superChatEvents#snippet.superStickerMetadata.stickerId">snippet.superStickerMetadata.stickerId</a></code>
    property have both been updated to reflect this information.
  </p>
]]>
    </content>
  </entry>
  <entry>
    <title>September 15, 2023</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2023-09-15</id>
    <updated>2023-09-15T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
  <p>The API now supports a new way of inserting ads into live broadcasts. In addition to
    <code><a href="https://developers.google.com/youtube/v3/live/docs/liveCuepoints">liveCuepoints</a></code>, 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.</p>
  <p>If the broadcast owner enables automated ads, they can view the following aspects of
    ad behavior:</p>
    <ul>
      <li>the length of the interval between midroll ad breaks.</li>
      <li>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.</li>
      <li>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.</li>
    </ul>
  <p>The documentation reflects the following API changes to support this feature:</p>
  <ul>
    <li>The <code>liveBroadcast</code> resource now contains a
      <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#monetizationDetails">monetizationDetails</a></code>
      object. The object's fields indicate whether automatic ad insertion is enabled for the
      broadcast and specify additional information for scheduling cuepoints.</li>
    <li>The <code>liveBroadcast.list</code> method's
      <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/list#part">part</a></code> parameter
      supports the value <code>monetizationDetails</code>.</li>
    <li>The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/update">update</a></code> 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.</li>
  </ul>
]]>
    </content>
  </entry>
    <entry>
    <title>August 1, 2023</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2023-08-01</id>
    <updated>2023-08-01T10:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/update">liveBroadcasts.update</a></code>
method no longer requires values for these fields:</p>
<ul>
  <li><code>snippet.title</code></li>
  <li><code>status.privacyStatus</code></li>
</ul>
<p>Omitting these fields from the request will leave them unchanged.</p>
]]>
    </content>
  </entry>
  <entry>
    <title>November 1, 2022</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2022-11-01</id>
    <updated>2022-11-01T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<ul>
    <li>
      <p>The new <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/cuepoint">liveBroadcasts.cuepoint</a></code>
        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
        <code>liveCuepoints.insert</code> method, which only enabled YouTube content partners to
        insert cuepoints into live broadcasts.</p>
      <p>Several guides have been updated to reflect the availability of this new method.</p>
    </li>
     <li>
      <p class="warning"><b>Note:</b> This is a deprecation announcement.</p>
      <p>The <code>liveCuepoints.insert</code> method is now deprecated. Support for the
      <code>liveCuepoints.insert</code> method will be removed on or after May 1, 2023. API
      users should update their applications to call the <code>liveBroadcasts.cuepoint</code>
      method instead.</p>
    </li>
    <li>
      <p>Documentation for the <code>liveBroadcasts.control</code> method has been removed. A
        deprecation notice for that method was posted in September 2020.</p>
    </li>
  </ul>
]]>
    </content>
  </entry>
  <entry>
    <title>October 1, 2022</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2022-10-01</id>
    <updated>2022-10-01T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>The <code><a href="/youtube/v3/live/docs/liveBroadcasts/update">liveBroadcasts.update</a></code>
method no long requires values for these fields:</p>
<ul>
  <li><code>contentDetails.enableContentEncryption</code></li>
  <li><code>contentDetails.enableDvr</code></li>
  <li><code>contentDetails.enableEmbed</code></li>
  <li><code>contentDetails.recordFromStart</code></li>
  <li><code>contentDetails.startWithSlate</code></li>
</ul>
<p>Documentation has been removed for the obsolete <code>liveBroadcast</code>
fields:</p>
<ul>
  <li><code>contentDetails.enableContentEncryption</code></li>
  <li><code>contentDetails.startWithSlate</code></li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>April 1, 2022</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2022-04-01</id>
    <updated>2022-04-01T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>The <code><a href="/youtube/v3/live/docs/liveChatMessages#snippet.type">snippet.type</a></code>
property now supports two new values:</p>
<ul>
  <li><code>membershipGiftingEvent</code></li>
  <li><code>giftMembershipReceivedEvent</code></li>
</ul>
<p>The <code>liveChatMessage</code> resource's new <code><a href="/youtube/v3/live/docs/liveChatMessages#snippet.membershipGiftingDetails">snippet.membershipGiftingDetails</a></code>
property and its children contain information about the Membership Gifting event.</p>
<p>Similarly, the new <code><a href="/youtube/v3/live/docs/liveChatMessages#snippet.giftMembershipReceivedDetails">snippet.giftMembershipReceivedDetails</a></code>
property and its children contain information about the Gift Membership Received event.</p>
]]>
    </content>
  </entry>
  <entry>
    <title>September 15, 2021</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2021-09-15</id>
    <updated>2021-09-15T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>The <code><a href="/youtube/v3/live/docs/liveChatMessages#snippet.type">snippet.type</a></code>
property now supports two new values:</p>
<ul>
  <li><code>newSponsorEvent</code></li>
  <li><code>memberMilestoneChatEvent</code></li>
</ul>
<p>The <code>liveChatMessage</code> resource's new <code><a href="/youtube/v3/live/docs/liveChatMessages#snippet.memberMilestoneChatDetails">snippet.memberMilestoneChatDetails</a></code>
property and its children contain information about the Member Milestone Chat event.</p>
<p>Similarly, the new <code><a href="/youtube/v3/live/docs/liveChatMessages#snippet.newSponsorDetails">snippet.newSponsorDetails</a></code>
property and its children contain information about the New Sponsor event.</p>
]]>
    </content>
  </entry>
  <entry>
    <title>December 1, 2020</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2020-12-01</id>
    <updated>2020-12-01T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>The API's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/transition">liveBroadcasts.transition</a></code>
  method supports a new <code>403</code> (<code>Forbidden</code>) error, which indicates that the user
  has sent too many requests within a given timeframe. The error reason is <code>userRequestsExceedRateLimit</code>.</p>
]]>
    </content>
  </entry>
  <entry>
    <title>September 21, 2020</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2020-09-21</id>
    <updated>2020-09-21T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<ul>
  <li>
    <p>The definition of the <code>liveBroadcast</code> resource's
      <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#status.madeForKids">status.madeForKids</a></code>
      property has been updated to clarify that the property is read-only. This does not reflect a
      change in API functionality.</p>
    <p>To designate a live broadcast as being child-directed, set the
      <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#status.selfDeclaredMadeForKids">status.selfDeclaredMadeForKids</a></code>
      property to <code>true</code> when calling the
      <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/insert">liveBroadcasts.insert</a></code>
      method to create the broadcast.</p>
  </li>
  <li>
    <p class="warning"><b>Note:</b> This change includes a deprecation announcement and an update to
      a prior deprecation announcement.</p>
    <p>The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/control">liveBroadcasts.control</a></code>
      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.</p>
    <p>The deprecation date for the <a href="https://developers.google.com/youtube/v3/live/revision_history#release_notes_04_16_2020">deprecation announcement
      made on 16 April 2020</a>, 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 <code>liveBroadcasts.control</code> method will all be
      deprecated at the same time.
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>July 17, 2020</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2020-07-17</id>
    <updated>2020-07-17T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p class="warning"><b>Note:</b> This is an update to a prior deprecation announcement.</p>

<p>The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams">liveStream</a></code> resource's
<code>cdn.format</code> 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.</p>

<p>If your code still uses the <code>cdn.format</code> field, it must be updated to specify the
frame rate and resolution separately, using the
<code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#cdn.frameRate">cdn.frameRate</a></code> and
<code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#cdn.resolution">cdn.resolution</a></code>
properties.</p>
]]>
    </content>
  </entry>
  <entry>
    <title>July 6, 2020</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2020-07-06</id>
    <updated>2020-07-06T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>The <a href="https://developers.google.com/youtube/v3/live/guides/hls-ingestion">Delivering Live YouTube Content via HLS</a>
  guide has been updated with a few changes:</p>
<ul>
  <li>The recommended duration for a Media Segment has been updated to one to four seconds.</li>
  <li>A new section explains how to
    <a href="https://developers.google.com/youtube/v3/live/guides/hls-ingestion#obtaining_an_hls_ingestion_url_from_youtube_creator_studio">obtain
      an HLS Ingestion URL from YouTube Creator Studio</a>.
  </li>
  <li>
    Instructions for formatting the <code>file</code> parameter value have been moved to the new
    <a href="https://developers.google.com/youtube/v3/live/guides/hls-ingestion#completing_the_hls_ingestion_url">Completing the HLS Ingestion URL</a>
    section. These instructions apply regardless of whether the HLS ingestion URL is obtained from
    the YouTube API or YouTube Creator Studio.
  </li>
</ul>

<p>In addition, the new <a href="https://developers.google.com/youtube/v3/live/guides/ingestion-protocol-comparison">ingestion
    protocol comparison</a> lists the ingestion protocols that YouTube supports, the codecs supported
    for each protocol, and additional information regarding appropriate use cases for each protocol.</p>]]>
    </content>
  </entry>
  <entry>
    <title>April 16, 2020</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2020-04-16</id>
    <updated>2020-04-16T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update includes a new property and a deprecation announcement:</p>

<ul>
  <li>
    <p>The <code>liveBroadcast</code> resource now supports the
      <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.enableAutoStop">contentDetails.enableAutoStop</a></code>
      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.</p>
    <p>The <a href="https://developers.google.com/youtube/v3/live/life-of-a-broadcast">life of a broadcast</a> 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
      <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.enableAutoStart">contentDetails.enableAutoStart</a></code>
      or <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.enableAutoStop">contentDetails.enableAutoStop</a></code>
      properties to <code>true</code>.</p>
  </li>
  <li>
    <p class="warning"><b>Note:</b> 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.</p>

    <p>This update explains a potentially breaking change. It affects API client applications that use
      channels' default <code>liveStream</code> and <code>liveBroadcast</code> resources to stream live
      content on YouTube. Specifically, the <a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#id">broadcast ID</a>
      and <a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#id">stream ID</a> associated with the persistent
      broadcast and stream will no longer function to start new broadcasts.</p>

    <p>Your application will be affected if any of the following are true:</p>
    <ul>
      <li>It checks the value of the <code>liveBroadcast</code> resource's
        <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#snippet.isDefaultBroadcast">isDefaultBroadcast</a></code>
        property. This property will not be returned after the deprecation date.</li>
      <li>It checks the value of the <code>liveStream</code> resource's
        <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#snippet.isDefaultStream">isDefaultStream</a></code>
        property. This property will not be returned after the deprecation date.</li>
      <li>It calls the
        <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/list">liveBroadcasts.list</a></code> method
        and sets the
        <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/list#broadcastType">broadcastType</a></code>
        parameter value to <code>persistent</code> or <code>all</code>. This parameter will be
        deprecated as part of these changes. As of the deprecation date:
        <ul>
          <li>If the <code>broadcastType</code> parameter value is <code>persistent</code>, then the
            <code>liveBroadcasts.list</code> method will not return any results.</li>
          <li>If the <code>broadcastType</code> parameter value is <code>all</code>, then the
            <code>liveBroadcasts.list</code> method will not return persistent broadcasts that
            existed before that time.</li>
        </ul>
      </li>
    </ul>

    <p>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 <i>persistent</i>. It always existed and
      was not bound to a particular event.</p>

    <p>As of the deprecation date:</p>
    <ul>
      <li>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
        <code>liveBroadcast</code> and <code>liveStream</code> resources and to bind those resources
        together.</li>
      <li>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.</li>
      <li>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.</li>
    </ul>

    <p>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:</p>

    <ul>
      <li>A new <a href="https://developers.google.com/youtube/v3/live/guides/migration-guide-default-broadcasts">migration
        guide</a> tries to explain the steps that developers might need to address in API clients
        that currently use default broadcasts and streams.</li>
      <li>The <a href="https://developers.google.com/youtube/v3/live/life-of-a-broadcast">Life of a broadcast</a> 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.</li>
    </ul>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>March 31, 2020</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2020-03-31</id>
    <updated>2020-03-31T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p class="warning"><b>Note:</b> This is a deprecation announcement.</p>

<p>The <code><a href="https://developers.google.com/youtube/v3/live/docs/sponsors">sponsor</a></code> resource and
  <code><a href="https://developers.google.com/youtube/v3/live/docs/sponsors/list">sponsors.list</a></code> method have been
  deprecated and replaced by the <code><a href="https://developers.google.com/youtube/v3/live/docs/members">member</a></code>
  resource and <code><a href="https://developers.google.com/youtube/v3/docs/members/list">members.list</a></code> method.</p>
<p>The <code>sponsors.list</code> method will no longer be supported on or after September 30, 2020.
  API clients should update calls to the <code>sponsors.list</code> method to use the
  <code>members.list</code> method instead. Please see the
  <a href="https://developers.google.com/youtube/v3/revision_history">YouTube Data API revision history</a> for more information
  about the new resource.</p>
]]>
    </content>
  </entry>
  <entry>
    <title>March 11, 2020</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2020-03-11</id>
    <updated>2020-03-11T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>The <a href="https://developers.google.com/youtube/v3/live/guides/hls-ingestion#ingestion_endpoint">Ingestion
  endpoint</a> section of the <b>Delivering Live YouTube Content via HLS</b> guide has been updated
  to clarify the process that an encoder should use to complete the <code>file=</code> parameter
  value when forming the primary and backup ingestion URLs.</p>
]]>
    </content>
  </entry>
  <entry>
    <title>February 04, 2020</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2020-02-04</id>
    <updated>2020-02-04T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>The <a href="https://developers.google.com/youtube/v3/live/guides/hls-ingestion">Delivering Live
   YouTube Content via HLS</a> guide has been updated to note that <code>DELETE</code> requests are
   optional and that YouTube's HLS endpoint ignores them. For performance reasons, YouTube
   recommends clients do not send <code>DELETE</code> requests.</p>
]]>
    </content>
  </entry>
  <entry>
    <title>January 10, 2020</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2020-01-10</id>
    <updated>2020-01-10T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>The API now supports the ability to identify child-directed content, which YouTube calls
  "made for kids." <a href="https://support.google.com/youtube/answer/9528076">Learn more about
  "made for kids" content</a> in the YouTube Help Center.</p>
<ul>
  <li>
    The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts">liveBroadcast</a></code>
    resource supports two new properties to enable content creators and viewers to identify "made for
    kids" content:
    <ul>
      <li>
        The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#status.selfDeclaredMadeForKids">selfDeclaredMadeForKids</a></code>
        property enables content creators to specify whether a live broadcast is child-directed
        content. This property can be set when
        <a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/insert">creating a broadcast</a> via the
        <code>liveBroadcasts.insert</code> method. Note that this property is only included in API
        responses that contain <code>liveBroadcast</code> resources if the channel owner authorized
        the API request.
      </li>
      <li>
        The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#status.madeForKids">madeForKids</a></code>
        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
        <code>selfDeclaredMadeForKids</code> property. See the
        <a href="https://support.google.com/youtube/answer/9527654">YouTube Help Center</a> for more
        information about setting the audience for your channel, videos, or broadcasts.
      </li>
    </ul>
  </li>
  <li>
    In the YouTube Data API, the <code><a href="https://developers.google.com/youtube/v3/docs/channels">channel</a></code>
    resource also supports new <code>selfDeclaredMadeForKids</code> and <code>madeForKids</code>
    properties.
  </li>
</ul>

<p>We have also updated the YouTube API Services Terms of Service and Developer Policies. Please
  see the <a href="https://developers.google.com/youtube/terms/revision-history">YouTube API Services Terms of Service - Revision
  History</a> 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.</p>
]]>
    </content>
  </entry>
  <entry>
    <title>August 20, 2019</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2019-08-20</id>
    <updated>2019-08-20T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>The <a href="https://developers.google.com/youtube/v3/live/guides/hls-ingestion#requirements">Requirements</a> section of the <b>Delivering Live YouTube Content via HLS</b> guide has been updated with two changes:</p>

<ul>
  <li>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.</li>
  <li>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.</li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>June 28, 2019</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2019-06-28</id>
    <updated>2019-06-28T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>YouTube now supports HLS ingestion. Accordingly, the <code>liveStream</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#cdn.ingestionType">ingestionType</a></code> property supports the new value <code>hls</code> to identify streams ingested to YouTube using HLS.</p>

<p>The new <a href="https://developers.google.com/youtube/v3/live/guides/hls-ingestion">Delivering Live YouTube Content via HLS</a> 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.</p>

]]>
    </content>
  </entry>
  <entry>
    <title>April 4, 2019</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2019-04-04</id>
    <updated>2019-04-04T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p>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 <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/list">liveBroadcasts.list</a></code> method's documentation for an example. There are now two new elements on pages that describe API methods:</p>
    <ul>
      <li>
        <p>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.</p>
      </li>
      <li>
        <p>The <b>Common use cases</b> section describes one or more common use cases for the method explained on the page. For example, you could call the <code>liveBroadcasts.list</code> method to retrieve data about a specific broadcast or to retrieve data about the current user's broadcasts.</p>
        <p>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.</p>
      </li>
    </ul>

    <p>Code samples are currently supported for Java, JavaScript, PHP, Python, and curl.</p>
  </li>
  <li>
    <p>The <a href="https://developers.google.com/youtube/v3/live/code_samples/">code samples</a> 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.</p>
    <p>In conjunction with this change, the pages that previously listed available code samples for Java, PHP, and Python have been removed.</p>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>February 25, 2019</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2019-02-25</id>
    <updated>2019-02-25T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
      <p>The documentation of the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages">liveChatMessage</a></code> and <code><a href="https://developers.google.com/youtube/v3/live/docs/superChatEvents">superChatEvent</a></code> 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.</p>

<ul>
  <li>In a <code>liveChatMessage</code> resource, the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.type">snippet.type</a></code> property is now set to <code>superStickerEvent</code> to indicate that the resource contains information about a Super Sticker. In that case, the resource also contains the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.superStickerDetails">snippet.superStickerDetails</a></code> object, which contains additional information about the Super Sticker.</li>
  <li>In a <code>superChatEvent</code> resource, the boolean <code><a href="https://developers.google.com/youtube/v3/live/docs/superChatEvents#snippet.isSuperStickerEvent">snippet.isSuperStickerEvent</a></code> indicates whether the Super Chat message is also a Super Sticker. If so, then the <code><a href="https://developers.google.com/youtube/v3/live/docs/superChatEvents#snippet.superStickerMetadata">snippet.superStickerMetadata</a></code> object contains additional details about the Super Sticker.</li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>April 5, 2018</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2018-04-05</id>
    <updated>2018-04-05T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>The description of the <code><a href="https://developers.google.com/youtube/v3/live/docs/superChatEvents/list">superChatEvents.list</a></code> method has been updated to reflect the fact that the API response no longer contains <code>fanFundingEvents</code>, which were deprecated in early 2017.</p>
]]>
    </content>
  </entry>
  <entry>
    <title>April 3, 2017</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2017-04-03</id>
    <updated>2017-04-03T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>New <a href="https://developers.google.com/youtube/v3/live/code_samples/java">Java code samples</a> have been added that show how to <a href="https://developers.google.com/youtube/v3/live/code_samples/java#list_live_chat_messages">list</a>, <a href="https://developers.google.com/youtube/v3/live/code_samples/java#insert_a_live_chat_message">insert</a>, and <a href="https://developers.google.com/youtube/v3/live/code_samples/java#delete_a_live_chat_message">delete</a> live chat messages. The samples call the following methods:</p>
<ul>
  <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/list#examples">liveBroadcasts.list</a></code></li>
  <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages/list#examples">liveChatMessages.list</a></code></li>
  <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages/insert#examples">liveChatMessages.insert</a></code></li>
  <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages/delete#examples">liveChatMessages.delete</a></code></li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>February 13, 2017</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2017-02-13</id>
    <updated>2017-02-13T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>
<ul>
  <li>
    <p><strong>Updates to existing resources and methods</strong></p>
    <ul>
      <li>
        <p>The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveCuepoints/insert">liveCuepoints.insert</a></code> method has been updated to reflect the fact that the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveCuepoints/insert#onBehalfOfContentOwner">onBehalfOfContentOwner</a></code> parameter is currently required. In addition, the method's description has been updated to note that calls to that method must be authorized by an account associated with a YouTube Content Owner.</p>
      </li>
    </ul>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>February 9, 2017</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2017-02-09</id>
    <updated>2017-02-09T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>
<ul>
  <li>
    <p><strong>Updates to existing resources and methods</strong></p>
    <ul>
      <li>
        <p>The <code>superChatEvents.list</code> method's new <code><a href="https://developers.google.com/youtube/v3/live/docs/superChatEvents/list#hl">hl</a></code> parameter lets you specify that the <code><a href="https://developers.google.com/youtube/v3/live/docs/superChatEvents#snippet.displayString">snippet.displayString</a></code> property value should be formatted according to the conventions of a particular language. That property's definition has also been updated accordingly.</p>
        <p>The parameter value must be a language code included in the list returned by the <code><a href="https://developers.google.com/youtube/v3/docs/i18nLanguages/list">i18nLanguages.list</a></code> method. The default value is <code>en</code>, which means that the default behavior is to format display strings as they would be used in English. For example, by default, a string is formatted as <code>$1.00</code> rather than <code>$1,00</code>.</td>
      </li>
    </ul>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>February 1, 2017</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2017-02-01</id>
    <updated>2017-02-01T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>
<ul>
  <li>
    <p><strong>New resources and methods</strong></p>
    <ul>
      <li>
        <p>The new <code><a href="https://developers.google.com/youtube/v3/live/docs/superChatEvents">superChatEvent</a></code> resource represents a Super Chat message purchased by a fan during a YouTube live stream. In the YouTube live chat stream, Super Chats stand out from other messages in two ways:</p>
        <p><ul>
          <li>Super Chats are highlighted with a color.</li>
          <li>Super Chats stay pinned in the ticker for a set period of time.</li>

        </ul></p>
        <p>The color of the Super Chat, the period of time it stays pinned in the ticker, and the maximum message length are all determined by the purchase amount. The <a href="https://support.google.com/youtube/answer/7277005">YouTube Help Center</a> has more information about Super Chats.</p>
        <p>The API supports a method to <a href="https://developers.google.com/youtube/v3/live/docs/superChatEvents/list">list</a> Super Chat events for a channel's live streams in the previous 30 days. That method also returns data about Fan Funding events (<code><a href="https://developers.google.com/youtube/v3/live/docs/fanFundingEvents">fanFundingEvents</a></code>) from the channel's last live stream.</p>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>Updates to existing resources and methods</strong></p>
    <ul>
      <li>
        <p>The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.type">snippet.type</a></code> property now supports the <code>superChatEvent</code> value, which indicates that the resource describes a Super Chat.</p>
        <p>In addition, the <code>liveChatMessage</code> resource's new <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.superChatDetails">snippet.superChatDetails</a></code> property and its children contain information about the Super Chat event.</p>
      </li>
      <li>
        <p>The <code>liveStream</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#cdn.resolution">cdn.resolution</a></code> property now supports the value <code>2160p</code>.</p>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>New and updated errors</strong></p>
    <ul>
      <li>
        <p>The API supports the following new errors:</p>
        <table class="responsive errors" id="property-table">
          <thead>
            <tr>
              <th colspan="2">Error details</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td class="error-name"><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/insert">liveBroadcasts.insert</a></code>, <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/update">liveBroadcasts.update</a></code></td>
              <td class="error-reason">The <code>liveBroadcasts.insert</code> and <code>liveBroadcasts.update</code> methods return <code>400</code> (<code>Bad Request</code>) errors to indicate that the <code>liveBroadcast</code> resource being inserted or updated contains an invalid value for either the <code>contentDetails.enableEmbed</code> property or the <code>contentDetails.projection</code> property. The error reasons for the two new errors are <code>invalidEmbedSetting</code> and <code>invalidProjection</code>, respectively.</td>
            </tr>
          </tbody>
        </table>
      </li>
    </ul>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>January 12, 2017</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2017-01-12</id>
    <updated>2017-01-12T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p class="warning"><b>Note:</b> This is a deprecation announcement.</p>

<p>In conjunction with the release of the new <a href="https://youtube.googleblog.com/2017/01/can-we-chat-hello-super-chat.html">Super Chat</a> 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:
<ul>
  <li>The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages/list">liveChatMessages.list</a></code> method will no longer return messages with a <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.type">snippet.type</a></code> of <code>fanFundingEvent</code>. Similarly, <code>liveChatMessage</code> resources will no longer contain the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.fanFundingEventDetails">snippet.fanFundingEventDetails</a></code> object.</li>
  <li>The <code><a href="https://developers.google.com/youtube/v3/live/docs/fanFundingEvents/list">fanFundingEvents.list</a></code> method will no longer return data.</li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>August 11, 2016</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2016-08-11</id>
    <updated>2016-08-11T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p>The newly published YouTube API Services Terms of Service ("the Updated Terms"), discussed in detail on the <a href="http://youtube-eng.blogspot.com/">YouTube Engineering and Developers Blog</a>, provides a rich set of updates to the current Terms of Service. In addition to the <a href="https://developers.google.com/youtube/terms/api-services-terms-of-service">Updated Terms</a>, 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.</p>
    <p>The full set of new documents is described in the <a href="https://developers.google.com/youtube/terms/revision-history">revision history for the Updated Terms</a>. 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.</p>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>May 20, 2016</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2016-05-20</id>
    <updated>2016-05-20T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>YouTube now supports DASH ingestion. Accordingly, the <code>liveStream</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#cdn.ingestionType">ingestionType</a></code> property supports the new value <code>dash</code> to identify streams ingested to YouTube using DASH.</p>

<p>The new <a href="https://developers.google.com/youtube/v3/live/guides/encoding-with-dash">Delivering Live YouTube Content via DASH</a> 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.</p>
]]>
    </content>
  </entry>
  <entry>
    <title>April 18, 2016</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2016-04-18</id>
    <updated>2016-04-18T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p><strong>Updates to existing resources and methods</strong></p>
    <ul>
      <li><b><code>liveStream</code> resource updates</b>
        <ul>
          <li>
            <p>YouTube now supports DASH ingestion. Accordingly, the <code>liveStream</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.ingestionType">ingestionType</a></code> property supports the new value <code>dash</code> to identify streams ingested to YouTube using DASH.</p>
          </li>
          <li>
            <p>YouTube now supports streams with 1440p resolution at either 30 or 60 frames per second.</p>
            <p>In addition, the <code>liveStream</code> resource contains new properties for specifying the frame rate and resolution of the inbound video data:</p>
            <table class="responsive properties">
              <tr>
                <th colspan="2">Properties</th>
              </tr>
              <tr>
                <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#cdn.frameRate">cdn.frameRate</a></code></nobr></td>
                <td>The frame rate of the inbound video data. Valid values are <code>30fps</code> and <code>60fps</code>.</td>
              </tr>
              <tr>
                <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#cdn.resolution">cdn.resolution</a></code></nobr></td>
                <td>The resolution of the inbound video data. Valid property values are: <code>1440p</code>, <code>1080p</code>, <code>720p</code>, <code>480p</code>, <code>360p</code>, and <code>240p</code>.</td>
              </tr>
            </table>
          </li>
          <li>
            <p>In accordance with the introduction of the <code>liveStream</code> resource's <code>cdn.frameRate</code> and <code>cdn.resolution</code> properties, the resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#cdn.format">cdn.format</a></code> is now deprecated. The <code>cdn.format</code> property specifies resolution and frame rate in a single value.</p>
            <p>We encourage you to transition to the newly supported fields. In the meantime, <code>cdn.format</code> continues to work. In addition, requests to insert live streams currently succeed as long as you specify values for either the <code>cdn.format</code> property <em>or</em> the <code>cdn.frameRate</code> and <code>cdn.resolution</code> properties. If you provide values for all three properties, the API might return an error if the values are not in agreement.</p>
            <p>Note that even though the <code>cdn.format</code> property is deprecated, it does now support two new values, <code>1440p</code> and <code>1440p_hfr</code>, to reflect the API's support for 1440p streams at either 30 or 60 frames per second.</p>
          </li>
        </ul>
      </li>
      <li><b><code>liveBroadcast</code> resource updates</b>
        <ul>
          <li>
            <p>The <code>liveBroadcast</code> resource contains the following new properties:</p>
            <table class="responsive properties">
              <tr>
                <th colspan="2">Properties</th>
              </tr>
              <tr>
                <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.boundStreamLastUpdateTimeMs">contentDetails.boundStreamLastUpdateTimeMs</a></code></nobr></td>
                <td>The date and time that the live stream referenced by the broadcast's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.boundStreamId">contentDetails.boundStreamId</a></code> property was last updated.</td>
              </tr>
              <tr>
                <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.projection">contentDetails.projection</a></code></nobr></td>
                <td>The broadcast's projection format. The property's default value is <code>rectangular</code>. Valid values for the property are <code>360</code> and <code>rectangular</code>.</td>
              </tr>
            </table>
          </li>
          <li>
            <p>The definition of the <code>liveBroadcast</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#statistics.totalChatCount">statistics.totalChatCount</a></code> property has been updated to note that the property value only shows up if the broadcast has at least one chat message.</p>
          </li>
        </ul>
      </li>
      <li><b><code>liveChatMessage</code> resource updates</b>
        <ul>
          <li>
            <p>The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.type">snippet.type</a></code> property supports two new values &ndash; <code>messageDeletedEvent</code> and <code>userBannedEvent</code> &ndash; that correspond to the new properties described in the following bullet point. The definition of the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.authorChannelId">snippet.authorChannelId</a></code> property has also been updated to explain what the property value identifies for these new message types.</p>
          </li>
          <li>
            <p>The <code>liveChatMessage</code> resource contains the following new properties:</p>
            <table class="responsive properties">
              <tr>
                <th colspan="2">Properties</th>
              </tr>
              <tr>
                <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.messageDeletedDetails">snippet.messageDeletedDetails</a></code></nobr></td>
                <td>This object contains information about a message that was deleted by a chat moderator. The object is only present if the <code>snippet.type</code> property value is <code>messageDeletedEvent</code>.</td>
              </tr>
              <tr>
                <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.userBannedDetails">snippet.userBannedDetails</a></code></nobr></td>
                <td>This object contains information about a user who has been banned from participating in the chat. The object also contains information about the ban itself, namely whether the ban is permanent or temporary. If the ban is temporary, one of the object's properties specifies the duration of the ban.<br><br>This object is only present if the <code>snippet.type</code> property value is <code>userBannedEvent</code>.</td>
              </tr>
            </table>
          </li>
        </ul>
      </li>

    </ul>
  </li>
  <li>
    <p><strong>New and updated errors</strong></p>
    <ul>
      <li>
        <p>The API supports the following new errors:</p>
        <table class="responsive errors" id="property-table">
          <thead>
            <tr>
              <th colspan="2">Error details</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td class="error-name"><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/bind">liveBroadcasts.bind</a></code></td>
              <td class="error-reason">The <code>liveBroadcasts.bind</code> method returns a <code>403</code> (<code>Forbidden</code>) error to indicate that the user has sent too many requests within a given timeframe. The error reason is <code>userRequestsExceedRateLimit</code>.<br><br>The <code>liveBroadcasts.insert</code> and <code>liveBroadcasts.update</code> methods already support the same error.</td>
            </tr>
            <tr>
              <td class="error-name"><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/insert">liveStreams.insert</a></code></td>
              <td class="error-reason">The <code>liveStreams.insert</code> method supports four new <code>400</code> (<code>Bad Request</code>) errors that identify an invalid property value in the <code>liveStream</code> resource that the request tried to insert. The following list identifies the error reasons and the properties with which they are associated:<br>
                <ul>
                  <li><code>invalidFormat</code>: <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.format">cdn.format</a></code></li>
                  <li><code>invalidFrameRate</code>: <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.frameRate">cdn.frameRate</a></code></li>
                  <li><code>invalidIngestionType</code>: <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.ingestionType">cdn.ingestionType</a></code></li>
                  <li><code>invalidResolution</code>: <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.resolution">cdn.resolution</a></code></li>
                </ul>
              </td>
            </tr>
            <tr>
              <td class="error-name"><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/insert">liveStreams.insert</a></code></td>
              <td class="error-reason">The <code>liveStreams.insert</code> method supports two new <code>400</code> (<code>Bad Request</code>) errors, each of which indicates that a required value is not present in the <code>liveStream</code> resource that the request tried to insert. The following list identifies the error reasons and the properties with which they are associated:<br>
                <ul>
                  <li><code>frameRateRequired</code>: <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.frameRate">cdn.frameRate</a></code></li>
                  <li><code>resolutionRequired</code>: <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.resolution">cdn.resolution</a></code></li>
                </ul>
                More specifically, when you insert a <code>liveStream</code> resource, you must specify a value for either the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.format">cdn.format</a></code> property or for the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.frameRate">cdn.frameRate</a></code> <em>and</em> <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.resolution">cdn.resolution</a></code> properties.<br>
                <ul>
                  <li>The API returns a <code>formatRequired</code> error if you do not specify a value for any of the three properties.</li>
                  <li>The API returns a <code>frameRateRequired</code> error if you specify a value for <code>cdn.resolution</code> but not <code>cdn.frameRate</code>.</li>
                  <li>The API returns a <code>resolutionRequired</code> error if you specify a value for <code>cdn.frameRate</code> but not <code>cdn.resolution</code>.</li>
                </ul>
              </td>
            </tr>
            <tr>
              <td class="error-name"><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/update">liveStreams.update</a></code></td>
              <td class="error-reason">The <code>liveStreams.update</code> method returns a <code>403</code> (<code>Forbidden</code>) error if the request tries to modify the value of any of the following non-mutable properties:
                <ul>
                  <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.format">cdn.format</a></code></li>
                  <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.frameRate">cdn.frameRate</a></code></li>
                  <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.ingestionType">cdn.ingestionType</a></code></li>
                  <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/cdn.resolution">cdn.resolution</a></code></li>
                </ul>
                The <code>reason</code> in the error response is <code>liveStreamModificationNotAllowed</code>.</td>
            </tr>
          </tbody>
        </table>
      </li>
    </ul>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>December 18, 2015</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2015-12-18</id>
    <updated>2015-12-18T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>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 <a href="http://www.google.com/about/company/user-consent-policy.html">EU User Consent Policy</a>. We have added a notice of this requirement in our <a href="https://developers.google.com/youtube/terms#notices-to-users">YouTube API Terms of Service</a>.</p>
]]>
    </content>
  </entry>
  <entry>
    <title>December 17, 2015</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2015-12-17</id>
    <updated>2015-12-17T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p><strong>New resources and methods</strong></p>
    <ul>
      <li>
        <p>The API supports several new resources to support chat functionality for live broadcasts. YouTube supports live chat functionality during active live broadcasts, and these resources and their methods support retrieval of chat messages as well as administrative functions for the chat.</p>
        <table class="responsive resources">
          <tr>
            <th colspan="2">Resources</th>
          </tr>
          <tr>
            <td><code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages">liveChatMessage</a></code></td>
            <td>This resource represents a message in a YouTube live chat. YouTube supports several types of messages, including text messages and Fan Funding events. Some message types identify a particular phase of the chat, such as the beginning of a sponsors-only period or the end of the chat. The API supports methods to list, insert, and delete live chat messages.</td>
          </tr>
          <tr>
            <td><code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatModerators">liveChatModerators</a></code></td>
            <td>This resource identifies a chat moderator. Moderators can perform some administrative functions, such as banning users from the chat or removing messages. The API supports methods to list, insert, and delete live chat moderators.</td>
          </tr>
          <tr>
            <td><code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatBans">liveChatBans</a></code></td>
            <td>This resource identifies a user who is banned from posting messages to a particular live chat. Bans can be temporary or permanent. The API supports methods to insert and delete live chat bans.</td>
          </tr>
          <tr>
            <td><code><a href="https://developers.google.com/youtube/v3/live/docs/fanFundingEvents">fanFundingEvents</a></code></td>
            <td>This resource represents a Fan Funding event on a YouTube channel. Fan Funding provides a way for viewers to voluntarily support YouTube Creators with one-time monetary support.<br><br>
            The API's <code><a href="https://developers.google.com/youtube/v3/docs/fanFundingEvents/list">fanFundingEvents.list</a></code> method lists a channel's Fan Funding events. Fan Funding events that are initiated through a live chat during a live broadcast owned by the channel also trigger a <a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.type"><code>fanFundingEvent</code> message</a> to the broadcast's live chat.<br><br>
            Learn more about Fan Funding in the <a href="https://support.google.com/youtube/answer/6052077">YouTube Help Center</a>.</td>
          </tr>
          <tr>
            <td><code><a href="https://developers.google.com/youtube/v3/live/docs/sponsors">sponsors</a></code></td>
            <td>The <code><a href="https://developers.google.com/youtube/v3/live/docs/sponsors">sponsor</a></code> resource identifies a sponsor of a YouTube channel. A sponsor pays a monthly fee to a channel. A badge shows up next to the sponsor's messages in the channel's live chats and sponsors can also participate in live chats exclusively for the channel's sponsors, if those occur.<br><br>
            The API's <code><a href="https://developers.google.com/youtube/v3/live/docs/sponsors/list">sponsors.list</a></code> method lists a channel's sponsors. When users sign up to sponsor a channel during a live broadcast owned by that channel, the API also adds a <a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages#snippet.type"><code>newSponsorEvent</code> message</a> to the broadcast's live chat.<br><br>
            <p>Learn more about sponsorships in the <a href="https://support.google.com/youtube/answer/6304294">YouTube Help Center</a>.</td>
          </tr>
        </table>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>Updates to existing resources and methods</strong></p>
    <ul>
      <li>
        <p>The <code>liveBroadcast</code> resource contains the following new properties:</p>
        <table class="responsive properties">
          <tr>
            <th colspan="2">Properties</th>
          </tr>
          <tr>
            <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#snippet.liveChatId">snippet.liveChatId</a></code></nobr></td>
            <td>The ID for the broadcast's YouTube live chat. With this ID, you can use the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChatMessages">liveChatMessage</a></code> resource's methods to retrieve, insert, or delete chat messages. You can also add or remove chat moderators, ban users from participating in live chats, or remove existing bans.</td>
          </tr>
          <tr>
            <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.closedCaptionsType">contentDetails.closedCaptionsType</a></code></nobr></td>
            <td><b>Note: This property <em>replaces</em> the <code>contentDetails.enableClosedCaptions</code> property.</b><br><br>This property indicates whether closed captioning is enabled for your broadcast and, if so, what type of closed captions you are providing:<ul><li><code>closedCaptionsDisabled</code>: Closed captions are disabled for the live broadcast.</li><li><code>closedCaptionsHttpPost</code>: You will send captions, via HTTP POST, to an <a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#contentDetails.closedCaptionsIngestionUrl">ingestion URL</a> associated with your live stream.</li><li><code>closedCaptionsEmbedded</code>: Captions will be encoded in the video stream using EIA-608 and/or CEA-708 formats.</li></ul></td>
          </tr>
          <tr>
            <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.enableClosedCaptions">contentDetails.enableClosedCaptions</a></code></nobr></td>
            <td>This property has been deprecated as of December 17, 2015. Use the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.closedCaptionsType">contentDetails.closedCaptionsType</a></code> property instead. For API clients that are already using this property:<ul><li>Setting the property value to <code>true</code> is equivalent to setting the <code>contentDetails.closedCaptionsType</code> property to <code>closedCaptionsHttpPost</code>.</li><li>Setting the property value to <code>false</code> is equivalent to setting the <code>contentDetails.closedCaptionsType</code> property to <code>closedCaptionsDisabled</code>.</td>
          </tr>
        </table>
      </li>
      <li>
        <p>The <code>liveBroadcasts.list</code> method's new <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/list#broadcastType">broadcastType</a></code> parameter lets you filter an API response to include event broadcasts, persistent broadcasts, or all broadcasts.</p>
        <p>A persistent broadcast is one that always exists and is not tied to a particular event. Specifically, a channel's <a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#snippet.isDefaultBroadcast">default broadcast</a> is a persistent broadcast, and it is accessible via the <a href="https://www.youtube.com/live_dashboard">Live Dashboard</a> in the YouTube Creator Studio. The channel's other broadcasts are event broadcasts.</p>
      </li>
    </ul>
  </li>
  <li>
    <p>The <code>liveStream</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#status.healthStatus.configurationIssues[].type">status.healthStatus.configurationIssues[].type</a></code> field reports the following new health status errors:</p>
    <table class="responsive errors">
      <thead>
        <tr>
          <th colspan="2">Errors</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><code>audioTooManyChannels</code></td>
          <td>The audio has more than two channels, but only one (mono) or two (stereo) channels are supported. Please correct the number of audio channels.</td>
        </tr>
        <tr>
          <td><code>frameRateHigh</code></td>
          <td>The current framerate is too high. Please set the framerate to <nobr><code>%(framerate)s</code></nobr> fps or less.</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li>
    <p>The publication date of the previous documentation update was corrected.</p>
  </li>
  <li>
    <p><strong>New and updated errors</strong></p>
    <ul>
      <li>
        <p>In addition to errors defined for the new resources listed above, the API supports the following new errors:</p>
        <table class="responsive errors">
          <thead>
            <tr>
              <th colspan="2">Error details</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/update">liveBroadcasts.update</a></code></nobr></td>
              <td>
                <table>
                  <tr>
                    <td>HTTP Response Code</td><td><code>forbidden (403)</code></td>
                  </tr>
                  <tr>
                    <td>Reason</td><td><code>closedCaptionsTypeModificationNotAllowed</code></td>
                  </tr>
                  <tr>
                    <td>Description</td><td>The <code>contentDetails.closedCaptionsType</code> value can only be modified when the broadcast is in the <code>created</code> or <code>ready</code> status.</td>
                  </tr>
                </table>
              </td>
            </tr>
            <tr>
              <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/update">liveBroadcasts.update</a></code></nobr></td>
              <td>
                <table>
                  <tr>
                    <td>HTTP Response Code</td><td><code>invalidValue (400)</code></td>
                  </tr>
                  <tr>
                    <td>Reason</td><td><code>invalidEnableClosedCaptions</code></td>
                  </tr>
                  <tr>
                    <td>Description</td><td>In the <a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#resource">liveBroadcast resource</a>, the value of the <code>contentDetails.enableClosedCaptions</code> property is incompatible with the value of the <code>contentDetails.closedCaptionType</code> setting. Modify the resource to only include one of the two properties, and then resubmit the request.</td>
                  </tr>
                </table>
              </td>
            </tr>
          </tbody>
        </table>
      </li>
    </ul>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>June 22, 2015</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2015-06-22</id>
    <updated>2015-06-22T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p><strong>Updates to existing resources and methods</strong></p>
    <ul>
      <li>
        <p>The <code>liveStream</code> resource contains the following new properties:</p>
        <table class="responsive properties">
          <tr>
            <th colspan="2">Properties</th>
          </tr>
          <tr>
            <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#snippet.isDefaultStream">snippet.isDefaultStream</a></code></nobr></td>
            <td>Indicates whether this stream is the default stream for the channel. A channel's default stream exists indefinitely, does not have a start or end time associated with it, and cannot be deleted. See the property's definition for more information about how default streams work.</td>
          </tr>
          <tr>
            <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#status.healthStatus">status.healthStatus</a></code></nobr></td>
            <td>This object contains information that could be used to identify, diagnose and resolve streaming problems. The object contains a number of child properties to help you evaluate the health of a live video stream.<br><br>In particular, the <code>status.healthStatus.configurationIssues[]</code> object lists issues affecting a video stream. A new document, <a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/health_status_messages">Configuration Issues for LiveStream Resources</a>, lists all of the issues that the API reports.</td>
          </tr>
          <tr>
            <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.isReusable">contentDetails.isReusable</a></code></nobr></td>
            <td>Indicates whether the stream is reusable, which means that it can be bound to multiple broadcasts. It is common for broadcasters to reuse the same stream for many different broadcasts if those broadcasts occur at different times.</td>
          </tr>
        </table>
      </li>
      <li>
        <p>The <code>liveBroadcast</code> resource contains the following new properties:</p>
        <table class="responsive properties">
          <tr>
            <th colspan="2">Properties</th>
          </tr>
          <tr>
            <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#snippet.isDefaultBroadcast">snippet.isDefaultBroadcast</a></code></nobr></td>
            <td>Indicates whether this broadcast is the default broadcast for the channel. When a YouTube channel is enabled for live streaming, YouTube creates a default stream and a default broadcast for the channel. The stream defines how the channel owner sends live video to YouTube, and the broadcast is how viewers can see the default stream. See the property's definition for more information about how default broadcasts work.</td>
          </tr>
          <tr>
            <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.enableLowLatency">contentDetails.enableLowLatency</a></code></nobr></td>
            <td>Indicates whether this broadcast should be encoded for low-latency streaming. A low-latency stream can reduce the amount of time it takes for video to be visible to users watching a broadcast, though it can also impact stream viewers' experience.</td>
          </tr>
          <tr>
            <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#statistics.totalChatCount">statistics.totalChatCount</a></code></nobr></td>
            <td>The total number of live chat messages associated with the broadcast. The property and its value are present if the broadcast is public, has the live chat feature enabled, and has at least one message. Note that this property will not specify a value after the broadcast ends. So, this property would not identify the number of chat messages for an archived video of a completed live broadcast.</td>
          </tr>
        </table>
      </li>
    </ul>
  </li>
  <li>
    <p><strong>New and updated errors</strong></p>
    <ul>
      <li>
        <p>In addition to errors defined for the new <code><a href="https://developers.google.com/youtube/v3/live/docs/liveChats">liveChat</a></code> resource, the API supports the following new error:</p>
        <table class="responsive errors">
          <thead>
            <tr>
              <th colspan="2">Error Details</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td><nobr><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/update">liveStreams.update</a></code></nobr></td>
              <td>
                <table>
                  <tr>
                    <td>HTTP Response Code</td><td><code>forbidden (403)</code></td>
                  </tr>
                  <tr>
                    <td>Reason</td><td><code>liveStreamModificationNotAllowed</code></td>
                  </tr>
                  <tr>
                    <td>Description</td><td>The API does not allow you to change a reusable stream to be non-reusable, or vice versa. For more information, see <a href="https://developers.google.com/youtube/v3/live/broadcasts-and-streams">Understanding Broadcasts and Streams</a></td>
                  </tr>
                  </tr>
                </table>
              </td>
            </tr>
          </tbody>
        </table>
      </li>
    </ul>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>May 21, 2015</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2015-05-21</id>
    <updated>2015-05-21T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p>YouTube now supports live video streaming at 60 frames per second (fps), which means smoother playback for gaming and other fast-action videos. When you start a live stream on YouTube at 60fps, YouTube also makes the stream available in 30fps on devices where high-frame-rate viewing is not yet available.</p>
    <p>The <code>liveStream</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#cdn.format">cdn.format</a></code> property supports two new values for this feature: <code>720p_hfr</code> and <code>1080p_hfr</code>.</p>
    <p>See the <a href="http://youtubecreator.blogspot.com/2015/05/60fps-live-streaming-on-youtube-in-html5.html">YouTube Creators Blog</a> for more information about this feature.</p>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>August 21, 2014</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2014-08-21</id>
    <updated>2014-08-21T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p>The definition of the <code>liveBroadcasts.control</code> method's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/control#walltime">walltime</a></code> parameter has been updated to note that the property value is specified in ISO 8601 format (<code>YYYY-MM-DDThh:mm:ss.sssZ</code>).</p>
  </li>
  <li>
    <p>The API now supports the following errors:</p>
    <table class="matchpre" id="property-table">
      <thead>
        <tr>
          <th>Error type</th>
          <th>Error detail</th>
          <th>Description</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td class="error-name"><code>insufficientPermissions</code></td>
          <td class="error-reason"><code>liveStreamingNotEnabled</code></td>
          <td class="error-cause">All methods for the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts">liveBroadcast</a></code> and <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams">liveStream</a></code> resources return this error if the user that authorized the API request has not been enabled to stream live video on YouTube. Details explaining why the user cannot stream live video may be available in the user's channel settings at <a href="https://www.youtube.com/features">https://www.youtube.com/features</a>.</td>
        </tr>
        <tr>
          <td class="error-name"><code>rateLimitExceeded</code></td>
          <td class="error-reason"><code>userRequestsExceedRateLimit</code></td>
          <td class="error-cause">The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/insert">liveBroadcasts.insert</a></code> and <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/insert">liveStreams.insert</a></code> methods both return this error to indicate that the user has sent too many requests within a given timeframe.</td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>May 2, 2014</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2014-05-02</id>
    <updated>2014-05-02T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p>The descriptions of the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams">liveStream</a></code> resource and of the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/bind">liveBroadcasts.bind</a></code> method have been updated to note that a broadcast can only be bound to one video stream, but a video stream can be bound to more than one broadcast. This change is solely a correction to the documentation; the underlying API functionality has not changed.</p>
  </li>
  <li>
    <p>The <code>liveBroadcast</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.monitorStream.enableMonitorStream">contentDetails.monitorStream.enableMonitorStream</a></code> property has been updated to explain that if the property's value is <code>true</code>, then you must transition your broadcast to the <code>testing</code> state before you can transition it to the <code>live</code> state. (If the property's value is <code>false</code>, your broadcast cannot have a <code>testing</code> stage, so you can transition the broadcast directly to the <code>live</code> state.</p>
  </li>
  <li>
    <p>The <code>liveCuepoint</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveCuepoints#settings.offsetTimeMs">settings.offsetTimeMs</a></code> property has been updated to note that you should not specify a value for the property if your broadcast does not have a monitor stream.</p>
  </li>
  <li>
    <p>All of the methods for the <code>liveBroadcast</code> and <code>liveStream</code> resources now support the <code>onBehalfOfContentOwner</code> and <code>onBehalfOfContentOwnerChannel</code> parameters. These parameters allow you to use the same authorization credentials to complete API requests for different channels associated with the same content owner.</p>
  </li>
  <li>
    <p>The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveCuepoints/insert">liveCuepoints.insert</a></code> method's documentation has been updated to note that you can set a value for the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveCuepoints#settings.walltime">settings.walltime</a></code> property when calling that method.</p>
  </li>
  <li>
    <p>The <a href="https://developers.google.com/youtube/v3/live/docs/errors">error documentation</a> now specifies the HTTP response code for each error type.</p>
  </li>
  <li>
    <p>The API now supports the following error:</p>
    <table class="matchpre" id="property-table">
      <thead>
        <tr>
          <th>Error type</th>
          <th>Error detail</th>
          <th>Description</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td class="error-name"><code>insufficientPermissions</code></td>
          <td class="error-reason"><code>livePermissionBlocked</code></td>
          <td class="error-cause">The <code><a href="https://developers.google.com/youtube/v3/docs/live/liveBroadcasts/insert">liveBroadcasts.insert</a></code>, <code><a href="https://developers.google.com/youtube/v3/docs/live/liveBroadcasts/transition">liveBroadcasts.transition</a></code>, and <code><a href="https://developers.google.com/youtube/v3/docs/live/liveStreams/insert">liveStreams.insert</a></code> methods return this error if the user that authorized the request is unable to stream live video on YouTube. Details explaining why the user cannot stream live video may be available in the user's channel settings at <a href="https://www.youtube.com/features">https://www.youtube.com/features</a>.</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li>
    <p>The <code>liveBroadcasts.insert</code> method's <code>invalidScheduledStartTime</code> error has been updated to clarify that the scheduled start time must be close enough to the current date that a broadcast could be reliably scheduled at that time.</p>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>December 13, 2013</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2013-12-13</id>
    <updated>2013-12-13T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p>The <code>liveBroadcast</code> resource's new <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#status.recordingStatus">status.recordingStatus</a></code> property identifies the broadcast's current status.</p>
  </li>
  <li>
    <p>The <code>liveBroadcast</code> resource's new <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.enableClosedCaptions">contentDetails.enableClosedCaptions</a></code> property indicates whether closed captions can be ingested for the broadcast. The property value can be set when you insert or update a broadcast, but it cannot be updated once the broadcast is in the <code>testing</code> or <code>live</code> state. If you set this property to <code>true</code>, then the <code>liveStream</code> resource that is bound to the broadcast will specify the ingestion URL to use for the broadcast's closed captions.</p>
  </li>
  <li>
    <p>The <code>liveBroadcast</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/snippet#scheduledEndTime">snippet.scheduledEndTime</a></code> property now supports broadcasts that are scheduled to continue indefinitely. With this change, the property is no longer required in <code>liveBroadcasts.insert</code> and <code>liveBroadcasts.update</code> requests.<br><br>If you retrieve a <code>liveBroadcast</code> resource that does not specify a value for this property, then the broadcast is scheduled to continue indefinitely. Similarly, if you call the <code><a href="https://developers.google.com/youtube/v3/live/liveBroadcasts/insert/liveBroadcasts.insert#request_body">liveBroadcasts.insert</a></code> or <code><a href="https://developers.google.com/youtube/v3/live/liveBroadcasts/insert/liveBroadcasts.update#request_body">liveBroadcasts.update</a></code> method and do not specify a value for this property, the broadcast will be scheduled to continue indefinitely.</p>
  </li>
  <li>
    <p>The <code>liveBroadcast</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.recordFromStart">contentDetails.recordFromStart</a></code> property, which already had a default value of <code>true</code>, can now only be set to <code>false</code> if the broadcasting channel is allowed to disable recordings for live broadcasts.</p>
    <p>If your channel does not have permission to disable recordings, and you attempt to insert a broadcast with the <code>recordFromStart</code> property set to <code>false</code>, the API will return a <code>Forbidden</code> error. In addition, if your channel does not have that permission and you attempt to update a broadcast to set the <code>recordFromStart</code> property to <code>false</code>, the API will return a <code>modificationNotAllowed</code> error.</p>
  </li>
  <li>
    <p>The <code>liveBroadcast</code> resource no longer contains an <code>enableArchive</code> property, which had been mentioned in the descriptions of the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.enableDvr">contentDetails.enableDvr</a></code> and <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.enableEmbed">contentDetails.enableEmbed</a></code> properties.</p>
  </li>
  <li>
    <p>The list of valid values for the <code>liveBroadcast</code> resource's <code>status.lifeCycleStatus</code> property has been updated to include a description of each status.</p>
  </li>
  <li>
    <p>The <code>liveCuepoint</code> resource's new <code><a href="https://developers.google.com/youtube/v3/live/docs/liveCuepoints#settings.walltime">settings.walltime</a></code> property specifies the date and time at which the cuepoint should be inserted. The API returns an error if a request tries to insert a cuepoint that specifies a value for this property and for the <code>settings.offsetTimeMs</code> property.</p>
  </li>
  <li>
    <p>The new <code>contentDetails</code> object in a <code>liveStream</code> resource contains information about the stream. Currently, the object's only property is <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#contentDetails.closedCaptionsIngestionUrl">contentDetails.closedCaptionsIngestionUrl</a></code>, which specifies the ingestion URL for closed captions associated with the video stream.</p>
  </li>
  <li>
    <p>The list of valid values for the <code>liveStream</code> resource's <code>status.streamStatus</code> property has been updated to include a description of each status.</p>
  </li>
  <li>
    <p>The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/control">liveBroadcasts.control</a></code> method's new <code>walltime</code> parameter lets you specify the date and time when a slate change will occur. The API returns an error if a request specifies a value for this parameter and for the <code>offsetTimeMs</code> parameter.</p>
  </li>
  <li>
    <p>In the API response to a <code>liveBroadcasts.list</code> request, the value of the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/list#kind">kind</a></code> property has changed from <code>youtube#liveBroadcastList</code> to <code>youtube#liveBroadcastListResponse</code>.</p>
  </li>
  <li>
    <p>In the API response to a <code>liveStreams.list</code> request, the value of the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/list#kind">kind</a></code> property has changed from <code>youtube#liveStreamList</code> to <code>youtube#liveStreamListResponse</code>.</p>
  </li>
  <li>
    <p>The <code>eventId</code> property has been deprecated from both the <code>liveBroadcastListResponse</code> and the <code>liveStreamListResponse</code>.</p>
  </li>
  <li>
    <p>The API supports the following new errors:</p>
    <table class="matchpre" id="property-table">
      <thead>
        <tr>
          <th>Error type</th>
          <th>Error detail</th>
          <th>Description</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td class="error-name"><code>invalidValue</code></td>
          <td class="error-reason"><code>conflictingTimeFields</code></td>
          <td class="error-cause">The <code><a href="https://developers.google.com/youtube/v3/docs/live/liveBroadcasts/control">liveBroadcasts.control</a></code> method returns this error if your request specifies values for the <code>offsetTimeMs</code> and <code>walltime</code> parameters. A request can either omit both parameters or specify a value for one of the two parameters.</td>
        </tr>
        <tr>
          <td class="error-name"><code>invalidValue</code></td>
          <td class="error-reason"><code>invalidWalltime</code></td>
          <td class="error-cause">The <code><a href="https://developers.google.com/youtube/v3/docs/live/liveBroadcasts/control">liveBroadcasts.control</a></code> method returns this error if the <code>walltime</code> parameter's value is invalid.</td>
        </tr>
        <tr>
          <td class="error-name"><code>forbidden</code></td>
          <td class="error-reason"><code>enableClosedCaptionsModificationNotAllowed</code></td>
          <td class="error-cause">The <code><a href="https://developers.google.com/youtube/v3/docs/live/liveBroadcasts/update">liveBroadcasts.update</a></code> method returns this error if you attempt to update the <code>contentDetails.enableClosedCaptions</code> value and the broadcast's status is not <code>created</code> or <code>ready</code>.</td>
        </tr>
        <tr>
          <td class="error-name"><code>invalidValue</code></td>
          <td class="error-reason"><code>conflictingTimeFields</code></td>
          <td class="error-cause">The <code><a href="https://developers.google.com/youtube/v3/docs/live/liveCuepoints/insert">liveCuepoints.insert</a></code> method returns this error if your request specifies values for the <code>settings.offsetTimeMs</code> and <code>settings.walltime</code> properties. A request can either omit both properties or specify a value for one of the two properties.</td>
        </tr>
      </tbody>
    </table>
    <p>In addition, the <code><a href="https://developers.google.com/youtube/v3/docs/live/liveStreams/update">liveStreams.update</a></code> method no longer supports a <code>cdnRequired</code> error similar to the one that the <code><a href="https://developers.google.com/youtube/v3/docs/live/liveStreams/insert">liveStreams.insert</a></code> method supports.</p>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>May 10, 2013</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2013-05-10</id>
    <updated>2013-05-10T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p>YouTube no longer identifies experimental API features and services. Instead, we now provide a list of <a href="https://developers.google.com/youtube/youtube-api-list">YouTube APIs that are subject to the deprecation policy</a>.</p>
  </li>
</ul>
]]>
    </content>
  </entry>
  <entry>
    <title>May 2, 2013</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2013-05-02</id>
    <updated>2013-05-02T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p>The new <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/control">liveBroadcasts.control</a></code> method enables you to toggle the display settings for a slate that displays in the broadcast stream for a broadcast that is already in progress. If your broadcast stream is delayed, you can also use this method to specify a time offset when the requested slate change will occur.</p>
  </li>
  <li>
    <p>The definitions of the following properties have been updated to explain that the property values must be set if you update a <code>liveBroadcast</code> resource's <code>contentDetails</code> part:</p>
    <p><ul>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.monitorStream.enableMonitorStream">contentDetails.monitorStream.enableMonitorStream</a></code></li>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.monitorStream.broadcastStreamDelayMs">contentDetails.monitorStream.broadcastStreamDelayMs</a></code></li>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.enableDvr">contentDetails.enableDvr</a></code></li>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.enableContentEncryption">contentDetails.enableContentEncryption</a></code></li>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.enableEmbed">contentDetails.enableEmbed</a></code></li>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.recordFromStart">contentDetails.recordFromStart</a></code></li>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#contentDetails.startWithSlate">contentDetails.startWithSlate</a></code></li>
    </ul></p>
  </li>
  <li>
    <p>The <code>liveStream</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#status.streamStatus">status.streamStatus</a></code> no longer supports the value <code>deleted</code> as a possible stream status.</p>
  </li>
  <li>
    <p>The information that the API returns for many <a href="https://developers.google.com/youtube/v3/live/docs/errors">error messages</a> has been revised to better explain why particular errors occurred. The API also supports several new errors.</p>
  </li>
</ul>]]>
  </content>
  </entry>
  <entry>
    <title>March 27, 2013</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2013-03-27</id>
    <updated>2013-03-27T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p>The following properties have changed in the <code>liveBroadcast</code> resource:</p>
    <p><ul>
      <li>The <code>startWithSlateCuepoint</code> property has been renamed to <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#startWithSlate">startWithSlate</a></code>.</li>
      <li>The <code>enableArchive</code> property has been renamed to <code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts#recordFromStart">recordFromStart</a></code>.</li>
      <li>The <code>slateSettings</code> object has been deprecated and removed from the documentation. Error messages related to the <code>slateSettings</code> object or its properties have also been removed.</li>
    </ul></p>
  </li>
  <li>
    <p>The API no longer supports the ability to insert in-stream slates using the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveCuepoints/insert">liveCuepoints.insert</a></code> method. The following documents have been updated to reflect this change:</p>
    <ul>
      <li>
        <p>The <a href="https://developers.google.com/youtube/v3/live/">index page</a>, <a href="https://developers.google.com/youtube/v3/live/getting-started">Getting started</a> guide, and <a href="https://developers.google.com/youtube/v3/live/life-of-a-broadcast">Life of a broadcast</a> tutorial no longer mention this functionality.</p>
      </li>
      <li>
        <p>The <code>liveCuepoint</code> resource's <code><a href="https://developers.google.com/youtube/v3/live/docs/liveCuepoints#settings.cueType">settings.cueType</a></code> property no longer supports <code>slate</code> as a property value. (The only supported value is <code>ad</code>.</p>
      </li>
      <li>
        <p>The <code>liveCuepoint</code> resource's <code>settings.eventState</a></code> property has been deprecated and removed from the documentation.</p>
      </li>
    </ul>
  </li>
</ul>]]>
  </content>
  </entry>
  <entry>
    <title>March 18, 2013</title>
    <id>tag:google.com,changelog:youtube-livestreaming-api-v3-revision-history#2013-03-18</id>
    <updated>2013-03-18T16:00:00:+0000</updated>
    <link rel="alternate" href="https://developers.google.com/youtube/v3/live/revision_history"/>
    <content type="html"><![CDATA[
<p>This update contains the following changes:</p>

<ul>
  <li>
    <p>All of the API's error messages have been updated to more clearly explain possible errors and, when possible, offer guidance about how to fix them.</p>
  </li>
  <li>
    <p>The API may now return several new errors. The list below identifies the error and the API method that might return that error:</p>
    <p><ul>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/insert#youtube.liveBroadcasts.insert-invalidValue-invalidLiveBroadcast-snippet.scheduled_end_time_ms">liveBroadcasts.insert</a></code> &ndash; A broadcast's scheduled end time must be after its scheduled start time.</li>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/insert#youtube.liveBroadcasts.insert-invalidValue-invalidLiveBroadcast-status.privacy_status">liveBroadcasts.insert</a></code> &ndash; The broadcast specifies an invalid privacy status.</li>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/update#youtube.liveBroadcasts.update-invalidValue-invalidLiveBroadcast-content_details.wants_archive">liveBroadcasts.update</a></code> &ndash; The resource does not contain or does not set a value for the <code>contentDetails.enableArchive</code> property.</li>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/update#youtube.liveBroadcasts.update-invalidValue-invalidLiveBroadcast-content_details.enable_content_encryption">liveBroadcasts.update</a></code> &ndash; The resource does not contain or does not set a value for the <code>contentDetails.enableContentEncryption</code> property.</li>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/update#youtube.liveBroadcasts.update-invalidValue-invalidLiveBroadcast-content_details.wants_dvr">liveBroadcasts.update</a></code> &ndash; The resource does not contain or does not set a value for the <code>contentDetails.enableDvr</code> property.</li>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/insert#youtube.liveStreams.insert-invalidValue-invalidLiveStream-snippet.title">liveStreams.insert</a></code> &ndash; The snippet title must be between 1 and 128 characters long.</li>
      <li><code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams/update#youtube.liveStreams.update-invalidValue-invalidLiveStream-snippet.title">liveStreams.update</a></code> &ndash; The resource does not contain or does not set a value for the <code>snippet.title</code> property.</li>
    </ul></p>
  </li>
  <li>
    <p>The <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#resource">liveStream</a></code> resource documentation has been updated to reflect that multicast and WebM are not supported ingestion methods as previously indicated. The list of formats for the <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#cdn.format">cdn.format</a></code> property has been updated accordingly, and the <code>cdn.multicastIngestionInfo</code> object and its child properties have been removed from the resource's documentation. In addition, <code>http</code> has been removed from the list of supported <code><a href="https://developers.google.com/youtube/v3/live/docs/liveStreams#cdn.ingestionType">cdn.ingestionType</a></code> values.</p>
  </li>
</ul>]]>
  </content>
  </entry>
</feed>
