Skip to content

SubDownload/api-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SubDownload API SDK

Official SDKs for the SubDownload YouTube Transcript API.

API Documentation | Get API Key

中文 | 日本語

Available SDKs

Language Directory Requirements
Python python/ Python 3.7+, requests
JavaScript javascript/ Node.js 18+ (native fetch)
Go go/ Go 1.21+ (zero dependencies)
Java java/ Java 11+, Gson
Kotlin kotlin/ Kotlin 1.9+, Gson
Rust rust/ reqwest, serde

Quick Start

1. Get your API key

Sign up at subdownload.com and get your API key from the dashboard. Keys start with sk_live_.

2. Fetch a transcript

Python

from subdownload import SubDownload

client = SubDownload("sk_live_your_api_key")
result = client.get_transcript(video_id="dQw4w9WgXcQ", lang="en")

for seg in result["data"]["segments"]:
    print(f"[{seg['start']:.1f}s] {seg['text']}")

JavaScript

import { SubDownload } from "./subdownload.js";

const client = new SubDownload("sk_live_your_api_key");
const result = await client.getTranscript({ videoId: "dQw4w9WgXcQ", lang: "en" });

result.data.segments.forEach((seg) => {
  console.log(`[${seg.start}s] ${seg.text}`);
});

Go

client := subdownload.NewClient("sk_live_your_api_key")
resp, _ := client.Transcript("dQw4w9WgXcQ", &subdownload.TranscriptOptions{Lang: "en"})
fmt.Println(resp.Data.Text)

Java

var client = new SubDownloadClient("sk_live_your_api_key");
var result = client.fetchTranscript("dQw4w9WgXcQ", "en");
System.out.println(result.getAsJsonObject("data").get("text").getAsString());

Kotlin

val client = SubDownloadClient("sk_live_your_api_key")
val result = client.fetchTranscript(videoId = "dQw4w9WgXcQ", lang = "en")
println(result.data.text)

Rust

let client = SubDownloadClient::new("sk_live_your_api_key");
let resp = client.fetch_transcript(Some("dQw4w9WgXcQ"), None, Some("en"))?;
println!("{}", resp.data.text);

API

GET /v1/youtube/transcript

Fetch transcript for a YouTube video. Costs 1 credit per request.

Authentication: X-API-Key: sk_live_... or Authorization: Bearer sk_live_...

Parameters:

Parameter Type Required Description
video_id string * YouTube video ID (e.g. dQw4w9WgXcQ)
video_url string * Full YouTube URL (alternative to video_id)
lang string No Language code (e.g. en, zh, en,zh)

* Provide either video_id or video_url.

Response:

{
  "data": {
    "video_id": "dQw4w9WgXcQ",
    "video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "language": "en",
    "segments": [
      { "text": "...", "start": 1.4, "duration": 3.2 }
    ],
    "text": "Full transcript text...",
    "available_tracks": [
      { "language": "English", "language_code": "en", "is_generated": false }
    ],
    "meta": {
      "title": "Video Title",
      "author": "Channel Name",
      "channel_id": "UCxxx",
      "thumbnail": "https://..."
    }
  },
  "credits_used": 1,
  "credits_remaining": 999
}

Error Response:

{
  "error": {
    "code": "TRANSCRIPT_NOT_FOUND",
    "message": "No transcript available for this video"
  }
}

Full API documentation: api.subdownload.com/docs/api

License

MIT