MeowLoad Docs
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

ItemDetails
Endpointhttps://api.meowload.net/openapi/v1/extract/subtitles
MethodPOST with a JSON body
AuthenticationAuthorization: Bearer <your API key> header, with a key from the Developer Console
BillingCharged only on success (200); rules are listed in the Developer Console

New to the API? Start with the Quickstart.

📋 Request Parameters

ParameterTypeRequiredDescription
urlstringYesThe 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_name is the language's display name in its own language (for example English or 中文) and language_tag is a lowercase BCP 47 style tag (for example en or zh-hans). Auto-generated tracks are included.
  • urls[] lists the download links of that track, one per format. Pick srt for general players, vtt for web playback and json3 for programmatic processing. The links are short-lived, so download promptly.
  • A video without subtitles either returns an empty subtitles array or fails with HTTP 400. 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.