Youtube Captions API

Operations related to YouTube video caption tracks

Documentation

📖
Documentation
https://developers.google.com/youtube/v3/docs/activities/list
📖
GettingStarted
https://developers.google.com/youtube/v3/getting-started
📖
Authentication
https://developers.google.com/youtube/v3/guides/authentication
📖
Documentation
https://developers.google.com/youtube/v3/docs/channels/list
📖
Documentation
https://developers.google.com/youtube/v3/docs/comments/list
📖
Documentation
https://developers.google.com/youtube/v3/docs/commentThreads/list
📖
Documentation
https://developers.google.com/youtube/v3/docs/playlists/list
📖
Documentation
https://developers.google.com/youtube/v3/docs/playlistItems/list
📖
Documentation
https://developers.google.com/youtube/v3/docs/search/list
📖
Documentation
https://developers.google.com/youtube/v3/docs/subscriptions/list
📖
Documentation
https://developers.google.com/youtube/v3/docs/videos/list
📖
Documentation
https://developers.google.com/youtube/v3/docs/captions
📖
Documentation
https://developers.google.com/youtube/v3/docs/videoCategories
📖
Documentation
https://developers.google.com/youtube/v3/docs/i18nLanguages
📖
Documentation
https://developers.google.com/youtube/v3/docs/i18nRegions
📖
Documentation
https://developers.google.com/youtube/analytics
📖
GettingStarted
https://developers.google.com/youtube/reporting/guides/authorization
📖
APIReference
https://developers.google.com/youtube/analytics/reference
📖
Authentication
https://developers.google.com/youtube/reporting/guides/authorization
📖
Documentation
https://developers.google.com/youtube/reporting
📖
APIReference
https://developers.google.com/youtube/reporting/v1/reference/rest
📖
Documentation
https://developers.google.com/youtube/reporting/v1/reports
📖
GettingStarted
https://developers.google.com/youtube/v3/live/getting-started
📖
Documentation
https://developers.google.com/youtube/v3/live/docs
📖
APIReference
https://developers.google.com/youtube/v3/live/docs

Specifications

Code Examples

Schemas & Data

Other Resources

OpenAPI Specification

youtube-captions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: YouTube Analytics Analytics Groups Captions API
  description: 'The YouTube Analytics API enables you to retrieve YouTube Analytics data for channels and content owners.

    Use this API to generate custom analytics reports, track video performance metrics, monitor audience engagement,

    and gain insights into viewer demographics and behavior patterns.


    ## Key Features

    - Retrieve channel and video performance metrics

    - Access audience demographics and geographic data

    - Monitor engagement metrics like likes, comments, and shares

    - Track revenue and ad performance data (for monetized content)

    - Generate custom date-range reports


    ## Authentication

    All API requests require OAuth 2.0 authentication with appropriate scopes.

    '
  version: 2.0.0
  contact:
    name: Google Developers
    url: https://developers.google.com/youtube/analytics
    email: youtube-api-support@google.com
  license:
    name: Creative Commons Attribution 3.0
    url: http://creativecommons.org/licenses/by/3.0/
    identifier: CC-BY-3.0
  termsOfService: https://developers.google.com/terms/
  x-logo:
    url: https://www.youtube.com/img/desktop/yt_1200.png
servers:
- url: https://youtubeanalytics.googleapis.com/v2
  description: YouTube Analytics API Production Server
security:
- OAuth2:
  - https://www.googleapis.com/auth/yt-analytics.readonly
tags:
- name: Captions
  description: Operations related to YouTube video caption tracks
paths:
  /captions:
    get:
      operationId: youtube.captions.list
      summary: Youtube List Caption Tracks
      description: Returns a list of caption tracks that are associated with a specified video. The API response does not contain the actual captions and the captions.download method can be used to retrieve a caption track.
      tags:
      - Captions
      parameters:
      - $ref: '#/components/parameters/part'
      - name: videoId
        in: query
        required: true
        description: The ID of the video for which the API should return caption tracks.
        schema:
          type: string
        example: '500123'
      - name: id
        in: query
        description: Comma-separated list of caption track IDs to retrieve.
        schema:
          type: string
        example: abc123def456
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/key'
      responses:
        '200':
          description: Successful response containing a list of caption track resources.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaptionListResponse'
              examples:
                YoutubeCaptionsList200Example:
                  summary: Default youtube.captions.list 200 response
                  x-microcks-default: true
                  value:
                    kind: youtube#video
                    etag: XI7nbFXulYBIpL0ayR_gDh3eu1k
                    items:
                    - kind: youtube#video
                      etag: XI7nbFXulYBIpL0ayR_gDh3eu1k
                      id: abc123def456
                      snippet:
                        videoId: '500123'
                        lastUpdated: '2026-01-15T10:30:00Z'
                        trackKind: asr
                        language: en
                        name: Example Title
                        audioTrackType: commentary
                        isCC: true
                        isLarge: true
                        isEasyReader: true
                        isDraft: true
                        isAutoSynced: true
                        status: failed
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: youtube.captions.insert
      summary: Youtube Upload a Caption Track
      description: Uploads a caption track. The authenticated user must own the video associated with the caption track. This method supports media upload.
      tags:
      - Captions
      parameters:
      - $ref: '#/components/parameters/part'
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/key'
      requestBody:
        description: The caption resource to upload.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Caption'
            examples:
              YoutubeCaptionsInsertRequestExample:
                summary: Default youtube.captions.insert request
                x-microcks-default: true
                value:
                  kind: youtube#video
                  etag: XI7nbFXulYBIpL0ayR_gDh3eu1k
                  id: abc123def456
                  snippet:
                    videoId: '500123'
                    lastUpdated: '2026-01-15T10:30:00Z'
                    trackKind: asr
                    language: en
                    name: Example Title
                    audioTrackType: commentary
                    isCC: true
                    isLarge: true
                    isEasyReader: true
                    isDraft: true
                    isAutoSynced: true
                    status: failed
      responses:
        '200':
          description: Successful response containing the newly uploaded caption resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Caption'
              examples:
                YoutubeCaptionsInsert200Example:
                  summary: Default youtube.captions.insert 200 response
                  x-microcks-default: true
                  value:
                    kind: youtube#video
                    etag: XI7nbFXulYBIpL0ayR_gDh3eu1k
                    id: abc123def456
                    snippet:
                      videoId: '500123'
                      lastUpdated: '2026-01-15T10:30:00Z'
                      trackKind: asr
                      language: en
                      name: Example Title
                      audioTrackType: commentary
                      isCC: true
                      isLarge: true
                      isEasyReader: true
                      isDraft: true
                      isAutoSynced: true
                      status: failed
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: youtube.captions.update
      summary: Youtube Update a Caption Track
      description: Updates a caption track. When updating a caption track, you can change the track's draft status, upload a new caption file, or both.
      tags:
      - Captions
      parameters:
      - $ref: '#/components/parameters/part'
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/key'
      requestBody:
        description: The caption resource with updated properties.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Caption'
            examples:
              YoutubeCaptionsUpdateRequestExample:
                summary: Default youtube.captions.update request
                x-microcks-default: true
                value:
                  kind: youtube#video
                  etag: XI7nbFXulYBIpL0ayR_gDh3eu1k
                  id: abc123def456
                  snippet:
                    videoId: '500123'
                    lastUpdated: '2026-01-15T10:30:00Z'
                    trackKind: asr
                    language: en
                    name: Example Title
                    audioTrackType: commentary
                    isCC: true
                    isLarge: true
                    isEasyReader: true
                    isDraft: true
                    isAutoSynced: true
                    status: failed
      responses:
        '200':
          description: Successful response containing the updated caption resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Caption'
              examples:
                YoutubeCaptionsUpdate200Example:
                  summary: Default youtube.captions.update 200 response
                  x-microcks-default: true
                  value:
                    kind: youtube#video
                    etag: XI7nbFXulYBIpL0ayR_gDh3eu1k
                    id: abc123def456
                    snippet:
                      videoId: '500123'
                      lastUpdated: '2026-01-15T10:30:00Z'
                      trackKind: asr
                      language: en
                      name: Example Title
                      audioTrackType: commentary
                      isCC: true
                      isLarge: true
                      isEasyReader: true
                      isDraft: true
                      isAutoSynced: true
                      status: failed
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: youtube.captions.delete
      summary: Youtube Delete a Caption Track
      description: Deletes a specified caption track. The authenticated user must own the video that the caption track is associated with.
      tags:
      - Captions
      parameters:
      - name: id
        in: query
        required: true
        description: The ID of the caption track to delete.
        schema:
          type: string
        example: abc123def456
      - $ref: '#/components/parameters/key'
      responses:
        '204':
          description: The caption track was successfully deleted.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  parameters:
    fields:
      name: fields
      in: query
      description: Selector specifying which fields to include in a partial response. Use this parameter to reduce bandwidth usage by selecting only the fields you need.
      schema:
        type: string
    key:
      name: key
      in: query
      description: API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.
      schema:
        type: string
    part:
      name: part
      in: query
      required: true
      description: Specifies a comma-separated list of one or more resource properties that the API response will include. The part parameter value must include the id property.
      schema:
        type: string
  schemas:
    CaptionListResponse:
      type: object
      description: A list of caption resources associated with the specified video.
      properties:
        kind:
          type: string
          description: Identifies the API resource's type. Value is youtube#captionListResponse.
          default: youtube#captionListResponse
          example: youtube#video
        etag:
          type: string
          description: The Etag of this resource.
          example: XI7nbFXulYBIpL0ayR_gDh3eu1k
        items:
          type: array
          description: A list of captions that match the request criteria.
          items:
            $ref: '#/components/schemas/Caption'
          example: []
    ErrorResponse:
      type: object
      description: A standard error response returned by the YouTube Data API.
      properties:
        error:
          type: object
          description: The error details.
          properties:
            code:
              type: integer
              description: The HTTP status code of the error.
            message:
              type: string
              description: A human-readable description of the error.
            errors:
              type: array
              description: A list of individual errors.
              items:
                type: object
                properties:
                  message:
                    type: string
                    description: A human-readable description of the error.
                  domain:
                    type: string
                    description: The domain in which the error occurred.
                  reason:
                    type: string
                    description: The reason for the error.
          example: example_value
    Caption:
      type: object
      description: A caption resource represents a YouTube caption track. A caption track is associated with exactly one YouTube video.
      required:
      - kind
      - etag
      properties:
        kind:
          type: string
          description: Identifies the API resource's type. Value is youtube#caption.
          default: youtube#caption
          example: youtube#video
        etag:
          type: string
          description: The Etag of this resource.
          example: XI7nbFXulYBIpL0ayR_gDh3eu1k
        id:
          type: string
          description: The ID that YouTube uses to uniquely identify the caption track.
          example: abc123def456
        snippet:
          type: object
          description: The snippet object contains basic details about the caption.
          properties:
            videoId:
              type: string
              description: The ID of the video that the caption track is associated with.
            lastUpdated:
              type: string
              format: date-time
              description: The date and time when the caption track was last updated.
            trackKind:
              type: string
              description: The caption track's type.
              enum:
              - asr
              - forced
              - standard
            language:
              type: string
              description: The language of the caption track. The property value is a BCP-47 language tag.
            name:
              type: string
              description: The name of the caption track.
            audioTrackType:
              type: string
              description: The type of audio track associated with the caption track.
              enum:
              - commentary
              - descriptive
              - primary
              - unknown
            isCC:
              type: boolean
              description: Indicates whether the track contains closed captions for the deaf and hard of hearing.
            isLarge:
              type: boolean
              description: Indicates whether the caption track uses large text for the vision-impaired.
            isEasyReader:
              type: boolean
              description: Indicates whether caption track is formatted for easy reader.
            isDraft:
              type: boolean
              description: Indicates whether the caption track is a draft.
            isAutoSynced:
              type: boolean
              description: Indicates whether YouTube synchronized the caption track to the audio track in the video.
            status:
              type: string
              description: The caption track's status.
              enum:
              - failed
              - serving
              - syncing
          example: example_value
  responses:
    Unauthorized:
      description: The request was not authenticated or the credentials are invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: The request was invalid or malformed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The specified resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: The request was authenticated but the caller does not have permission to perform the requested operation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    OAuth2:
      type: oauth2
      description: OAuth 2.0 authentication for YouTube Analytics API
      flows:
        authorizationCode:
          authorizationUrl: https://accounts.google.com/o/oauth2/auth
          tokenUrl: https://oauth2.googleapis.com/token
          scopes:
            https://www.googleapis.com/auth/youtube: Manage your YouTube account
            https://www.googleapis.com/auth/youtube.readonly: View your YouTube account
            https://www.googleapis.com/auth/yt-analytics.readonly: View YouTube Analytics reports
            https://www.googleapis.com/auth/yt-analytics-monetary.readonly: View YouTube Analytics monetary reports
externalDocs:
  description: YouTube Analytics API Documentation
  url: https://developers.google.com/youtube/analytics