<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</a> . <a href="youtube_v3.captions.html">captions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(id, onBehalfOf=None, onBehalfOfContentOwner=None)</a></code></p>
<p class="firstline">Deletes a specified caption track.</p>
<p class="toc_element">
  <code><a href="#download">download(id, onBehalfOf=None, tlang=None, onBehalfOfContentOwner=None, tfmt=None)</a></code></p>
<p class="firstline">Downloads a caption track. The caption track is returned in its original format unless the request specifies a value for the tfmt parameter and in its original language unless the request specifies a value for the tlang parameter.</p>
<p class="toc_element">
  <code><a href="#download_media">download_media(id, onBehalfOf=None, tlang=None, onBehalfOfContentOwner=None, tfmt=None)</a></code></p>
<p class="firstline">Downloads a caption track. The caption track is returned in its original format unless the request specifies a value for the tfmt parameter and in its original language unless the request specifies a value for the tlang parameter.</p>
<p class="toc_element">
  <code><a href="#insert">insert(part, body=None, media_body=None, onBehalfOf=None, media_mime_type=None, sync=None, onBehalfOfContentOwner=None)</a></code></p>
<p class="firstline">Uploads a caption track.</p>
<p class="toc_element">
  <code><a href="#list">list(part, videoId, onBehalfOf=None, onBehalfOfContentOwner=None, id=None)</a></code></p>
<p class="firstline">Returns a list of caption tracks that are associated with a specified video. Note that the API response does not contain the actual captions and that the captions.download method provides the ability to retrieve a caption track.</p>
<p class="toc_element">
  <code><a href="#update">update(part, body=None, media_body=None, onBehalfOf=None, media_mime_type=None, sync=None, onBehalfOfContentOwner=None)</a></code></p>
<p class="firstline">Updates a caption track. When updating a caption track, you can change the track's draft status, upload a new caption file for the track, or both.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(id, onBehalfOf=None, onBehalfOfContentOwner=None)</code>
  <pre>Deletes a specified caption track.

Args:
  id: string, The id parameter identifies the caption track that is being deleted. The value is a caption track ID as identified by the id property in a caption resource. (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'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.
</pre>
</div>

<div class="method">
    <code class="details" id="download">download(id, onBehalfOf=None, tlang=None, onBehalfOfContentOwner=None, tfmt=None)</code>
  <pre>Downloads a caption track. The caption track is returned in its original format unless the request specifies a value for the tfmt parameter and in its original language unless the request specifies a value for the tlang parameter.

Args:
  id: string, The id parameter identifies the caption track that is being retrieved. The value is a caption track ID as identified by the id property in a caption resource. (required)
  onBehalfOf: string, ID of the Google+ Page for the channel that the request is be on behalf of
  tlang: string, The tlang parameter specifies that the API response should return a translation of the specified caption track. The parameter value is an ISO 639-1 two-letter language code that identifies the desired caption language. The translation is generated by using machine translation, such as Google Translate.
  onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.

The onBehalfOfContentOwner parameter indicates that the request'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, The tfmt parameter specifies that the caption track should be returned in a specific format. If the parameter is not included in the request, the track is returned in its original format.
    Allowed values
      sbv - SubViewer subtitle.
      scc - Scenarist Closed Caption format.
      srt - SubRip subtitle.
      ttml - Timed Text Markup Language caption.
      vtt - Web Video Text Tracks caption.
</pre>
</div>

<div class="method">
    <code class="details" id="download_media">download_media(id, onBehalfOf=None, tlang=None, onBehalfOfContentOwner=None, tfmt=None)</code>
  <pre>Downloads a caption track. The caption track is returned in its original format unless the request specifies a value for the tfmt parameter and in its original language unless the request specifies a value for the tlang parameter.

Args:
  id: string, The id parameter identifies the caption track that is being retrieved. The value is a caption track ID as identified by the id property in a caption resource. (required)
  onBehalfOf: string, ID of the Google+ Page for the channel that the request is be on behalf of
  tlang: string, The tlang parameter specifies that the API response should return a translation of the specified caption track. The parameter value is an ISO 639-1 two-letter language code that identifies the desired caption language. The translation is generated by using machine translation, such as Google Translate.
  onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.

The onBehalfOfContentOwner parameter indicates that the request'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, The tfmt parameter specifies that the caption track should be returned in a specific format. If the parameter is not included in the request, the track is returned in its original format.
    Allowed values
      sbv - SubViewer subtitle.
      scc - Scenarist Closed Caption format.
      srt - SubRip subtitle.
      ttml - Timed Text Markup Language caption.
      vtt - Web Video Text Tracks caption.
</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(part, body=None, media_body=None, onBehalfOf=None, media_mime_type=None, sync=None, onBehalfOfContentOwner=None)</code>
  <pre>Uploads a caption track.

Args:
  part: string, The part parameter specifies the caption resource parts that the API response will include. Set the parameter value to snippet. (required)
  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.
    "snippet": { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
      "status": "A String", # The caption track's status.
      "audioTrackType": "A String", # The type of audio track associated with the caption track.
      "language": "A String", # The language of the caption track. The property value is a BCP-47 language tag.
      "name": "A String", # The name of the caption track. The name is intended to be visible to the user as an option during playback.
      "videoId": "A String", # The ID that YouTube uses to uniquely identify the video associated with the caption track.
      "isDraft": 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.
      "isAutoSynced": 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.
      "trackKind": "A String", # The caption track's type.
      "lastUpdated": "A String", # The date and time when the caption track was last updated. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
      "isCC": True or False, # Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false.
      "isEasyReader": True or False, # Indicates whether caption track is formatted for "easy reader," meaning it is at a third-grade level for language learners. The default value is false.
      "isLarge": True or False, # Indicates whether the caption track uses large text for the vision-impaired. The default value is false.
      "failureReason": "A String", # The reason that YouTube failed to process the caption track. This property is only present if the state property's value is failed.
    },
    "kind": "youtube#caption", # Identifies what kind of resource this is. Value: the fixed string "youtube#caption".
    "etag": "A String", # Etag of this resource.
    "id": "A String", # The ID that YouTube uses to uniquely identify the caption track.
  }

  media_body: string, The filename 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
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  sync: boolean, The sync parameter indicates whether YouTube should automatically synchronize the caption file with the audio track of the video. If you set the value to true, YouTube will disregard any time codes that are in the uploaded caption file and generate new time codes for the captions.

You should set the sync parameter to true if you are uploading a transcript, which has no time codes, or if you suspect the time codes in your file are incorrect and want YouTube to try to fix them.
  onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.

The onBehalfOfContentOwner parameter indicates that the request'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.

Returns:
  An object of the form:

    { # A caption resource represents a YouTube caption track. A caption track is associated with exactly one YouTube video.
      "snippet": { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
        "status": "A String", # The caption track's status.
        "audioTrackType": "A String", # The type of audio track associated with the caption track.
        "language": "A String", # The language of the caption track. The property value is a BCP-47 language tag.
        "name": "A String", # The name of the caption track. The name is intended to be visible to the user as an option during playback.
        "videoId": "A String", # The ID that YouTube uses to uniquely identify the video associated with the caption track.
        "isDraft": 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.
        "isAutoSynced": 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.
        "trackKind": "A String", # The caption track's type.
        "lastUpdated": "A String", # The date and time when the caption track was last updated. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
        "isCC": True or False, # Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false.
        "isEasyReader": True or False, # Indicates whether caption track is formatted for "easy reader," meaning it is at a third-grade level for language learners. The default value is false.
        "isLarge": True or False, # Indicates whether the caption track uses large text for the vision-impaired. The default value is false.
        "failureReason": "A String", # The reason that YouTube failed to process the caption track. This property is only present if the state property's value is failed.
      },
      "kind": "youtube#caption", # Identifies what kind of resource this is. Value: the fixed string "youtube#caption".
      "etag": "A String", # Etag of this resource.
      "id": "A String", # The ID that YouTube uses to uniquely identify the caption track.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(part, videoId, onBehalfOf=None, onBehalfOfContentOwner=None, id=None)</code>
  <pre>Returns a list of caption tracks that are associated with a specified video. Note that the API response does not contain the actual captions and that the captions.download method provides the ability to retrieve a caption track.

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)
  videoId: string, The videoId parameter specifies the YouTube video ID of the video for which the API should return caption tracks. (required)
  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'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.
  id: string, The id parameter specifies a comma-separated list of IDs that identify the caption resources that should be retrieved. Each ID must identify a caption track associated with the specified video.

Returns:
  An object of the form:

    {
    "eventId": "A String", # Serialized EventId of the request which produced this response.
    "items": [ # 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.
          "snippet": { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
            "status": "A String", # The caption track's status.
            "audioTrackType": "A String", # The type of audio track associated with the caption track.
            "language": "A String", # The language of the caption track. The property value is a BCP-47 language tag.
            "name": "A String", # The name of the caption track. The name is intended to be visible to the user as an option during playback.
            "videoId": "A String", # The ID that YouTube uses to uniquely identify the video associated with the caption track.
            "isDraft": 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.
            "isAutoSynced": 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.
            "trackKind": "A String", # The caption track's type.
            "lastUpdated": "A String", # The date and time when the caption track was last updated. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
            "isCC": True or False, # Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false.
            "isEasyReader": True or False, # Indicates whether caption track is formatted for "easy reader," meaning it is at a third-grade level for language learners. The default value is false.
            "isLarge": True or False, # Indicates whether the caption track uses large text for the vision-impaired. The default value is false.
            "failureReason": "A String", # The reason that YouTube failed to process the caption track. This property is only present if the state property's value is failed.
          },
          "kind": "youtube#caption", # Identifies what kind of resource this is. Value: the fixed string "youtube#caption".
          "etag": "A String", # Etag of this resource.
          "id": "A String", # The ID that YouTube uses to uniquely identify the caption track.
        },
    ],
    "kind": "youtube#captionListResponse", # Identifies what kind of resource this is. Value: the fixed string "youtube#captionListResponse".
    "etag": "A String", # Etag of this resource.
    "visitorId": "A String", # The visitorId identifies the visitor.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(part, body=None, media_body=None, onBehalfOf=None, media_mime_type=None, sync=None, onBehalfOfContentOwner=None)</code>
  <pre>Updates a caption track. When updating a caption track, you can change the track's draft status, upload a new caption file for the track, or both.

Args:
  part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include. Set the property value to snippet if you are updating the track's draft status. Otherwise, set the property value to id. (required)
  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.
    "snippet": { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
      "status": "A String", # The caption track's status.
      "audioTrackType": "A String", # The type of audio track associated with the caption track.
      "language": "A String", # The language of the caption track. The property value is a BCP-47 language tag.
      "name": "A String", # The name of the caption track. The name is intended to be visible to the user as an option during playback.
      "videoId": "A String", # The ID that YouTube uses to uniquely identify the video associated with the caption track.
      "isDraft": 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.
      "isAutoSynced": 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.
      "trackKind": "A String", # The caption track's type.
      "lastUpdated": "A String", # The date and time when the caption track was last updated. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
      "isCC": True or False, # Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false.
      "isEasyReader": True or False, # Indicates whether caption track is formatted for "easy reader," meaning it is at a third-grade level for language learners. The default value is false.
      "isLarge": True or False, # Indicates whether the caption track uses large text for the vision-impaired. The default value is false.
      "failureReason": "A String", # The reason that YouTube failed to process the caption track. This property is only present if the state property's value is failed.
    },
    "kind": "youtube#caption", # Identifies what kind of resource this is. Value: the fixed string "youtube#caption".
    "etag": "A String", # Etag of this resource.
    "id": "A String", # The ID that YouTube uses to uniquely identify the caption track.
  }

  media_body: string, The filename 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
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  sync: boolean, Note: The API server only processes the parameter value if the request contains an updated caption file.

The sync parameter indicates whether YouTube should automatically synchronize the caption file with the audio track of the video. If you set the value to true, YouTube will automatically synchronize the caption track with the audio track.
  onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.

The onBehalfOfContentOwner parameter indicates that the request'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.

Returns:
  An object of the form:

    { # A caption resource represents a YouTube caption track. A caption track is associated with exactly one YouTube video.
      "snippet": { # Basic details about a caption track, such as its language and name. # The snippet object contains basic details about the caption.
        "status": "A String", # The caption track's status.
        "audioTrackType": "A String", # The type of audio track associated with the caption track.
        "language": "A String", # The language of the caption track. The property value is a BCP-47 language tag.
        "name": "A String", # The name of the caption track. The name is intended to be visible to the user as an option during playback.
        "videoId": "A String", # The ID that YouTube uses to uniquely identify the video associated with the caption track.
        "isDraft": 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.
        "isAutoSynced": 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.
        "trackKind": "A String", # The caption track's type.
        "lastUpdated": "A String", # The date and time when the caption track was last updated. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
        "isCC": True or False, # Indicates whether the track contains closed captions for the deaf and hard of hearing. The default value is false.
        "isEasyReader": True or False, # Indicates whether caption track is formatted for "easy reader," meaning it is at a third-grade level for language learners. The default value is false.
        "isLarge": True or False, # Indicates whether the caption track uses large text for the vision-impaired. The default value is false.
        "failureReason": "A String", # The reason that YouTube failed to process the caption track. This property is only present if the state property's value is failed.
      },
      "kind": "youtube#caption", # Identifies what kind of resource this is. Value: the fixed string "youtube#caption".
      "etag": "A String", # Etag of this resource.
      "id": "A String", # The ID that YouTube uses to uniquely identify the caption track.
    }</pre>
</div>

</body></html>