On this page
Subtitle Extraction API
Pass a video URL and get every subtitle track it has, uploaded and auto-generated alike, with a direct download link per format (srt, vtt, json3 and more), plus the video's title, duration and thumbnail. It currently targets YouTube videos.
🎯 Basic Information
| Item | Details |
|---|---|
| Endpoint | https://api.meowload.net/openapi/v1/extract/subtitles |
| Method | POST with a JSON body |
| Authentication | Authorization: Bearer <your API key> header, with a key from the Developer Console |
| Billing | Charged only on success (200); rules are listed in the Developer Console |
New to the API? Start with the Quickstart.
📋 Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | The video URL |
Error messages are in English by default; send an Accept-Language header (for example zh or ja) to localize them.
Request Example
curl -X POST https://api.meowload.net/openapi/v1/extract/subtitles \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your API key>" \
-d '{"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw"}'🟢 Success Response
Response Example
A successful call returns HTTP 200, and the body is the video metadata plus every subtitle track. The example below is trimmed:
{
"site": "youtube",
"id": "EXAMPLE0004",
"title": "Me at the zoo",
"duration": 19,
"thumbnail_url": "https://images.example.com/EXAMPLE0004/cover.jpg",
"subtitles": [
{
"language_name": "English",
"language_tag": "en",
"urls": [
{ "url": "https://www.youtube.com/api/timedtext?v=EXAMPLE0004&fmt=srt&sig=EXAMPLE", "format": "srt" },
{ "url": "https://www.youtube.com/api/timedtext?v=EXAMPLE0004&fmt=vtt&sig=EXAMPLE", "format": "vtt" }
]
},
{
"language_name": "English (auto-generated)",
"language_tag": "en",
"urls": [
{ "url": "https://www.youtube.com/api/timedtext?v=EXAMPLE0004&kind=asr&fmt=srt&sig=EXAMPLE", "format": "srt" }
]
}
]
}Response Field Descriptions
- Each entry in
subtitles[]is one language track.language_nameis the language's display name in its own language (for example English or 中文) andlanguage_tagis a lowercase BCP 47 style tag (for exampleenorzh-hans). Auto-generated tracks are included. urls[]lists the download links of that track, one per format. Picksrtfor general players,vttfor web playback andjson3for programmatic processing. The links are short-lived, so download promptly.- A video without subtitles either returns an empty
subtitlesarray or fails with HTTP400. Handle both.
The full list of parameters and response fields is in the API reference.
🔴 Error Response
A failed extraction returns HTTP 400 and is never charged. The body carries a machine-readable code and a retryable flag (whether retrying the same URL later might succeed):
{ "message": "The content has been deleted or does not exist", "code": "content_deleted", "retryable": false }401 (invalid API key), 402 (out of credits), 422 (invalid request body), 429 (rate limited) and every extraction error code are covered in Error Codes.