API রেফারেন্স
এন্ডপয়েন্ট, ফিল্ড, রেসপন্স, ক্রেডিট, সীমা ও ত্রুটি।
আপডেট হয়েছে
কীভাবে কাজ করে#
প্রতিটি ট্রান্সক্রিপ্ট একটি কাজ। আপনি একটি উৎস জমা দেন, কাজটি ব্যাকগ্রাউন্ডে চলে, আর সফল হলে সেটি একটি ট্রান্সক্রিপ্টের দিকে নির্দেশ করে, যা আপনি যতবার খুশি পড়তে বা এক্সপোর্ট করতে পারেন। বেস URL: https://www.transcriptdock.com। সব অনুরোধ ও উত্তর JSON।
# 1. Submitcurl -X POST https://www.transcriptdock.com/v1/jobs \-H "Authorization: Bearer td_live_YOUR_KEY" \-H "Idempotency-Key: video-7680721699171601694" \-H "Content-Type: application/json" \-d '{ "source": { "url": "https://www.tiktok.com/@tiktok/video/7680721699171601694" }, "mode": "captions_only" }'# 2. Wait (returns as soon as the job finishes, up to 25 s per call)curl "https://www.transcriptdock.com/v1/jobs/11111111-1111-4111-8111-111111111111?wait=25" \-H "Authorization: Bearer td_live_YOUR_KEY"# 3. Exportcurl "https://www.transcriptdock.com/v1/transcripts/22222222-2222-4222-8222-222222222222/export?format=srt" \-H "Authorization: Bearer td_live_YOUR_KEY"
প্রমাণীকরণ#
API কী পাতায় কী তৈরি করুন। কী একবারই দেখানো হয়, দেখতে td_live_... ধরনের, এবং প্রতিটি অনুরোধের Authorization হেডারে যায়। কী তৈরির সময় বাছাই করা স্কোপ থাকে: jobs:read, jobs:write, transcripts:read, uploads:write। প্রতিটি ইন্টিগ্রেশনের জন্য আলাদা একটি কী তৈরি করুন, যেন শুধু সেটি বাতিল করা যায়।
Authorization: Bearer td_live_YOUR_KEY
Idempotency-Key#
নিচের এন্ডপয়েন্টগুলোতে এটি লাগে: POST /v1/jobs, /v1/batches, /v1/jobs/{id}/retry, /v1/video-discoveries ও /v1/language-discoveries। এটি যেকোনো 8 থেকে 128টি প্রিন্টেবল ASCII অক্ষরের হতে হবে। 48 ঘণ্টার মধ্যে একই বডিসহ একই কী পাঠালে মূল অবজেক্টটি ফেরত আসে, তাই আবার চেষ্টা করা অনুরোধে কোনো কিছু দুবার তৈরি বা চার্জ হয় না। একই কী ভিন্ন বডিসহ পাঠালে 409 IDEMPOTENCY_CONFLICT ফেরত আসে। ভালো কী হলো আপনার নিজের দেওয়া সেই আইডি, যা দিয়ে আপনি যে জিনিসটি ট্রান্সক্রাইব করছেন তা চিহ্নিত হয়।
X-Request-Id#
প্রতিটি উত্তরে এটি থাকে। সাপোর্টে যোগাযোগের সময় এটি উল্লেখ করুন।
এন্ডপয়েন্ট#
| মেথড | পাথ | যা করে | ক্রেডিট |
|---|---|---|---|
| POST | /v1/jobs | একটি ভিডিও, ফাইল বা লিংক ট্রান্সক্রাইব করুন | ক্যাপশন ট্রান্সক্রিপ্টে প্রতিটির জন্য 1, AI ট্রান্সক্রিপশনের প্রতি মিনিটে 2 |
| GET | /v1/jobs/{id} | কাজের স্ট্যাটাস, সর্বোচ্চ 25 সেকেন্ড অপেক্ষা করে | ফ্রি |
| GET | /v1/jobs | কাজের ইতিহাস | ফ্রি |
| POST | /v1/jobs/{id}/cancel | সারিতে থাকা কাজ বাতিল করুন | ফ্রি |
| POST | /v1/jobs/{id}/retry | ব্যর্থ কাজ আবার চালান | নতুন কাজ হিসেবে |
| POST | /v1/batches | অনেক ভিডিও ট্রান্সক্রাইব করুন (প্ল্যানের ব্যাচের আকার অনুযায়ী) | প্রতিটি আইটেমের জন্য, উপরের নিয়মে |
| GET | /v1/batches/{id} | ব্যাচের স্ট্যাটাস | ফ্রি |
| GET | /v1/transcripts/{id} | ট্রান্সক্রিপ্ট JSON | ফ্রি |
| GET | /v1/transcripts/{id}/export | txt, srt, vtt বা json ফাইল | ফ্রি |
| DELETE | /v1/transcripts/{id} | একটি ট্রান্সক্রিপ্ট মুছুন | ফ্রি |
| POST | /v1/uploads | ফাইল আপলোড করার জন্য একটি URL নিন | ফ্রি |
| POST | /v1/uploads/{id}/complete | আপলোড শেষ হিসেবে চিহ্নিত করুন | ফ্রি |
| POST | /v1/video-discoveries | YouTube খুঁজুন, চ্যানেল, প্লেলিস্ট বা TikTok প্রোফাইলের তালিকা দেখুন | প্রতি পাতায় 1 |
| GET | /v1/video-discoveries/{id} | খোঁজের ফলাফল | ফ্রি |
| POST | /v1/language-discoveries | একটি YouTube ভিডিওর ক্যাপশনের ভাষার তালিকা দেখুন | 1 |
| GET | /v1/language-discoveries/{id} | ভাষার তালিকা | ফ্রি |
| POST | /v1/webhook-endpoints | একটি ওয়েবহুক URL নিবন্ধন করুন (সাইন ইন করা সেশনে) | ফ্রি |
| GET | /v1/webhook-endpoints | ওয়েবহুক URL এর তালিকা | ফ্রি |
| DELETE | /v1/webhook-endpoints/{id} | একটি ওয়েবহুক URL বন্ধ করুন (সাইন ইন করা সেশনে) | ফ্রি |
| GET | /v1/usage | ক্রেডিট ও প্ল্যান | ফ্রি |
| GET | /v1/capabilities | আপনার কী কী করতে পারে | ফ্রি |
কাজ তৈরি করুন#
/v1/jobsকাজসহ 202 ফেরত আসে। আপনার ওয়ার্কস্পেসে একই ভিডিও ও একই বিকল্পের জন্য ট্রান্সক্রিপ্ট আগে থেকে থাকলে বিনা খরচে সফল কাজসহ 200 ফেরত আসে (billing.kind: "cached")।
{"id": "11111111-1111-4111-8111-111111111111","status": "queued","stage": "resolve","result_id": null,"error": null,"billing": { "credits_reserved": 2, "credits_charged": 0, "kind": "captions" },"source": { "platform": "tiktok", "media_id": "7680721699171601694", "canonical_url": "https://www.tiktok.com/@tiktok/video/7680721699171601694", "title": null, "upload_id": null },"options": { "mode": "auto", "language": null, "caption_preference": "prefer_creator" },"created_at": "2026-09-16T10:00:00.000Z"}
কাজের অবজেক্ট#
কাজ দেখুন#
/v1/jobs/{id}?wait=25কাজটি ফেরত আসে। wait (0 থেকে 25 সেকেন্ড) দিলে অনুরোধটি খোলা থাকে এবং কাজ চূড়ান্ত হলেই ফেরত আসে, তাই একটি কল পোলিং লুপের কাজ করে। পড়ার অনুরোধের আলাদা সীমা প্রতি মিনিটে 120।
কাজের তালিকা#
/v1/jobs?limit=20&cursor=সবচেয়ে নতুনটি আগে, limit 1 থেকে 100। পরের পাতার জন্য উত্তরের next_cursor আবার cursor হিসেবে পাঠান। একটি ভিডিওর কাজগুলো শুধু দেখতে platform ও source_id (কাজের source.media_id) একসাথে যোগ করুন, যেকোনো মোডে। নতুন করে জমা দেওয়ার আগে ওয়ার্কস্পেসে ট্রান্সক্রিপ্ট আগে থেকে আছে কি না, ক্লায়েন্ট এভাবেই পরীক্ষা করে।
কাজ বাতিল করুন#
/v1/jobs/{id}/cancelAI ট্রান্সক্রিপশন শুরু না হওয়া কাজ বাতিল করা যায়; ধরে রাখা ক্রেডিট ছেড়ে দেওয়া হয়। তার পরে 409 CANCELLATION_NOT_ALLOWED ফেরত আসে এবং কাজটি শেষ হয়।
কাজ আবার চালান#
/v1/jobs/{id}/retryএকটি ব্যর্থ কাজ থেকে নতুন কাজ তৈরি হয়, যদি তার ত্রুটি retryable হয়। নতুন Idempotency-Key লাগবে; ঐচ্ছিক বডি { "max_credits": 40 }। দাম নতুন কাজের মতোই। চূড়ান্ত ব্যর্থতায় (ব্যক্তিগত ভিডিও, ক্যাপশন নেই) 409 JOB_NOT_RETRYABLE ফেরত আসে: ইনপুট ঠিক করে আবার জমা দিন।
ট্রান্সক্রিপ্ট#
/v1/transcripts/{id}{"id": "22222222-2222-4222-8222-222222222222","source": { "platform": "youtube", "media_id": "dQw4w9WgXcQ", "canonical_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "title": "Never Gonna Give You Up" },"source_origin": "creator_captions","language": "en","text": "Never gonna give you up. Never gonna let you down.","segments": [{ "start": 0, "end": 2.4, "text": "Never gonna give you up" },{ "start": 2.4, "end": 4.9, "text": "Never gonna let you down" }],"words": null,"timing_granularity": "segment","duration_seconds": 212.0,"recognition": null,"extraction_version": "worker-0.1.0","created_at": "2026-09-16T10:00:14.000Z"}
ট্রান্সক্রিপ্ট আপনার প্ল্যানের সংরক্ষণের মেয়াদ পর্যন্ত রাখা হয় (ট্রায়ালে 7 দিন, Starter এ 30, Pro ও Scale এ 90)। আগেই মুছতে DELETE /v1/transcripts/{id} ব্যবহার করুন।
ট্রান্সক্রিপ্ট এক্সপোর্ট করুন#
/v1/transcripts/{id}/export?format=srt| format | যা পাবেন |
|---|---|
| txt | সাধারণ লেখা, প্রতি লাইনে একটি অংশ। |
| srt | SubRip সাবটাইটেল। |
| vtt | WebVTT সাবটাইটেল। |
| json | উপরের ট্রান্সক্রিপ্ট অবজেক্ট। |
বিনা খরচে, সীমাহীন। srt ও vtt সময় চায়; সময় ছাড়া ট্রান্সক্রিপ্ট 422 TIMESTAMPS_UNAVAILABLE ফেরত দেয়।
ব্যাচ#
/v1/batchesএকটি অনুরোধে অনেক ভিডিও। প্রতিটি আইটেমের ফিল্ডগুলো কাজ তৈরি করুন অংশের মতোই; পুরো ব্যাচ একসাথে গৃহীত বা প্রত্যাখ্যাত হয়। প্রতি ব্যাচে আইটেমের সংখ্যা: ট্রায়ালে 1, Starter এ 10, Pro এ 25, Scale এ 50।
curl -X POST https://www.transcriptdock.com/v1/batches \-H "Authorization: Bearer td_live_YOUR_KEY" \-H "Idempotency-Key: playlist-2026-09-16" \-H "Content-Type: application/json" \-d '{ "items": [{ "source": { "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }, "mode": "captions_only" },{ "source": { "url": "https://www.tiktok.com/@tiktok/video/7680721699171601694" }, "mode": "captions_only" }] }'
ব্যাচ অবজেক্টে আছে status (queued, processing, succeeded, partial_success, failed, cancelled), গণনা (total_items, succeeded_items, failed_items, cancelled_items) এবং items, যার প্রতিটিতে নিজস্ব job_id থাকে। পড়তে GET /v1/batches/{id} ব্যবহার করুন; প্রতিটি আইটেম একটি সাধারণ কাজ।
আপলোড#
আপনার নিজের অডিও বা ভিডিও (mp3, wav, m4a, ogg, aac, mp4, webm; সর্বোচ্চ 250 MB ও 2 ঘণ্টা)। একটি স্লট সংরক্ষণ করুন, সাইন করা URL এ ফাইল PUT করুন, সম্পূর্ণ হিসেবে চিহ্নিত করুন, তারপর source.upload_id দিয়ে একটি কাজ হিসেবে জমা দিন। আপলোড সবসময় AI ট্রান্সক্রিপশন ব্যবহার করে।
# 1. Reservecurl -X POST https://www.transcriptdock.com/v1/uploads \-H "Authorization: Bearer td_live_YOUR_KEY" \-H "Content-Type: application/json" \-d '{ "filename": "interview.mp3", "content_type": "audio/mpeg", "bytes": 48213920 }'# -> { "id": "33333333-...", "signed_upload_url": "https://...", "expires_at": "...", "status": "pending" }# 2. Upload the bytes (same Content-Type you declared)curl -X PUT "SIGNED_UPLOAD_URL" -H "Content-Type: audio/mpeg" --data-binary @interview.mp3# 3. Completecurl -X POST https://www.transcriptdock.com/v1/uploads/33333333-3333-4333-8333-333333333333/complete \-H "Authorization: Bearer td_live_YOUR_KEY"# 4. Transcribe itcurl -X POST https://www.transcriptdock.com/v1/jobs \-H "Authorization: Bearer td_live_YOUR_KEY" \-H "Idempotency-Key: interview-01" \-H "Content-Type: application/json" \-d '{ "source": { "upload_id": "33333333-3333-4333-8333-333333333333" }, "mode": "transcribe" }'
সাইন করা URL 24 ঘণ্টা বৈধ; এরপর নতুন স্লট সংরক্ষণ করুন।
ওয়েবহুক#
/v1/webhook-endpointsএকটি https URL নিবন্ধন করুন, তারপর কাজ জমা দেওয়ার সময় তার id webhook_endpoint_id হিসেবে পাঠান। কাজ বা ব্যাচ শেষ হলে আমরা একটি ইভেন্ট POST করি। উত্তরে স্বাক্ষরের secret একবারই দেওয়া হয়। এন্ডপয়েন্ট নিবন্ধন ও বন্ধ করতে সাইন ইন করা সেশন লাগে, তাই এটি ড্যাশবোর্ডের ওয়েবহুক পাতায় করুন; সেখানে API কী দিয়ে 403 FORBIDDEN আসে, তবে এন্ডপয়েন্টের তালিকা দেখা যায়।
ইভেন্ট#
{"event_id": "44444444-4444-4444-8444-444444444444","type": "job.succeeded","created_at": "2026-09-16T10:00:14.000Z","job_id": "11111111-1111-4111-8111-111111111111","batch_id": null,"result_id": "22222222-2222-4222-8222-222222222222","metadata": { "order": "8812" },"error": null}
job.succeeded:result_idদেখুন বা এক্সপোর্ট করুন।job.failed:errorএ কোড থাকে।batch.completed: প্রতিটি আইটেম চূড়ান্ত; প্রতিটি আইটেমের ফলাফল দেখতে ব্যাচ পড়ুন।
কয়েক সেকেন্ডের মধ্যে যেকোনো 2xx দিয়ে উত্তর দিন। ব্যর্থ ডেলিভারি ব্যাকঅফসহ আবার চেষ্টা হয় এবং ড্যাশবোর্ড থেকে আবার পাঠানো যায়। একই ইভেন্ট একাধিকবার আসতে পারে: ডুপ্লিকেট বাদ দিতে event_id দেখুন।
স্বাক্ষর যাচাই করুন#
হেডার X-TranscriptDock-Event-Id, X-TranscriptDock-Timestamp এবং X-TranscriptDock-Signature। স্বাক্ষর হলো {event_id}.{timestamp}.{raw_body} এর HMAC-SHA256 (hex), আপনার সিক্রেট দিয়ে। পাঁচ মিনিটের পুরনো যেকোনো কিছু প্রত্যাখ্যান করুন।
import crypto from "node:crypto";export function verify(eventId: string, timestamp: string, rawBody: string, signature: string, secret: string): boolean {if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return false;const expected = crypto.createHmac("sha256", secret).update(`${eventId}.${timestamp}.${rawBody}`).digest("hex");return expected.length === signature.length && crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));}
ভিডিও খুঁজুন#
/v1/video-discoveriesYouTube খুঁজুন, বা একটি চ্যানেল, প্লেলিস্ট বা TikTok প্রোফাইলের তালিকা দেখুন, তারপর URL গুলো কাজে পাঠান। একটি খোঁজও কাজের মতো ব্যাকগ্রাউন্ডে চলে: status succeeded না হওয়া পর্যন্ত GET /v1/video-discoveries/{id} পড়ুন। প্রতি পাতায় 1 ক্রেডিট; ফলাফল 24 ঘণ্টা রাখা হয়।
curl -X POST https://www.transcriptdock.com/v1/video-discoveries \-H "Authorization: Bearer td_live_YOUR_KEY" \-H "Idempotency-Key: search-async-rust-1" \-H "Content-Type: application/json" \-d '{ "kind": "youtube_search", "query": "async rust", "limit": 5 }'
POST অনুরোধ 202 দিয়ে উত্তর দেয়, status: "queued" সহ। শেষ হওয়া GET /v1/video-discoveries/{id} দেখতে এমন:
{"id": "55555555-5555-4555-8555-555555555555","kind": "youtube_search","status": "succeeded","request": { "kind": "youtube_search", "query": "async rust", "limit": 5 },"videos": [{"platform": "youtube","video_id": "wXtngLBkK4Q","url": "https://www.youtube.com/watch?v=wXtngLBkK4Q","title": "Async Rust explained in 20 minutes","channel_id": "UCSp-OaMpsO8K0KkOqyBl7_w","channel_title": "Let's Get Rusty","duration_s": 1155,"published_at": null,"published_text": "5 months ago","view_count": 83635,"view_count_text": "83,635 views","thumbnail_url": "https://i.ytimg.com/vi/wXtngLBkK4Q/hq720.jpg","tiktok": null}],"profile": null,"next_cursor": "opaque-token","error": null,"created_at": "2026-09-16T12:00:00.000Z","updated_at": "2026-09-16T12:00:03.000Z","expires_at": "2026-09-17T12:00:00.000Z"}
ভিডিওর ক্যাপশনের ভাষা#
/v1/language-discoveriesবডি { "source": { "url": "https://www.youtube.com/watch?v=..." } } সহ একটি Idempotency-Key (শুধু YouTube, 1 ক্রেডিট)। ক্যাপশন ট্র্যাকের কোড, সেগুলো নির্মাতার না স্বয়ংক্রিয়, এবং ডিফল্টটি জানতে GET /v1/language-discoveries/{id} পড়ুন। কোডগুলো caption_languages এ ব্যবহার করুন।
ব্যবহার ও সক্ষমতা#
/v1/usage{"plan": "pro","period_end": "2026-10-16T00:00:00.000Z","credits_remaining": 5840,"credits_total": 6000,"credits_reserved": 4,"prepaid_credits": 0,"transcribe_credits_per_minute": 2,"minimum_billable_seconds": 60,"subscription": {"status": "active","interval": "yearly","cancel_at_period_end": false,"current_period_end": "2027-09-16T00:00:00.000Z"}}
credits_remaining ইতিমধ্যে credits_reserved বাদ দিয়ে হিসাব করা (চলমান কাজের ধরে রাখা ক্রেডিট)। prepaid_credits হলো কেনা ক্রেডিট, যার মেয়াদ শেষ হয় না।
subscription হলো পেইড প্ল্যানের পেছনের Stripe সাবস্ক্রিপশন, আর প্ল্যান না থাকলে null। এতে আছে এর status, বিলিংয়ের interval (monthly বা yearly), cancel_at_period_end এবং current_period_end, অর্থাৎ প্ল্যান কবে নবায়ন হবে বা শেষ হবে। period_end হলো যখন মাসিক ক্রেডিট নতুন হয়; বার্ষিক প্ল্যানেও প্রতি মাসে।
/v1/capabilitiesআপনার কী এখন কী করতে পারে: প্রতিটি উৎসের (youtube, tiktok, instagram, upload, direct) জন্য কোন মোডগুলো চালু, সাথে সীমা ও দাম। সরাসরি কোড না লিখে এটি পড়ুন; যেমন ট্রায়াল auto ও transcribe কে false হিসেবে দেখায়।
{"youtube": { "enabled": true, "captions_only": true, "auto": true, "transcribe": true, "social_acquisition_fee": true },"tiktok": { "enabled": true, "captions_only": true, "auto": true, "transcribe": true, "social_acquisition_fee": true },"instagram": { "enabled": false, "captions_only": false, "auto": false, "transcribe": false, "social_acquisition_fee": true, "native_captions": "unverified_disabled" },"upload": { "enabled": true, "captions_only": false, "auto": true, "transcribe": true, "social_acquisition_fee": false },"direct": { "enabled": true, "captions_only": false, "auto": true, "transcribe": true, "social_acquisition_fee": false },"max_duration_ms": 7200000,"max_media_bytes": 262144000,"export_formats": ["txt", "json", "srt", "vtt"],"recognition_profiles": ["standard"],"transcribe_credits_per_minute": 2,"minimum_billable_seconds": 60,"price_version": "2026-09-14","asr_enabled": true,"instagram_enabled": false,"free_caption_credits": 50,"free_caption_credits_period": "month"}
রেট সীমা#
| প্ল্যান | জমা / মিনিট | চলমান কাজ | পড়া / মিনিট |
|---|---|---|---|
| ট্রায়াল | 10 | 10 | 120 |
| Starter | 60 | 100 | 120 |
| Pro | 120 | 500 | 120 |
| Scale | 300 | 2,000 | 120 |
সীমা ছাড়ালে 429 RATE_LIMITED আসে, সাথে retry-after হেডার (সেকেন্ডে) এবং সীমার নাম সহ details.detail। কোনো চার্জ হয় না। ওয়েবহুক ও ?wait=25 ব্যবহার করলে পড়ার সীমা থেকে আপনি অনেক দূরে থাকেন।
ত্রুটি#
প্রতিটি ত্রুটির আকার একই। retryable: true মানে একই অনুরোধ পরে সফল হতে পারে: retry-after সেকেন্ড থাকলে তত সময় অপেক্ষা করুন, নাহলে কয়েক সেকেন্ড ব্যাকঅফ করুন, এবং একই Idempotency-Key আবার ব্যবহার করুন যেন কিছু ডুপ্লিকেট না হয়। অন্য যেকোনো ত্রুটির জন্য আপনার দিকে পরিবর্তন দরকার।
{"error": {"code": "INSUFFICIENT_BALANCE","message": "Not enough credits. Buy credits or upgrade your plan to continue.","retryable": false,"details": { "detail": "This job needs more credits than you have left. Buy credits or upgrade your plan." },"doc_url": "https://www.transcriptdock.com/docs/api-reference#error-codes"},"request_id": "66666666-6666-4666-8666-666666666666"}
গ্রহণের পরে ব্যর্থ হওয়া কাজ GET /v1/jobs/{id} এ এখনো 200 ফেরত দেয়, সাথে status: "failed" এবং error এ একই ত্রুটি অবজেক্ট। ব্যর্থ কাজের জন্য কোনো চার্জ হয় না।
কোডসমূহ#
| কোড | HTTP | আবার চেষ্টা | অর্থ ও কী করবেন |
|---|---|---|---|
INVALID_REQUEST | 422 | না | A field is missing or has the wrong shape. details.detail names it. |
INVALID_URL | 422 | না | The URL is not a valid https link (max 2048 characters). |
UNSUPPORTED_SOURCE | 422 | না | The link is not a YouTube or TikTok video URL. |
UNSAFE_URL | 422 | না | The direct media link points at a private or blocked network address. |
INVALID_CURSOR | 422 | না | A video discovery cursor expired or is malformed. Start again from the first page. A bad job list cursor returns INVALID_REQUEST. |
CAPABILITY_UNAVAILABLE | 422 | না | This mode is not available for this source. GET /v1/capabilities shows what is. |
IDEMPOTENCY_CONFLICT | 409 | না | This Idempotency-Key was already used with a different body. Use a new key. |
UNAUTHENTICATED | 401 | না | No valid API key or OAuth token in the Authorization header. |
FORBIDDEN | 403 | না | The key lacks the scope for this endpoint, or the workspace is disabled. |
EMAIL_UNVERIFIED | 403 | না | Verify the account email before using the API. |
NOT_FOUND | 404 | না | No such object in this workspace. |
INSUFFICIENT_BALANCE | 402 | না | Not enough credits for this job. Buy credits or upgrade. |
PLAN_REQUIRED | 402 | না | This needs a paid plan (AI transcription, larger batches) or the trial credits are used up. |
BUDGET_EXCEEDED | 402 | না | The measured cost is above max_credits. Nothing was charged; raise the cap or skip the media. |
JOB_NOT_RETRYABLE | 409 | না | The failure was final (private video, no captions). Fix the input and submit a new job. |
CANCELLATION_NOT_ALLOWED | 409 | না | AI transcription already started; the job will finish. |
RATE_LIMITED | 429 | হ্যাঁ | Over a rate or queue limit. Wait retry-after seconds; details.detail says which limit. |
SOURCE_NOT_FOUND | 422 | না | The video does not exist or was removed. |
SOURCE_PRIVATE | 422 | না | The video is private. Only public videos work. |
SOURCE_AUTH_REQUIRED | 422 | না | The video needs a login, age check or membership. |
SOURCE_REGION_RESTRICTED | 422 | না | The video is blocked in the regions we fetch from. |
NO_CAPTIONS | 422 | না | No captions on this video and mode was captions_only. Use auto or transcribe. |
LANGUAGE_UNAVAILABLE | 422 | না | None of caption_languages exists on this video. Drop the list to take the default track. |
LANGUAGE_UNSUPPORTED | 422 | না | AI transcription does not support the requested language. |
NO_SPEECH | 422 | না | AI transcription found no speech in the audio. |
NO_AUDIO | 422 | না | The media has no audio track. |
INVALID_MEDIA | 422 | না | The file could not be read as audio or video. |
UNSUPPORTED_MEDIA | 422 | না | Not an audio or video file type. |
DURATION_LIMIT_EXCEEDED | 413 | না | Longer than 2 hours. |
FILE_TOO_LARGE | 413 | না | Larger than 250 MB. |
TIMESTAMPS_UNAVAILABLE | 422 | না | This transcript has no timings, so srt and vtt exports are unavailable. Use txt or json. |
PROVIDER_REJECTED | 422 | না | The AI transcription model could not process this audio. |
SOURCE_RATE_LIMITED | 503 | হ্যাঁ | The source platform is throttling us. The job retries automatically. |
SOURCE_BLOCKED | 503 | হ্যাঁ | The source platform blocked the fetch. The job retries automatically. |
SOURCE_TIMEOUT | 503 | হ্যাঁ | The source platform timed out. The job retries automatically. |
SOURCE_CHANGED | 503 | হ্যাঁ | The source changed while we read it. The job retries automatically. |
PROVIDER_UNAVAILABLE | 503 | হ্যাঁ | AI transcription is temporarily unavailable. The job retries automatically. |
STORAGE_UNAVAILABLE | 503 | হ্যাঁ | File storage is temporarily unavailable. Retry the request. |
INTERNAL_ERROR | 500 | হ্যাঁ | Our fault. Retry with the same Idempotency-Key; quote X-Request-Id if it persists. |