# 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`