<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, onBehalfOfContentOwner=None, tfmt=None, tlang=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, onBehalfOfContentOwner=None, tfmt=None, tlang=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, media_body=None, media_mime_type=None, onBehalfOf=None, onBehalfOfContentOwner=None, sync=None, x__xgafv=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, id=None, onBehalfOf=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, media_body=None, media_mime_type=None, onBehalfOf=None, onBehalfOfContentOwner=None, sync=None, x__xgafv=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, onBehalfOfContentOwner=None, tfmt=None, tlang=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
  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.
  tlang: string, tlang is the language code; machine translate the captions into this language.
  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, onBehalfOfContentOwner=None, tfmt=None, tlang=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
  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.
  tlang: string, tlang is the language code; machine translate the captions into this language.
  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, media_body=None, media_mime_type=None, onBehalfOf=None, onBehalfOfContentOwner=None, sync=None, x__xgafv=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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &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;snippet&quot;: { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
    &quot;audioTrackType&quot;: &quot;A String&quot;, # The type of audio track associated with the caption track.
    &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;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;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;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;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;isLarge&quot;: True or False, # Indicates whether the caption track uses large text for the vision-impaired. 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;lastUpdated&quot;: &quot;A String&quot;, # The date and time when the caption track was last updated.
    &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;status&quot;: &quot;A String&quot;, # The caption track&#x27;s status.
    &quot;trackKind&quot;: &quot;A String&quot;, # The caption track&#x27;s type.
    &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
  },
}

  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.
  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.
  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

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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &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;snippet&quot;: { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
    &quot;audioTrackType&quot;: &quot;A String&quot;, # The type of audio track associated with the caption track.
    &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;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;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;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;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;isLarge&quot;: True or False, # Indicates whether the caption track uses large text for the vision-impaired. 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;lastUpdated&quot;: &quot;A String&quot;, # The date and time when the caption track was last updated.
    &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;status&quot;: &quot;A String&quot;, # The caption track&#x27;s status.
    &quot;trackKind&quot;: &quot;A String&quot;, # The caption track&#x27;s type.
    &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
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(part, videoId, id=None, onBehalfOf=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)
  id: string, Returns the captions with the given IDs for Stubby or Apiary. (repeated)
  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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &quot;eventId&quot;: &quot;A String&quot;, # Serialized EventId of the request which produced this response.
  &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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
      &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;snippet&quot;: { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
        &quot;audioTrackType&quot;: &quot;A String&quot;, # The type of audio track associated with the caption track.
        &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;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;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;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;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;isLarge&quot;: True or False, # Indicates whether the caption track uses large text for the vision-impaired. 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;lastUpdated&quot;: &quot;A String&quot;, # The date and time when the caption track was last updated.
        &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;status&quot;: &quot;A String&quot;, # The caption track&#x27;s status.
        &quot;trackKind&quot;: &quot;A String&quot;, # The caption track&#x27;s type.
        &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;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.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(part, body=None, media_body=None, media_mime_type=None, onBehalfOf=None, onBehalfOfContentOwner=None, sync=None, x__xgafv=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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &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;snippet&quot;: { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
    &quot;audioTrackType&quot;: &quot;A String&quot;, # The type of audio track associated with the caption track.
    &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;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;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;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;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;isLarge&quot;: True or False, # Indicates whether the caption track uses large text for the vision-impaired. 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;lastUpdated&quot;: &quot;A String&quot;, # The date and time when the caption track was last updated.
    &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;status&quot;: &quot;A String&quot;, # The caption track&#x27;s status.
    &quot;trackKind&quot;: &quot;A String&quot;, # The caption track&#x27;s type.
    &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
  },
}

  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.
  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

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;etag&quot;: &quot;A String&quot;, # Etag of this resource.
  &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;snippet&quot;: { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
    &quot;audioTrackType&quot;: &quot;A String&quot;, # The type of audio track associated with the caption track.
    &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;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;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;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;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;isLarge&quot;: True or False, # Indicates whether the caption track uses large text for the vision-impaired. 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;lastUpdated&quot;: &quot;A String&quot;, # The date and time when the caption track was last updated.
    &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;status&quot;: &quot;A String&quot;, # The caption track&#x27;s status.
    &quot;trackKind&quot;: &quot;A String&quot;, # The caption track&#x27;s type.
    &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
  },
}</pre>
</div>

</body></html>