Skip to main content
GET
/
transcript
import { Supadata } from '@supadata/js';

const supadata = new Supadata({
apiKey: 'YOUR_API_KEY',
});

// Get transcript or job ID
const transcriptResult = await supadata.transcript({
url: 'https://youtu.be/dQw4w9WgXcQ',
lang: 'en',
text: true,
mode: 'auto' // 'native', 'auto', or 'generate'
});
console.log(transcript);

if ('jobId' in transcriptJob) {
// Check job result
const result = await supadata.transcript.getJobStatus(transcriptJob.jobId);
console.log(result);
}
{
  "content": [
    {
      "text": "Never gonna give you up...",
      "offset": 8150,
      "duration": 1200,
      "lang": "en"
    }
  ],
  "lang": "en",
  "availableLangs": [
    "en",
    "es",
    "zh-TW"
  ]
}

Authorizations

x-api-key
string
header
required

Query Parameters

url
string<uri>
required

Video URL from any supported platform (YouTube, TikTok, Twitter, Instagram) or a file URL.

Example:

"https://youtu.be/dQw4w9WgXcQ"

lang
string

Preferred language code of the transcript (ISO 639-1). If not provided, the first available language will be returned. If the requested language is unavailable, the API defaults to the first available language. See Languages.

Example:

"en"

text
boolean
default:false

When true, returns plain text transcript.

chunkSize
number

Maximum characters per transcript chunk (only when text=false)

Required range: 50 <= x <= 10000
Example:

1000

mode
enum<string>
default:auto

Transcript mode: native (only fetch existing transcript), generate (always generate transcript using AI), or auto (try native, fallback to generate if unavailable). If url is a file URL, mode is always generate.

Available options:
native,
auto,
generate
Example:

"auto"

Response

Successfully fetched or generated transcript

Either a transcript result (synchronous) or a job ID (asynchronous).

content
required
lang
string
required

ISO 639-1 language code of transcript

Example:

"en"

availableLangs
string[]
required

List of available language codes

Example:
["en", "es", "zh-TW"]