# Captions ## List captions or subtitles `client.stream.captions.get(stringidentifier, CaptionGetParamsparams, RequestOptionsoptions?): SinglePage` **get** `/accounts/{account_id}/stream/{identifier}/captions` Lists the available captions or subtitles for a specific video. ### Parameters - `identifier: string` A Cloudflare-generated unique identifier for a media item. - `params: CaptionGetParams` - `account_id: string` Identifier. ### Returns - `Caption` - `generated?: boolean` Whether the caption was generated via AI. - `label?: string` The language label displayed in the native language to users. - `language?: string` The language tag in BCP 47 format. - `status?: "ready" | "inprogress" | "error"` The status of a generated caption. - `"ready"` - `"inprogress"` - `"error"` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); // Automatically fetches more pages as needed. for await (const caption of client.stream.captions.get('ea95132c15732412d22c1476fa83f27a', { account_id: '023e105f4ecef8ad9ca31a8372d0c353', })) { console.log(caption.generated); } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "generated": true, "label": "Türkçe", "language": "tr", "status": "ready" } ] } ``` ## Domain Types ### Caption - `Caption` - `generated?: boolean` Whether the caption was generated via AI. - `label?: string` The language label displayed in the native language to users. - `language?: string` The language tag in BCP 47 format. - `status?: "ready" | "inprogress" | "error"` The status of a generated caption. - `"ready"` - `"inprogress"` - `"error"` # Language ## List captions or subtitles for a provided language `client.stream.captions.language.get(stringidentifier, stringlanguage, LanguageGetParamsparams, RequestOptionsoptions?): Caption` **get** `/accounts/{account_id}/stream/{identifier}/captions/{language}` Lists the captions or subtitles for provided language. ### Parameters - `identifier: string` A Cloudflare-generated unique identifier for a media item. - `language: string` The language tag in BCP 47 format. - `params: LanguageGetParams` - `account_id: string` Identifier. ### Returns - `Caption` - `generated?: boolean` Whether the caption was generated via AI. - `label?: string` The language label displayed in the native language to users. - `language?: string` The language tag in BCP 47 format. - `status?: "ready" | "inprogress" | "error"` The status of a generated caption. - `"ready"` - `"inprogress"` - `"error"` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const caption = await client.stream.captions.language.get( 'ea95132c15732412d22c1476fa83f27a', 'tr', { account_id: '023e105f4ecef8ad9ca31a8372d0c353' }, ); console.log(caption.generated); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "generated": true, "label": "Türkçe", "language": "tr", "status": "ready" } } ``` ## Generate captions or subtitles for a provided language via AI `client.stream.captions.language.create(stringidentifier, stringlanguage, LanguageCreateParamsparams, RequestOptionsoptions?): Caption` **post** `/accounts/{account_id}/stream/{identifier}/captions/{language}/generate` Generate captions or subtitles for provided language via AI. ### Parameters - `identifier: string` A Cloudflare-generated unique identifier for a media item. - `language: string` The language tag in BCP 47 format. - `params: LanguageCreateParams` - `account_id: string` Identifier. ### Returns - `Caption` - `generated?: boolean` Whether the caption was generated via AI. - `label?: string` The language label displayed in the native language to users. - `language?: string` The language tag in BCP 47 format. - `status?: "ready" | "inprogress" | "error"` The status of a generated caption. - `"ready"` - `"inprogress"` - `"error"` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const caption = await client.stream.captions.language.create( 'ea95132c15732412d22c1476fa83f27a', 'tr', { account_id: '023e105f4ecef8ad9ca31a8372d0c353' }, ); console.log(caption.generated); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "generated": true, "label": "Türkçe", "language": "tr", "status": "ready" } } ``` ## Upload captions or subtitles `client.stream.captions.language.update(stringidentifier, stringlanguage, LanguageUpdateParamsparams, RequestOptionsoptions?): Caption` **put** `/accounts/{account_id}/stream/{identifier}/captions/{language}` Uploads the caption or subtitle file to the endpoint for a specific BCP47 language. One caption or subtitle file per language is allowed. ### Parameters - `identifier: string` A Cloudflare-generated unique identifier for a media item. - `language: string` The language tag in BCP 47 format. - `params: LanguageUpdateParams` - `account_id: string` Path param: Identifier. - `file: string` Body param: The WebVTT file containing the caption or subtitle content. ### Returns - `Caption` - `generated?: boolean` Whether the caption was generated via AI. - `label?: string` The language label displayed in the native language to users. - `language?: string` The language tag in BCP 47 format. - `status?: "ready" | "inprogress" | "error"` The status of a generated caption. - `"ready"` - `"inprogress"` - `"error"` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const caption = await client.stream.captions.language.update( 'ea95132c15732412d22c1476fa83f27a', 'tr', { account_id: '023e105f4ecef8ad9ca31a8372d0c353', file: '@/Users/kyle/Desktop/tr.vtt' }, ); console.log(caption.generated); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "generated": true, "label": "Türkçe", "language": "tr", "status": "ready" } } ``` ## Delete captions or subtitles `client.stream.captions.language.delete(stringidentifier, stringlanguage, LanguageDeleteParamsparams, RequestOptionsoptions?): LanguageDeleteResponse` **delete** `/accounts/{account_id}/stream/{identifier}/captions/{language}` Removes the captions or subtitles from a video. ### Parameters - `identifier: string` A Cloudflare-generated unique identifier for a media item. - `language: string` The language tag in BCP 47 format. - `params: LanguageDeleteParams` - `account_id: string` Identifier. ### Returns - `LanguageDeleteResponse = string` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const language = await client.stream.captions.language.delete( 'ea95132c15732412d22c1476fa83f27a', 'tr', { account_id: '023e105f4ecef8ad9ca31a8372d0c353' }, ); console.log(language); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": "" } ``` ## Domain Types ### Language Delete Response - `LanguageDeleteResponse = string` # Vtt ## Return WebVTT captions for a provided language `client.stream.captions.language.vtt.get(stringidentifier, stringlanguage, VttGetParamsparams, RequestOptionsoptions?): VttGetResponse` **get** `/accounts/{account_id}/stream/{identifier}/captions/{language}/vtt` Return WebVTT captions for a provided language. ### Parameters - `identifier: string` A Cloudflare-generated unique identifier for a media item. - `language: string` The language tag in BCP 47 format. - `params: VttGetParams` - `account_id: string` Identifier. ### Returns - `VttGetResponse = string` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const vtt = await client.stream.captions.language.vtt.get( 'ea95132c15732412d22c1476fa83f27a', 'tr', { account_id: '023e105f4ecef8ad9ca31a8372d0c353' }, ); console.log(vtt); ``` ## Domain Types ### Vtt Get Response - `VttGetResponse = string`