API संदर्भ
Base URL: https://api.subdownload.com · ऑथ: Authorization: Bearer sk_live_xxx
एंडपॉइंट्स
GET
/v1/verify
free
API Key की वैधता जाँचें। टोकन और यूज़र की जानकारी लौटाता है। क्रेडिट नहीं काटता।
रिक्वेस्ट
curl -H "Authorization: Bearer sk_live_xxx" \
https://api.subdownload.com/v1/verify
रिस्पॉन्स 200
{
"valid": true,
"token": { "name": "My App", "prefix": "sk_live_abc", "monthly_quota": 0, "used_quota": 120 },
"user": { "id": 42, "email": "[email protected]", "plan": "free", "credits_remaining": 148 }
}
GET
/v1/youtube/transcript
1 credit
YouTube वीडियो का ट्रांसक्रिप्ट / कैप्शन प्राप्त करें। वीडियो ID या किसी भी मान्य YouTube URL (watch, youtu.be, shorts) को स्वीकार करता है।
पैरामीटर
| नाम | प्रकार | आवश्यक? | विवरण |
video_id | string | आवश्यक | 11-वर्ण वीडियो ID या पूरा YouTube URL। एलियास: video_url। |
lang | string | वैकल्पिक | पसंदीदा भाषा कोड, कॉमा-विभाजित (जैसे en,zh,ja)। |
रिक्वेस्ट
curl -H "Authorization: Bearer sk_live_xxx" \
"https://api.subdownload.com/v1/youtube/transcript?video_id=dQw4w9WgXcQ&lang=en"
रिस्पॉन्स 200
{
"data": {
"video_id": "dQw4w9WgXcQ",
"language": "en",
"segments": [
{ "text": "We're no strangers to love", "start": 0.0, "duration": 3.5 }
],
"text": "We're no strangers to love...",
"meta": { "title": "...", "author": "...", "thumbnail": "..." }
},
"credits_used": 1,
"credits_remaining": 148
}
एरर
400 video_id गायब · 404 कैप्शन नहीं · 402 क्रेडिट समाप्त
GET
/v1/youtube/search
1 credit
कीवर्ड क्वेरी से YouTube वीडियो या चैनल खोजें।
पैरामीटर
| नाम | प्रकार | आवश्यक? | विवरण |
q | string | आवश्यक | खोज क्वेरी (1-200 वर्ण)। |
type | string | वैकल्पिक | video (डिफ़ॉल्ट) या channel। |
limit | integer | वैकल्पिक | 1-50 परिणाम (डिफ़ॉल्ट 20)। |
रिक्वेस्ट
curl -H "Authorization: Bearer sk_live_xxx" \
"https://api.subdownload.com/v1/youtube/search?q=rust+tutorial&limit=5"
GET
/v1/youtube/channel/resolve
free
किसी भी चैनल संदर्भ (@handle, URL, या UC… ID) को कैनोनिकल चैनल जानकारी में हल करें।
पैरामीटर
| नाम | प्रकार | आवश्यक? | विवरण |
input | string | आवश्यक | @handle, चैनल URL, वीडियो URL या UC… ID। |
GET
/v1/youtube/channel/search
1 credit
किसी विशिष्ट चैनल के वीडियो में खोजें।
पैरामीटर
| नाम | प्रकार | आवश्यक? | विवरण |
channel | string | आवश्यक | @handle, URL या UC… ID (एलियास: channel_id)। |
q | string | आवश्यक | खोज क्वेरी। |
limit | integer | वैकल्पिक | 1-50 (डिफ़ॉल्ट 30)। |
GET
/v1/youtube/channel/latest
free
RSS के ज़रिए चैनल के सबसे नए ~15 वीडियो प्राप्त करें। तेज़ और मुफ़्त।
पैरामीटर
| नाम | प्रकार | आवश्यक? | विवरण |
channel | string | आवश्यक | @handle, URL या UC… ID (एलियास: channel_id)। |
GET
/v1/youtube/channel/videos
1 credit/page
चैनल द्वारा अपलोड किए सभी वीडियो सूची, प्रति पेज ~100।
पैरामीटर
| नाम | प्रकार | आवश्यक? | विवरण |
channel | string | पहला पेज | @handle, URL या UC… ID (एलियास: channel_id)। |
continuation | string | अगले पेज | पिछले कॉल से लौटाया गया टोकन। |
नोट: channel या continuation में से एक दें, दोनों नहीं।
GET
/v1/youtube/playlist/videos
1 credit/page
YouTube प्लेलिस्ट के वीडियो पेज़ेशन के साथ सूची करें।
पैरामीटर
| नाम | प्रकार | आवश्यक? | विवरण |
playlist | string | पहला पेज | प्लेलिस्ट URL या ID (PL…, UU…, LL…, FL…, OL…)। |
continuation | string | अगले पेज | पिछले रिस्पॉन्स से टोकन। |
AI ट्रांसक्रिप्शन (ASR)
बिना कैप्शन वाले वीडियो पर Whisper चलाएँ। असिंक्रोनस: POST एक टास्क बनाता है, फिर GET से status=done तक पोल करें। 5 क्रेडिट, केवल सफलता पर कटते हैं — उसी वीडियो पर ASR दोबारा चलाना मुफ्त है।
POST
/v1/youtube/asr
done पर 5 क्रेडिट
असिंक्रोनस AI Whisper ट्रांसक्रिप्शन शुरू करता है। task_id और ETA हिंट देता है ताकि आप पोलिंग की लय सही रख सकें।
बॉडी (JSON)
| नाम | प्रकार | आवश्यक? | विवरण |
video_url | string | आवश्यक | YouTube URL (watch / youtu.be / shorts / embed)। |
lang | string | वैकल्पिक | भाषा हिंट (en, hi…)। ऑटो-डिटेक्शन के लिए छोड़ दें। |
रिक्वेस्ट
curl -X POST -H "Authorization: Bearer sk_live_xxx" -H "Content-Type: application/json" -d '{"video_url":"https://youtu.be/dQw4w9WgXcQ"}' https://api.subdownload.com/v1/youtube/asr
रिस्पॉन्स 202
{
"task_id": "task_01HX...",
"status": "queued",
"from_cache": false,
"queue_position": 2,
"estimated_wait_seconds": 61,
"next_poll_after_seconds": 15,
"poll_url": "/v1/youtube/asr/task_01HX..."
}
पोलिंग के बीच next_poll_after_seconds का पालन करें। कैश हिट पर status=done तुरंत segments के साथ मिलता है।
GET
/v1/youtube/asr/{task_id}
मुफ्त
ASR टास्क पोल करता है। मुफ्त — कोई क्रेडिट या टोकन कोटा नहीं। केवल निर्माता पढ़ सकता है।
स्टेटस: queued · downloading · transcribing · done · failed · cancelled। segments अंतिम केवल status=done पर होते हैं।
Library (उपयोगकर्ता स्टोरेज)
प्रति-उपयोगकर्ता ट्रांसक्रिप्ट और AI सारांश का स्टोरेज। पढ़ना मुफ्त; लिखना 1 टोकन कोटा यूनिट लेता है। उपयोगकर्ता क्रेडिट नहीं कटते।
GET
/v1/library
मुफ्त
उपयोगकर्ता द्वारा Library में सेव किए गए आइटम्स (ट्रांसक्रिप्ट + सारांश)।
पैरामीटर
| नाम | प्रकार | आवश्यक? | विवरण |
favorite | string | वैकल्पिक | 1 या true के लिए केवल पसंदीदा। |
q | string | वैकल्पिक | title/author पर सबस्ट्रिंग मैच। |
tag | string | वैकल्पिक | tag से फ़िल्टर। |
limit | integer | वैकल्पिक | 1–100 (डिफ़ॉल्ट 20)। |
offset | integer | वैकल्पिक | पेजिनेशन ऑफ़सेट। |
GET
/v1/library/{id}
मुफ्त
एकल Library आइटम का मेटाडेटा। अगला कंटेंट एंडपॉइंट चुनने के लिए has_asr / has_summary देखें।
GET
/v1/library/{id}/transcript
मुफ्त
ASR segments और जुड़ा हुआ टेक्स्ट देता है। पूर्ण ASR न होने पर 404।
GET
/v1/library/{id}/summary
मुफ्त
सेव किया गया सारांश टेक्स्ट देता है। सेव किए locales में से चुनने के लिए ?locale= (डिफ़ॉल्ट Accept-Language फिर en)। (video_id, locale) के लिए सारांश न होने पर 404।
POST
/v1/library
मुफ्त (1 टोकन कोटा)
kind=asr सेव्ड ट्रांसक्रिप्ट मार्क करता है (segments पहले से ASR टेबल में हैं)। kind=summary पहले से जनरेटेड सारांश टेक्स्ट summaries टेबल में अपलोड करता है और has_summary=true मार्क करता है। (video_id, locale) पर upsert।
बॉडी (JSON)
| नाम | प्रकार | आवश्यक? | विवरण |
video_id | string | आवश्यक | YouTube वीडियो ID। |
kind | string | आवश्यक | asr या summary। |
title / author / thumbnail / video_url / language / tag | string | वैकल्पिक | डिस्प्ले / फ़िल्टरिंग के लिए मेटाडेटा। |
locale | string | summary मोड | सारांश का locale (डिफ़ॉल्ट Accept-Language फिर en)। |
text | string | kind=summary पर | परसिस्ट करने के लिए सारांश टेक्स्ट। |
model | string | वैकल्पिक | LLM पहचानकर्ता (उदा. claude-opus-4)। |
DELETE
/v1/library/{id}
मुफ्त
Library आइटम का सॉफ्ट-डिलीट। उसी वीडियो के लिए POST /v1/library डुप्लिकेट बनाने की जगह पंक्ति को बहाल करेगा।
आधिकारिक SDK
जल्दी इंटिग्रेट करने के लिए हमारी आधिकारिक क्लाइंट लाइब्रेरीज़ का उपयोग करें:
→ पूरा सोर्स: github.com/SubDownload/api-sdk
→ बिलिंग, रेट लिमिट और एरर कोड के लिए सहायता और बिलिंग देखें।