transcriptout-com API

transcriptout-com API as documented publicly: 19 operations. Contract generated from the documentation by API Evangelist (2026-10-31); not the provider's own document.

Operations 19

GET /auth/register-cli Request a registration code to be sent to an email address. #
POST /auth/register-cli POST /auth/register-cli #
GET /auth/verify-cli Trade the email code and session token for an sk_ API key. #
POST /mcp Streamable HTTP with stateless JSON-RPC over initialize, tools/list, tools/call and ping. #
GET /v1/channel/latest A channel's latest videos #
GET /v1/channel/videos GET /v1/channel/videos #
POST /v1/channel/videos POST /v1/channel/videos #
GET /v1/playlist/videos List playlist videos #
GET /v1/transcript GET /v1/transcript #
POST /v1/transcripts Get transcripts in bulk #
GET /v1/transcripts/17ef4c30218c47bc98bb5ac072d564e4/cancel Cancel a batch job and refund the videos it never started. #
GET /v1/transcripts/{jobId} Check a batch job #
POST /v1/transcripts/{jobId}/cancel Cancel a batch job #
GET /v1/transcripts/{jobId}/results Read batch results #
GET /v1/transcripts/{jobId}/results/{videoId} One video out of the job, by id. #
GET /v1/video Get video info #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/transcriptout-com:transcriptout-com-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

transcriptout-com-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: transcriptout-com API
  version: '2026-10-31'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-31: 19 operation(s) read from 2 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; transcriptout-com has published no machine-readable contract
    that the pipeline could find. Engine: anthropic.'
  x-evidence-tiers:
    code-example: 4
    documentation: 15
    pages-with-code: 2
    pages-read: 2
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-10-31'
  x-generator: generate-contract-from-docs.py
  x-engine: anthropic
  x-sources:
  - https://transcriptout.com/docs
  - https://transcriptout.com/mcp
servers:
- url: https://api.transcriptout.com
paths:
  /auth/register-cli:
    get:
      operationId: get_auth_register_cli
      tags:
      - Auth
      summary: Request a registration code to be sent to an email address.
      x-source: https://transcriptout.com/mcp
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAuthRegisterCliResponse'
      x-evidence:
        kind: documentation
    post:
      operationId: post_auth_register_cli
      tags:
      - Auth
      summary: POST /auth/register-cli
      x-source: https://transcriptout.com/mcp
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostAuthRegisterCliRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -X POST "https://api.transcriptout.com/auth/register-cli"  -H "Content-Type: application/json"  -d ''{ "email" : "user@example.com"
          }'' 2 Trade the code for a key The session token goes in the Authorization header, the code in the body. Back comes a normal sk_ key
          for a normal account, with dashboard, free credits and the welcome email included. verify.sh Copy 1 2 3 4 curl -X POST "https://api.'
  /auth/verify-cli:
    get:
      operationId: get_auth_verify_cli
      tags:
      - Auth
      summary: Trade the email code and session token for an sk_ API key.
      x-source: https://transcriptout.com/mcp
      parameters:
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Bearer token with the access_token from register-cli.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAuthVerifyCliResponse'
      x-evidence:
        kind: documentation
  /mcp:
    post:
      operationId: post_mcp
      tags:
      - Mcp
      summary: Streamable HTTP with stateless JSON-RPC over initialize, tools/list, tools/call and ping.
      x-source: https://transcriptout.com/mcp
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /v1/channel/latest:
    get:
      operationId: get_v1_channel_latest
      tags:
      - Channel
      summary: A channel's latest videos
      x-source: https://transcriptout.com/docs
      parameters:
      - name: name
        in: query
        required: true
        schema:
          type: string
        description: '@handle, channel name, UC… channel id, or channel URL.'
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1ChannelLatestResponse'
      x-evidence:
        kind: documentation
  /v1/channel/search:
    get:
      operationId: get_v1_channel_search
      tags:
      - Channel
      summary: Search inside a channel
      x-source: https://transcriptout.com/docs
      parameters:
      - name: name
        in: query
        required: true
        schema:
          type: string
        description: '@handle, channel name, UC… channel id, or channel URL.'
      - name: q
        in: query
        required: true
        schema:
          type: string
        description: Query, 1–200 chars.
      - name: limit
        in: query
        required: false
        schema:
          type: integer
        description: Results per page, 1–100.
      - name: next_page_token
        in: query
        required: false
        schema:
          type: string
        description: Token from a previous response. Replaces id and q when paginating.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1ChannelSearchResponse'
      x-evidence:
        kind: documentation
  /v1/channel/videos:
    get:
      operationId: get_v1_channel_videos
      tags:
      - Channel
      summary: GET /v1/channel/videos
      x-source: https://transcriptout.com/docs
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: string
      - name: name
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1ChannelVideosResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl "https://api.transcriptout.com/v1/channel/videos?name=@Fireship&limit=50"  -H "Authorization: Bearer sk_your_key_here" '
    post:
      operationId: post_v1_channel_videos
      tags:
      - Channel
      summary: POST /v1/channel/videos
      x-source: https://transcriptout.com/docs
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1ChannelVideosRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostV1ChannelVideosResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -G "https://api.transcriptout.com/v1/channel/videos"  --data-urlencode "next_page_token=2b7e41d9c8305a6f"  -H "Authorization:
          Bearer sk_your_key_here" The token replaces the original query parameters, with no need to repeat id or q . The one endpoint without
          tokens is /v1/playlist/search , which reports scanned and truncated instead. Video field formats Identical across every endpoint that
          re'
  /v1/playlist/search:
    get:
      operationId: get_v1_playlist_search
      tags:
      - Playlist
      summary: Search inside a playlist by a substring of the title.
      x-source: https://transcriptout.com/docs
      parameters:
      - name: id
        in: query
        required: true
        schema:
          type: string
        description: PL… playlist id, or a URL with a list= parameter.
      - name: q
        in: query
        required: true
        schema:
          type: string
        description: Substring to match in the title, case-insensitive.
      - name: limit
        in: query
        required: false
        schema:
          type: integer
        description: Maximum matches to return, 1–100.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1PlaylistSearchResponse'
      x-evidence:
        kind: documentation
  /v1/playlist/videos:
    get:
      operationId: get_v1_playlist_videos
      tags:
      - Playlist
      summary: List playlist videos
      x-source: https://transcriptout.com/docs
      parameters:
      - name: id
        in: query
        required: true
        schema:
          type: string
        description: PL… playlist id, or a URL with a list= parameter. Optional if you pass next_page_token.
      - name: limit
        in: query
        required: false
        schema:
          type: integer
        description: Page size, up to 100, or up to 500 in ids_only mode.
      - name: next_page_token
        in: query
        required: false
        schema:
          type: string
        description: Token from a previous response.
      - name: ids_only
        in: query
        required: false
        schema:
          type: boolean
        description: Return video_ids[] instead of full objects.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1PlaylistVideosResponse'
      x-evidence:
        kind: documentation
  /v1/search:
    get:
      operationId: get_v1_search
      tags:
      - Search
      summary: Search YouTube
      x-source: https://transcriptout.com/docs
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
        description: Query, 1–200 chars. Optional if you pass next_page_token instead.
      - name: type
        in: query
        required: false
        schema:
          type: string
        description: video | channel
      - name: limit
        in: query
        required: false
        schema:
          type: integer
        description: Results per page, 1–50.
      - name: next_page_token
        in: query
        required: false
        schema:
          type: string
        description: Token from a previous response.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1SearchResponse'
      x-evidence:
        kind: documentation
  /v1/transcript:
    get:
      operationId: get_v1_transcript
      tags:
      - Transcript
      summary: GET /v1/transcript
      x-source: https://transcriptout.com/docs
      parameters:
      - name: format
        in: query
        required: false
        schema:
          type: string
      - name: video
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1TranscriptResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl \"https://api.transcriptout.com/v1/transcript?video=dQw4w9WgXcQ&format=text\"  -H \"Authorization: Bearer sk_your_key_here\"\
          \ 3 Read the envelope Check ok, then read data. On failure, branch on code, never on the wording of detail. response.json Copy 1 2 3\
          \ 4 5 6 7 8 9 10 { \n \"ok\" : true , \n \"request_id\" : \"req_a1b2c3d4e5f6\" , \n \"data\" : { \n \"video_id\" : \"dQw4w9WgXcQ\" ,\
          \ \n \"language\" : \"en\" , \n \"kin"
  /v1/transcripts:
    post:
      operationId: post_v1_transcripts
      tags:
      - Transcripts
      summary: Get transcripts in bulk
      x-source: https://transcriptout.com/docs
      parameters:
      - name: videos
        in: query
        required: true
        schema:
          type: string
        description: Video ids or YouTube URLs, up to 4,000 per job.
      - name: lang
        in: query
        required: false
        schema:
          type: string
        description: One language for the whole job.
      - name: format
        in: query
        required: false
        schema:
          type: string
        description: json | text | srt | vtt | srv3
      - name: kind
        in: query
        required: false
        schema:
          type: string
        description: manual | auto
      - name: segment
        in: query
        required: false
        schema:
          type: integer
        description: Max characters per segment, 20–5000.
      - name: video_metadata
        in: query
        required: false
        schema:
          type: boolean
        description: Add the video metadata to each item.
      - name: Idempotency-Key
        in: header
        required: false
        schema:
          type: string
        description: Optional retry key kept for 24 hours.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1TranscriptsRequest'
      responses:
        '202':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostV1TranscriptsResponse'
      x-evidence:
        kind: documentation
  /v1/transcripts/17ef4c30218c47bc98bb5ac072d564e4/cancel:
    get:
      operationId: get_v1_transcripts_17ef4c30218c47bc98bb5ac072d564e4_cancel
      tags:
      - Transcripts
      summary: Cancel a batch job and refund the videos it never started.
      x-source: https://transcriptout.com/docs
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1Transcripts17Ef4C30218C47Bc98Bb5Ac072D564E4CancelRespon'
      x-evidence:
        kind: documentation
  /v1/transcripts/{jobId}:
    get:
      operationId: get_v1_transcripts_jobId
      tags:
      - Transcripts
      summary: Check a batch job
      x-source: https://transcriptout.com/docs
      parameters:
      - name: jobId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1TranscriptsJobidResponse'
      x-evidence:
        kind: documentation
  /v1/transcripts/{jobId}/cancel:
    post:
      operationId: post_v1_transcripts_jobId_cancel
      tags:
      - Transcripts
      summary: Cancel a batch job
      x-source: https://transcriptout.com/docs
      parameters:
      - name: jobId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostV1TranscriptsJobidCancelResponse'
      x-evidence:
        kind: documentation
  /v1/transcripts/{jobId}/results:
    get:
      operationId: get_v1_transcripts_jobId_results
      tags:
      - Transcripts
      summary: Read batch results
      x-source: https://transcriptout.com/docs
      parameters:
      - name: jobId
        in: path
        required: true
        schema:
          type: string
      - name: limit
        in: query
        required: false
        schema:
          type: integer
        description: Results per page, 1–500.
      - name: next_page_token
        in: query
        required: false
        schema:
          type: string
        description: The token from the previous page.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1TranscriptsJobidResultsResponse'
      x-evidence:
        kind: documentation
  /v1/transcripts/{jobId}/results/{videoId}:
    get:
      operationId: get_v1_transcripts_jobId_results_videoId
      tags:
      - Transcripts
      summary: One video out of the job, by id.
      x-source: https://transcriptout.com/docs
      parameters:
      - name: jobId
        in: path
        required: true
        schema:
          type: string
      - name: videoId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1TranscriptsJobidResultsVideoidResponse'
      x-evidence:
        kind: documentation
  /v1/video:
    get:
      operationId: get_v1_video
      tags:
      - Video
      summary: Get video info
      x-source: https://transcriptout.com/docs
      parameters:
      - name: id
        in: query
        required: true
        schema:
          type: string
        description: Video id or any YouTube URL.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1VideoResponse'
      x-evidence:
        kind: documentation
components:
  schemas:
    GetAuthRegisterCliResponse:
      type: object
      properties:
        access_token:
          type: string
          description: A short-lived session token for step two.
    PostAuthRegisterCliRequest:
      type: object
      properties:
        email:
          type: string
    GetAuthVerifyCliResponse:
      type: object
      properties:
        key:
          type: string
          description: A normal sk_ API key for a regular account.
    GetV1ChannelLatestResponse:
      type: object
      properties:
        channel:
          type: string
          description: The identifier you passed in.
        channel_id:
          type: string
          description: Resolved UC… id.
        count:
          type: integer
          description: Number of entries, normally 15.
        videos:
          type: array
          description: video_id, title, published (ISO 8601), thumbnails.
        video_ids:
          type: array
          description: The same ids as a flat array, for convenience.
    GetV1ChannelSearchResponse:
      type: object
      properties:
        channel:
          type: string
          description: The identifier you passed in.
        query:
          type: string
          description: The query.
        title:
          type: string
          description: Channel name.
        count:
          type: integer
          description: Items on this page.
        videos:
          type: array
          description: Same video shape as /v1/channel/videos.
        next_page_token:
          type: string
          description: Token for the next page.
        has_more:
          type: boolean
          description: Whether another page exists.
    GetV1ChannelVideosResponse:
      type: object
      properties:
        ok:
          type: boolean
        request_id:
          type: string
        data:
          type: object
          properties:
            video_id:
              type: string
            language:
              type: string
            kind:
              type: string
            transcript:
              type: array
              items:
                type: object
                properties:
                  text:
                    type: string
                  start:
                    type: number
                  duration:
                    type: number
            available_langs:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  kind:
                    type: string
                  name:
                    type: string
    PostV1ChannelVideosRequest:
      type: object
      properties:
        videos:
          type: array
          items:
            type: string
        format:
          type: string
    PostV1ChannelVideosResponse:
      type: object
      properties:
        ok:
          type: boolean
        request_id:
          type: string
        data:
          type: object
          properties:
            video_id:
              type: string
            language:
              type: string
            kind:
              type: string
            transcript:
              type: array
              items:
                type: object
                properties:
                  text:
                    type: string
                  start:
                    type: number
                  duration:
                    type: number
            available_langs:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  kind:
                    type: string
                  name:
                    type: string
    GetV1PlaylistSearchResponse:
      type: object
      properties:
        ok:
          type: boolean
        request_id:
          type: string
        data:
          type: object
        data.playlist:
          type: string
        data.query:
          type: string
        data.title:
          type: string
        data.count:
          type: integer
        data.scanned:
          type: integer
        data.truncated:
          type: boolean
        data.videos:
          type: array
    GetV1PlaylistVideosResponse:
      type: object
      properties:
        playlist:
          type: string
          description: The identifier you passed in.
        title:
          type: string
          description: Playlist title.
        count:
          type: integer
          description: Items on this page.
        videos:
          type: array
          description: Same video shape as /v1/channel/videos. Replaced by video_ids with ids_only.
        next_page_token:
          type: string
          description: Token for the next page.
        has_more:
          type: boolean
          description: Whether another page exists.
    GetV1SearchResponse:
      type: object
      properties:
        query:
          type: string
          description: The query these results answer.
        type:
          type: string
          description: video or channel.
        count:
          type: integer
          description: Number of results on this page.
        results:
          type: array
          description: Videos or channels with metadata.
        next_page_token:
          type: string
          description: Token for the next page, null when there's none.
        has_more:
          type: boolean
          description: Whether another page exists.
        estimated_results:
          type: integer
          description: YouTube's rough total. Always null for type=channel.
    GetV1TranscriptResponse:
      type: object
      properties:
        ok:
          type: boolean
        request_id:
          type: string
        data:
          type: object
          properties:
            video_id:
              type: string
            language:
              type: string
            kind:
              type: string
            transcript:
              type: string
    PostV1TranscriptsRequest:
      type: object
      properties:
        videos:
          type: string
          description: Video ids or YouTube URLs, up to 4,000 per job.
        lang:
          type: string
          description: One language for the whole job.
        format:
          type: string
          description: json | text | srt | vtt | srv3
        kind:
          type: string
          description: manual | auto
        segment:
          type: integer
          description: Max characters per segment, 20–5000.
        video_metadata:
          type: boolean
          description: Add the video metadata to each item.
      required:
      - videos
    PostV1TranscriptsResponse:
      type: object
      properties:
        job_id:
          type: string
          description: Use it to poll the job and to read its results.
        status:
          type: string
          description: queued → running → done, or cancelled.
        count:
          type: integer
          description: How many videos the job holds, after duplicates.
        lang:
          type: string
          description: The language it will fetch, echoed back.
        format:
          type: string
          description: The format the results will come in, echoed back.
        credits:
          type: object
          description: '{ charged, refunded }'
    GetV1Transcripts17Ef4C30218C47Bc98Bb5Ac072D564E4CancelRespon:
      type: object
      properties:
        ok:
          type: boolean
        request_id:
          type: string
        data:
          type: object
        data.job_id:
          type: string
        data.status:
          type: string
        data.lang:
          type: string
        data.format:
          type: string
        data.count:
          type: integer
        data.done:
          type: integer
        data.ready:
          type: integer
        data.failed:
          type: integer
        data.pending:
          type: integer
        data.credits:
          type: object
        data.created_at:
          type: string
        data.finished_at:
          type: string
    GetV1TranscriptsJobidResponse:
      type: object
      properties:
        job_id:
          type: string
          description: The job this is about, the same id you asked for.
        status:
          type: string
          description: queued → running → done, or cancelled.
        lang:
          type: string
          description: The language the job was submitted with.
        format:
          type: string
          description: The format the job was submitted with.
        count:
          type: integer
          description: Videos in the job.
        done:
          type: integer
          description: How many have an answer, ready or failed.
        ready:
          type: integer
          description: How many came back with a transcript.
        failed:
          type: integer
          description: How many ended in an error.
        pending:
          type: integer
          description: Still to go.
        credits:
          type: object
          description: '{ charged, refunded }'
        created_at:
          type: string
          description: When the job was accepted, ISO-8601.
        finished_at:
          type: string
          description: Null until the job ends.
    PostV1TranscriptsJobidCancelResponse:
      type: object
      properties:
        job_id:
          type: string
          description: The job that was stopped.
        status:
          type: string
          description: cancelled, once it has been.
        lang:
          type: string
          description: The language the job was submitted with.
        format:
          type: string
          description: The format the job was submitted with.
        count:
          type: integer
          description: Videos the job held.
        done:
          type: integer
          description: What it managed to fetch.
        ready:
          type: integer
          description: How many of those came back with a transcript.
        failed:
          type: integer
          description: How many ended in an error before the stop.
        pending:
          type: integer
          description: What it never reached.
        credits:
          type: object
          description: '{ charged, refunded }'
        created_at:
          type: string
          description: When the job was accepted, ISO-8601.
        finished_at:
          type: string
          description: When it was stopped.
    GetV1TranscriptsJobidResultsResponse:
      type: object
      properties:
        job_id:
          type: string
          description: The job this page belongs to.
        status:
          type: string
          description: The job status.
        lang:
          type: string
          description: The language the job was submitted with.
        format:
          type: string
          description: The format the job was submitted with.
        results:
          type: array
          description: The page, in the order the results landed.
        count:
          type: integer
          description: How many results are on this page.
        has_more:
          type: boolean
          description: Whether another page exists right now.
        next_page_token:
          type: string
          description: Pass it back to get the next page.
    GetV1TranscriptsJobidResultsVideoidResponse:
      type: object
      properties:
        status:
          type: string
          description: ready or error
        video_id:
          type: string
          description: The video id.
        cache:
          type: string
          description: HIT or MISS
    GetV1VideoResponse:
      type: object
      properties:
        video_id:
          type: string
          description: Resolved video id.
        title:
          type: string
          description: Video title.
        channel:
          type: string
          description: Channel name.
        channel_id:
          type: string
          description: Channel id (UC…).
        duration:
          type: string
          description: M:SS or H:MM:SS
        view_count:
          type: string
          description: View count as YouTube renders it.
        keywords:
          type: array
          description: Tags the author set, may be empty.
        thumbnails:
          type: array
          description: 'Five sizes: { url, width, height }.'
        is_live:
          type: boolean
          description: Whether this is (or was) a live broadcast.
        available_langs:
          type: array
          description: 'Every transcript track: { code, kind, name }.'
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Auth
- name: Channel
- name: Mcp
- name: Playlist
- name: Search
- name: Transcript
- name: Transcripts
- name: Video