<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="youtube_v3.html">YouTube Data API v3</a> . <a href="youtube_v3.captions.html">captions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#delete">delete(id, onBehalfOf=None, onBehalfOfContentOwner=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a resource.</p>
<p class="toc_element">
  <code><a href="#download">download(id, onBehalfOf=None, tlang=None, onBehalfOfContentOwner=None, tfmt=None, x__xgafv=None)</a></code></p>
<p class="firstline">Downloads a caption track.</p>
<p class="toc_element">
  <code><a href="#download_media">download_media(id, onBehalfOf=None, tlang=None, onBehalfOfContentOwner=None, tfmt=None, x__xgafv=None)</a></code></p>
<p class="firstline">Downloads a caption track.</p>
<p class="toc_element">
  <code><a href="#insert">insert(part, body=None, onBehalfOf=None, sync=None, onBehalfOfContentOwner=None, x__xgafv=None, media_body=None, media_mime_type=None)</a></code></p>
<p class="firstline">Inserts a new resource into this collection.</p>
<p class="toc_element">
  <code><a href="#list">list(part, videoId, onBehalfOf=None, id=None, onBehalfOfContentOwner=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a list of resources, possibly filtered.</p>
<p class="toc_element">
  <code><a href="#update">update(part, body=None, onBehalfOf=None, onBehalfOfContentOwner=None, sync=None, x__xgafv=None, media_body=None, media_mime_type=None)</a></code></p>
<p class="firstline">Updates an existing resource.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(id, onBehalfOf=None, onBehalfOfContentOwner=None, x__xgafv=None)</code>
  <pre>Deletes a resource.

Args:
  id: string, A parameter (required)
  onBehalfOf: string, ID of the Google+ Page for the channel that the request is be on behalf of
  onBehalfOfContentOwner: string, *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request&#x27;s authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="download">download(id, onBehalfOf=None, tlang=None, onBehalfOfContentOwner=None, tfmt=None, x__xgafv=None)</code>
  <pre>Downloads a caption track.

Args:
  id: string, The ID of the caption track to download, required for One Platform. (required)
  onBehalfOf: string, ID of the Google+ Page for the channel that the request is be on behalf of
  tlang: string, tlang is the language code; machine translate the captions into this language.
  onBehalfOfContentOwner: string, *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request&#x27;s authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.
  tfmt: string, Convert the captions into this format. Supported options are sbv, srt, and vtt.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="download_media">download_media(id, onBehalfOf=None, tlang=None, onBehalfOfContentOwner=None, tfmt=None, x__xgafv=None)</code>
  <pre>Downloads a caption track.

Args:
  id: string, The ID of the caption track to download, required for One Platform. (required)
  onBehalfOf: string, ID of the Google+ Page for the channel that the request is be on behalf of
  tlang: string, tlang is the language code; machine translate the captions into this language.
  onBehalfOfContentOwner: string, *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request&#x27;s authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.
  tfmt: string, Convert the captions into this format. Supported options are sbv, srt, and vtt.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(part, body=None, onBehalfOf=None, sync=None, onBehalfOfContentOwner=None, x__xgafv=None, media_body=None, media_mime_type=None)</code>
  <pre>Inserts a new resource into this collection.

Args:
  part: string, The *part* parameter specifies the caption resource parts that the API response will include. Set the parameter value to snippet. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{ # A *caption* resource represents a YouTube caption track. A caption track is associated with exactly one YouTube video.
    &quot;snippet&quot;: { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
      &quot;name&quot;: &quot;A String&quot;, # The name of the caption track. The name is intended to be visible to the user as an option during playback.
      &quot;isCC&quot;: True or False, # Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false.
      &quot;lastUpdated&quot;: &quot;A String&quot;, # The date and time when the caption track was last updated. The value is specified in ISO 8601 format.
      &quot;status&quot;: &quot;A String&quot;, # The caption track&#x27;s status.
      &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the video associated with the caption track. @mutable youtube.captions.insert
      &quot;trackKind&quot;: &quot;A String&quot;, # The caption track&#x27;s type.
      &quot;isLarge&quot;: True or False, # Indicates whether the caption track uses large text for the vision-impaired. The default value is false.
      &quot;isEasyReader&quot;: True or False, # Indicates whether caption track is formatted for &quot;easy reader,&quot; meaning it is at a third-grade level for language learners. The default value is false.
      &quot;language&quot;: &quot;A String&quot;, # The language of the caption track. The property value is a BCP-47 language tag.
      &quot;isDraft&quot;: True or False, # Indicates whether the caption track is a draft. If the value is true, then the track is not publicly visible. The default value is false. @mutable youtube.captions.insert youtube.captions.update
      &quot;audioTrackType&quot;: &quot;A String&quot;, # The type of audio track associated with the caption track.
      &quot;isAutoSynced&quot;: True or False, # Indicates whether YouTube synchronized the caption track to the audio track in the video. The value will be true if a sync was explicitly requested when the caption track was uploaded. For example, when calling the captions.insert or captions.update methods, you can set the sync parameter to true to instruct YouTube to sync the uploaded track to the video. If the value is false, YouTube uses the time codes in the uploaded caption track to determine when to display captions.
      &quot;failureReason&quot;: &quot;A String&quot;, # The reason that YouTube failed to process the caption track. This property is only present if the state property&#x27;s value is failed.
    },
    &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the caption track.
    &quot;kind&quot;: &quot;youtube#caption&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#caption&quot;.
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  }

  onBehalfOf: string, ID of the Google+ Page for the channel that the request is be on behalf of
  sync: boolean, Extra parameter to allow automatically syncing the uploaded caption/transcript with the audio.
  onBehalfOfContentOwner: string, *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request&#x27;s authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.

Returns:
  An object of the form:

    { # A *caption* resource represents a YouTube caption track. A caption track is associated with exactly one YouTube video.
      &quot;snippet&quot;: { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
        &quot;name&quot;: &quot;A String&quot;, # The name of the caption track. The name is intended to be visible to the user as an option during playback.
        &quot;isCC&quot;: True or False, # Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false.
        &quot;lastUpdated&quot;: &quot;A String&quot;, # The date and time when the caption track was last updated. The value is specified in ISO 8601 format.
        &quot;status&quot;: &quot;A String&quot;, # The caption track&#x27;s status.
        &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the video associated with the caption track. @mutable youtube.captions.insert
        &quot;trackKind&quot;: &quot;A String&quot;, # The caption track&#x27;s type.
        &quot;isLarge&quot;: True or False, # Indicates whether the caption track uses large text for the vision-impaired. The default value is false.
        &quot;isEasyReader&quot;: True or False, # Indicates whether caption track is formatted for &quot;easy reader,&quot; meaning it is at a third-grade level for language learners. The default value is false.
        &quot;language&quot;: &quot;A String&quot;, # The language of the caption track. The property value is a BCP-47 language tag.
        &quot;isDraft&quot;: True or False, # Indicates whether the caption track is a draft. If the value is true, then the track is not publicly visible. The default value is false. @mutable youtube.captions.insert youtube.captions.update
        &quot;audioTrackType&quot;: &quot;A String&quot;, # The type of audio track associated with the caption track.
        &quot;isAutoSynced&quot;: True or False, # Indicates whether YouTube synchronized the caption track to the audio track in the video. The value will be true if a sync was explicitly requested when the caption track was uploaded. For example, when calling the captions.insert or captions.update methods, you can set the sync parameter to true to instruct YouTube to sync the uploaded track to the video. If the value is false, YouTube uses the time codes in the uploaded caption track to determine when to display captions.
        &quot;failureReason&quot;: &quot;A String&quot;, # The reason that YouTube failed to process the caption track. This property is only present if the state property&#x27;s value is failed.
      },
      &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the caption track.
      &quot;kind&quot;: &quot;youtube#caption&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#caption&quot;.
      &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(part, videoId, onBehalfOf=None, id=None, onBehalfOfContentOwner=None, x__xgafv=None)</code>
  <pre>Retrieves a list of resources, possibly filtered.

Args:
  part: string, The *part* parameter specifies a comma-separated list of one or more caption resource parts that the API response will include. The part names that you can include in the parameter value are id and snippet. (required) (repeated)
  videoId: string, Returns the captions for the specified video. (required)
  onBehalfOf: string, ID of the Google+ Page for the channel that the request is on behalf of.
  id: string, Returns the captions with the given IDs for Stubby or Apiary. (repeated)
  onBehalfOfContentOwner: string, *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request&#x27;s authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;eventId&quot;: &quot;A String&quot;, # Serialized EventId of the request which produced this response.
    &quot;kind&quot;: &quot;youtube#captionListResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#captionListResponse&quot;.
    &quot;visitorId&quot;: &quot;A String&quot;, # The visitorId identifies the visitor.
    &quot;items&quot;: [ # A list of captions that match the request criteria.
      { # A *caption* resource represents a YouTube caption track. A caption track is associated with exactly one YouTube video.
          &quot;snippet&quot;: { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
            &quot;name&quot;: &quot;A String&quot;, # The name of the caption track. The name is intended to be visible to the user as an option during playback.
            &quot;isCC&quot;: True or False, # Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false.
            &quot;lastUpdated&quot;: &quot;A String&quot;, # The date and time when the caption track was last updated. The value is specified in ISO 8601 format.
            &quot;status&quot;: &quot;A String&quot;, # The caption track&#x27;s status.
            &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the video associated with the caption track. @mutable youtube.captions.insert
            &quot;trackKind&quot;: &quot;A String&quot;, # The caption track&#x27;s type.
            &quot;isLarge&quot;: True or False, # Indicates whether the caption track uses large text for the vision-impaired. The default value is false.
            &quot;isEasyReader&quot;: True or False, # Indicates whether caption track is formatted for &quot;easy reader,&quot; meaning it is at a third-grade level for language learners. The default value is false.
            &quot;language&quot;: &quot;A String&quot;, # The language of the caption track. The property value is a BCP-47 language tag.
            &quot;isDraft&quot;: True or False, # Indicates whether the caption track is a draft. If the value is true, then the track is not publicly visible. The default value is false. @mutable youtube.captions.insert youtube.captions.update
            &quot;audioTrackType&quot;: &quot;A String&quot;, # The type of audio track associated with the caption track.
            &quot;isAutoSynced&quot;: True or False, # Indicates whether YouTube synchronized the caption track to the audio track in the video. The value will be true if a sync was explicitly requested when the caption track was uploaded. For example, when calling the captions.insert or captions.update methods, you can set the sync parameter to true to instruct YouTube to sync the uploaded track to the video. If the value is false, YouTube uses the time codes in the uploaded caption track to determine when to display captions.
            &quot;failureReason&quot;: &quot;A String&quot;, # The reason that YouTube failed to process the caption track. This property is only present if the state property&#x27;s value is failed.
          },
          &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the caption track.
          &quot;kind&quot;: &quot;youtube#caption&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#caption&quot;.
          &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
        },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(part, body=None, onBehalfOf=None, onBehalfOfContentOwner=None, sync=None, x__xgafv=None, media_body=None, media_mime_type=None)</code>
  <pre>Updates an existing resource.

Args:
  part: string, The *part* parameter specifies a comma-separated list of one or more caption resource parts that the API response will include. The part names that you can include in the parameter value are id and snippet. (required) (repeated)
  body: object, The request body.
    The object takes the form of:

{ # A *caption* resource represents a YouTube caption track. A caption track is associated with exactly one YouTube video.
    &quot;snippet&quot;: { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
      &quot;name&quot;: &quot;A String&quot;, # The name of the caption track. The name is intended to be visible to the user as an option during playback.
      &quot;isCC&quot;: True or False, # Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false.
      &quot;lastUpdated&quot;: &quot;A String&quot;, # The date and time when the caption track was last updated. The value is specified in ISO 8601 format.
      &quot;status&quot;: &quot;A String&quot;, # The caption track&#x27;s status.
      &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the video associated with the caption track. @mutable youtube.captions.insert
      &quot;trackKind&quot;: &quot;A String&quot;, # The caption track&#x27;s type.
      &quot;isLarge&quot;: True or False, # Indicates whether the caption track uses large text for the vision-impaired. The default value is false.
      &quot;isEasyReader&quot;: True or False, # Indicates whether caption track is formatted for &quot;easy reader,&quot; meaning it is at a third-grade level for language learners. The default value is false.
      &quot;language&quot;: &quot;A String&quot;, # The language of the caption track. The property value is a BCP-47 language tag.
      &quot;isDraft&quot;: True or False, # Indicates whether the caption track is a draft. If the value is true, then the track is not publicly visible. The default value is false. @mutable youtube.captions.insert youtube.captions.update
      &quot;audioTrackType&quot;: &quot;A String&quot;, # The type of audio track associated with the caption track.
      &quot;isAutoSynced&quot;: True or False, # Indicates whether YouTube synchronized the caption track to the audio track in the video. The value will be true if a sync was explicitly requested when the caption track was uploaded. For example, when calling the captions.insert or captions.update methods, you can set the sync parameter to true to instruct YouTube to sync the uploaded track to the video. If the value is false, YouTube uses the time codes in the uploaded caption track to determine when to display captions.
      &quot;failureReason&quot;: &quot;A String&quot;, # The reason that YouTube failed to process the caption track. This property is only present if the state property&#x27;s value is failed.
    },
    &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the caption track.
    &quot;kind&quot;: &quot;youtube#caption&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#caption&quot;.
    &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  }

  onBehalfOf: string, ID of the Google+ Page for the channel that the request is on behalf of.
  onBehalfOfContentOwner: string, *Note:* This parameter is intended exclusively for YouTube content partners. The *onBehalfOfContentOwner* parameter indicates that the request&#x27;s authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.
  sync: boolean, Extra parameter to allow automatically syncing the uploaded caption/transcript with the audio.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.

Returns:
  An object of the form:

    { # A *caption* resource represents a YouTube caption track. A caption track is associated with exactly one YouTube video.
      &quot;snippet&quot;: { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
        &quot;name&quot;: &quot;A String&quot;, # The name of the caption track. The name is intended to be visible to the user as an option during playback.
        &quot;isCC&quot;: True or False, # Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false.
        &quot;lastUpdated&quot;: &quot;A String&quot;, # The date and time when the caption track was last updated. The value is specified in ISO 8601 format.
        &quot;status&quot;: &quot;A String&quot;, # The caption track&#x27;s status.
        &quot;videoId&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the video associated with the caption track. @mutable youtube.captions.insert
        &quot;trackKind&quot;: &quot;A String&quot;, # The caption track&#x27;s type.
        &quot;isLarge&quot;: True or False, # Indicates whether the caption track uses large text for the vision-impaired. The default value is false.
        &quot;isEasyReader&quot;: True or False, # Indicates whether caption track is formatted for &quot;easy reader,&quot; meaning it is at a third-grade level for language learners. The default value is false.
        &quot;language&quot;: &quot;A String&quot;, # The language of the caption track. The property value is a BCP-47 language tag.
        &quot;isDraft&quot;: True or False, # Indicates whether the caption track is a draft. If the value is true, then the track is not publicly visible. The default value is false. @mutable youtube.captions.insert youtube.captions.update
        &quot;audioTrackType&quot;: &quot;A String&quot;, # The type of audio track associated with the caption track.
        &quot;isAutoSynced&quot;: True or False, # Indicates whether YouTube synchronized the caption track to the audio track in the video. The value will be true if a sync was explicitly requested when the caption track was uploaded. For example, when calling the captions.insert or captions.update methods, you can set the sync parameter to true to instruct YouTube to sync the uploaded track to the video. If the value is false, YouTube uses the time codes in the uploaded caption track to determine when to display captions.
        &quot;failureReason&quot;: &quot;A String&quot;, # The reason that YouTube failed to process the caption track. This property is only present if the state property&#x27;s value is failed.
      },
      &quot;id&quot;: &quot;A String&quot;, # The ID that YouTube uses to uniquely identify the caption track.
      &quot;kind&quot;: &quot;youtube#caption&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;youtube#caption&quot;.
      &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
    }</pre>
</div>

</body></html>