Guías
LLMs.txt
Índice en texto plano y volcado completo de la documentación, para agentes de IA.
Actualizado
Dos archivos de texto plano para agentes de IA y rastreadores, que siguen la convención llms.txt. Dirige a tu agente a cualquiera de los dos en lugar de a la documentación en HTML.
/llms.txt#
Un índice breve: qué es Transcript Dock y enlaces a las páginas principales de la documentación.
GET /llms.txt
# TranscriptDock> Transcripts from YouTube, TikTok and your own audio or video, through one REST API or straight from an AI agent over MCP.One kind of credit. A caption transcript (the video's own subtitles) costs 1 credit. AI transcription of the audio (mode auto when there are no captions, mode transcribe, uploads, direct links) costs 2 credits per started minute and needs a paid plan. Every account gets 50 free credits every month. Reading and exporting transcripts is free.## Docs- [Quickstart](https://www.transcriptdock.com/docs/quickstart): submit a link, wait for the job, export the transcript. Three requests.- [API reference](https://www.transcriptdock.com/docs/api-reference): endpoints, fields, responses, batches, uploads, webhooks, video discovery, credits, rate limits, errors.- [MCP](https://www.transcriptdock.com/docs/mcp): remote server at https://www.transcriptdock.com/mcp (OAuth sign in for Claude custom connectors, or Authorization: Bearer <api key>), tools, and setup for Claude, Claude Code, Cursor, Windsurf, OpenClaw.- [Pricing and credits](https://www.transcriptdock.com/docs/pricing): plans, extra credits, when credits are charged.- [Sources](https://www.transcriptdock.com/docs/platforms): accepted YouTube and TikTok URLs, file uploads, direct links, limits.- [OpenAPI](https://www.transcriptdock.com/docs/openapi.yaml)- [Changelog](https://www.transcriptdock.com/docs/changelog): notable API, MCP and pricing changes, newest first.## Guides- [How to get a YouTube transcript](https://www.transcriptdock.com/docs/youtube-transcript): five ways, from YouTube's own transcript panel to the API and Claude.- [How to get a TikTok transcript](https://www.transcriptdock.com/docs/tiktok-transcript): video and share links, a profile's latest videos, videos without captions.- [Video transcripts for RAG](https://www.transcriptdock.com/docs/transcripts-for-rag): fetch timed segments, chunk by time, keep timestamp citations.- [n8n](https://www.transcriptdock.com/docs/n8n) and [LangChain](https://www.transcriptdock.com/docs/langchain): workflow and agent setups.## Compared with alternatives- [All alternatives](https://www.transcriptdock.com/docs/alternatives), [vs Supadata](https://www.transcriptdock.com/docs/supadata-alternative), [vs TranscriptAPI](https://www.transcriptdock.com/docs/transcriptapi-alternative), [vs youtube-transcript-api](https://www.transcriptdock.com/docs/youtube-transcript-api-alternative), [vs Apify scrapers](https://www.transcriptdock.com/docs/apify-alternative): what each does, prices, and when to pick it instead.## Machine discovery- [MCP server card](https://www.transcriptdock.com/mcp/server-card) and [AI catalog](https://www.transcriptdock.com/.well-known/ai-catalog.json)- [llms-full.txt](https://www.transcriptdock.com/llms-full.txt): the API reference and MCP pages as one plain text file.
/llms-full.txt#
La referencia de la API y las páginas de MCP en un solo archivo de texto plano, para agentes que leen todo en una sola solicitud.
GET /llms-full.txt
# TranscriptDock> Transcripts from YouTube, TikTok and your own audio or video, through one REST API or straight from an AI agent over MCP.One kind of credit. A caption transcript (the video's own subtitles) costs 1 credit. AI transcription of the audio (mode auto when there are no captions, mode transcribe, uploads, direct links) costs 2 credits per started minute and needs a paid plan. Every account gets 50 free credits every month. Reading and exporting transcripts is free.## Docs- [Quickstart](https://www.transcriptdock.com/docs/quickstart): submit a link, wait for the job, export the transcript. Three requests.- [API reference](https://www.transcriptdock.com/docs/api-reference): endpoints, fields, responses, batches, uploads, webhooks, video discovery, credits, rate limits, errors.- [MCP](https://www.transcriptdock.com/docs/mcp): remote server at https://www.transcriptdock.com/mcp (OAuth sign in for Claude custom connectors, or Authorization: Bearer <api key>), tools, and setup for Claude, Claude Code, Cursor, Windsurf, OpenClaw.- [Pricing and credits](https://www.transcriptdock.com/docs/pricing): plans, extra credits, when credits are charged.- [Sources](https://www.transcriptdock.com/docs/platforms): accepted YouTube and TikTok URLs, file uploads, direct links, limits.- [OpenAPI](https://www.transcriptdock.com/docs/openapi.yaml)- [Changelog](https://www.transcriptdock.com/docs/changelog): notable API, MCP and pricing changes, newest first.## Guides- [How to get a YouTube transcript](https://www.transcriptdock.com/docs/youtube-transcript): five ways, from YouTube's own transcript panel to the API and Claude.- [How to get a TikTok transcript](https://www.transcriptdock.com/docs/tiktok-transcript): video and share links, a profile's latest videos, videos without captions.- [Video transcripts for RAG](https://www.transcriptdock.com/docs/transcripts-for-rag): fetch timed segments, chunk by time, keep timestamp citations.- [n8n](https://www.transcriptdock.com/docs/n8n) and [LangChain](https://www.transcriptdock.com/docs/langchain): workflow and agent setups.## Compared with alternatives- [All alternatives](https://www.transcriptdock.com/docs/alternatives), [vs Supadata](https://www.transcriptdock.com/docs/supadata-alternative), [vs TranscriptAPI](https://www.transcriptdock.com/docs/transcriptapi-alternative), [vs youtube-transcript-api](https://www.transcriptdock.com/docs/youtube-transcript-api-alternative), [vs Apify scrapers](https://www.transcriptdock.com/docs/apify-alternative): what each does, prices, and when to pick it instead.## Machine discovery- [MCP server card](https://www.transcriptdock.com/mcp/server-card) and [AI catalog](https://www.transcriptdock.com/.well-known/ai-catalog.json)- [llms-full.txt](https://www.transcriptdock.com/llms-full.txt): the API reference and MCP pages as one plain text file.---# API referenceBase URL: https://www.transcriptdock.com. JSON in and out.Authentication: Authorization: Bearer td_live_<your key>. Keys are created on the dashboard and shown once.POST /v1/jobs, /v1/batches, /v1/jobs/{id}/retry, /v1/video-discoveries and /v1/language-discoveries require an Idempotency-Key header (8 to 128 printable ASCII characters). The same key with the same body within 48 hours returns the original object; with a different body it returns 409 IDEMPOTENCY_CONFLICT.Every response carries X-Request-Id.## Flow1. POST /v1/jobs with { "source": { "url": "<video url>" }, "mode": "captions_only" } -> 202 job { id, status: "queued" }. Paid plans can send mode auto to fall back to AI transcription.2. GET /v1/jobs/{id}?wait=25 -> holds up to 25 s and returns the job as soon as status is succeeded, failed or cancelled. Repeat while it is not.3. GET /v1/transcripts/{result_id}/export?format=txt|srt|vtt|json -> the transcript file. Free, unlimited.Submitting the same video and options again returns the stored result for free (billing.kind "cached"). A video another customer already transcribed is served from cache instantly at the normal price.## Endpoints| Method | Path | Credits ||---|---|---|| POST | /v1/jobs | 1 per caption transcript, 2 per started minute of AI transcription || GET | /v1/jobs/{id}?wait=0..25 | free || GET | /v1/jobs?limit=&cursor= | free || POST | /v1/jobs/{id}/cancel | free || POST | /v1/jobs/{id}/retry | as a new job || POST | /v1/batches | per item, as above || GET | /v1/batches/{id} | free || GET | /v1/transcripts/{id} | free || GET | /v1/transcripts/{id}/export?format= | free || DELETE | /v1/transcripts/{id} | free || POST | /v1/uploads | free || POST | /v1/uploads/{id}/complete | free || POST | /v1/video-discoveries | 1 per page || GET | /v1/video-discoveries/{id} | free || POST | /v1/language-discoveries | 1 || GET | /v1/language-discoveries/{id} | free || GET | /v1/webhook-endpoints | free || POST/DELETE | /v1/webhook-endpoints | free, signed in session only (dashboard) || GET | /v1/usage | free || GET | /v1/capabilities | free |## Create a jobPOST /v1/jobsFields: source.url (YouTube watch/youtu.be/shorts/live URL, TikTok video or vm.tiktok.com share link, or any https link to a media file) or source.upload_id; mode (required): captions_only (the video's captions, 1 credit, NO_CAPTIONS if none), auto (captions if present else AI transcription), transcribe (always AI transcription, 2 credits per started minute, word timings); caption_languages (string[], up to 5 BCP 47 tags in preference order); caption_preference (prefer_creator default, creator_only, automatic_only); language (BCP 47 hint for AI transcription); max_credits (cap for AI transcription; a job that would cost more fails with BUDGET_EXCEEDED before any charge); webhook_endpoint_id; metadata (up to 10 string values, echoed in webhook events).AI transcription needs a paid plan: on the trial auto and transcribe return 402 PLAN_REQUIRED.Job object: id, status (queued, processing, awaiting_provider, succeeded, failed, cancelled), stage, result_id, error { code, message, retryable, details? }, billing { credits_reserved, credits_charged, kind: captions | ai_transcription | cached }, source { platform, media_id, canonical_url, title, upload_id }, options { mode, language, caption_preference }, created_at.## TranscriptGET /v1/transcripts/{id}: id, source, source_origin (creator_captions, platform_captions, speech_recognition), language, text, segments [{ start, end, text }] in seconds, words [{ start, end, text, confidence }] or null, timing_granularity (word, segment, none), duration_seconds, recognition { model, profile, quality_status: validated_language | provider_supported | experimental_language } or null, created_at.Kept for the plan's retention (trial 7 days, Starter 30, Pro and Scale 90). DELETE removes one earlier.## BatchesPOST /v1/batches { items: [JobRequest, ...], webhook_endpoint_id?, metadata? }. Items per batch: trial 1, Starter 10, Pro 25, Scale 50. Accepted or rejected as a whole. GET /v1/batches/{id}: status (queued, processing, succeeded, partial_success, failed, cancelled), total_items, succeeded_items, failed_items, cancelled_items, items [{ job_id, item_index, status }].## UploadsPOST /v1/uploads { filename, content_type, bytes } -> { id, signed_upload_url, expires_at (24 h) }. PUT the file to signed_upload_url with the same Content-Type. POST /v1/uploads/{id}/complete. Then POST /v1/jobs with { "source": { "upload_id": id }, "mode": "transcribe" }. Audio or video up to 250 MB and 2 hours.## WebhooksPOST /v1/webhook-endpoints { url (https), description? } -> endpoint with a one-time secret. Registering and disabling need a signed in session (the dashboard Webhooks page); an API key gets 403 FORBIDDEN there but can list endpoints. Pass its id as webhook_endpoint_id on jobs and batches. Events: job.succeeded, job.failed, batch.completed; body { event_id, type, created_at, job_id, batch_id, result_id, metadata, error }. Headers X-TranscriptDock-Event-Id, X-TranscriptDock-Timestamp, X-TranscriptDock-Signature = HMAC-SHA256 hex of "{event_id}.{timestamp}.{raw_body}" with the secret. Respond 2xx; failed deliveries retry with backoff; dedupe on event_id.## Find videosPOST /v1/video-discoveries { kind, query?, channel?, playlist?, user?, limit?, cursor?, include_details? } with Idempotency-Key, 1 credit per page. Kinds: youtube_search (query), youtube_channel_videos, youtube_channel_search (channel as @handle, id or URL; search adds query), youtube_playlist_videos (playlist id or URL), tiktok_user_videos (user as @user or URL; at most 10, no paging; include_details adds likes, comments, hashtags, caption languages). The POST returns 202 with status queued. GET /v1/video-discoveries/{id}: status, request, videos [{ platform, video_id, url, title, channel_id, channel_title, duration_s, published_at, published_text, view_count, view_count_text, thumbnail_url, tiktok }], profile, next_cursor, error, created_at, updated_at, expires_at. Results kept 24 h.POST /v1/language-discoveries { source: { url } } (YouTube, 1 credit) lists a video's caption tracks; use the codes in caption_languages.## Usage and capabilitiesGET /v1/usage: plan, period_end (when the monthly credits refresh, monthly on yearly plans too), credits_remaining (excludes holds), credits_total, credits_reserved, prepaid_credits, transcribe_credits_per_minute (2), minimum_billable_seconds (60), subscription (null without one, else { status, interval monthly|yearly, cancel_at_period_end, current_period_end: renewal or end date }).GET /v1/capabilities (with your key): per source (youtube, tiktok, instagram, upload, direct) whether captions_only, auto and transcribe are available for your plan, plus max_duration_ms 7200000, max_media_bytes 262144000, export_formats.## CreditsCharged only when a job succeeds; held while it runs; released on failure or cancel. auto holds 2 and charges 1 when captions were found. Plans: Trial 50 credits every 30 days (captions only, free), Starter $19 for 2,000 a month, Pro $49 for 6,000, Scale $149 for 20,000. Yearly billing: Starter $190, Pro $490, Scale $1,490 a year (2 months free), with the same credits granted every month. Extra credits from $8/$7/$6 per 1,000 (Starter/Pro/Scale), 10% off from 10,000, 20% off from 50,000, never expire. Out of credits: 402 INSUFFICIENT_BALANCE. Payments run through Stripe Checkout in US dollars; prices exclude any applicable tax, which is added at checkout where required. Invoices, receipts, payment methods and plan changes are in the Stripe customer portal (Manage billing on /dashboard/billing).## Rate limitsSubmits per minute: trial 10, Starter 60, Pro 120, Scale 300. Jobs in progress: 10 / 100 / 500 / 2,000. Reads: 120 per minute. Over a limit: 429 RATE_LIMITED with retry-after (seconds), ratelimit-limit, ratelimit-remaining, ratelimit-reset headers and details.detail naming the limit.## Errors{ "error": { "code", "message", "retryable", "retry_after_seconds"?, "details": { "detail" }?, "doc_url" }, "request_id" }. retryable true (429, 503, 500): wait and resend with the same Idempotency-Key. Full code table: https://www.transcriptdock.com/docs/api-reference#error-codes. A job that fails after acceptance is 200 on GET /v1/jobs/{id} with status failed and the same error object; nothing is charged.---# MCPRemote server (nothing to install): https://www.transcriptdock.com/mcp, Streamable HTTP. Use this exact URL: the apex domain redirects and clients drop the Authorization header on that redirect.Auth: OAuth 2.1 sign in (RFC 9728 metadata at /.well-known/oauth-protected-resource/mcp, dynamic client registration, S256 PKCE), or header Authorization: Bearer td_live_<key>. OAuth connections can read and submit jobs and read transcripts only.Claude (claude.ai, Desktop, mobile): Customize > Connectors > Add custom connector, URL https://www.transcriptdock.com/mcp, then Connect and sign in.Claude Code: claude mcp add --transport http transcriptdock https://www.transcriptdock.com/mcp then /mcp to sign in, or add --header "Authorization: Bearer td_live_<key>".Cursor mcp.json: { "mcpServers": { "transcriptdock": { "url": "https://www.transcriptdock.com/mcp", "headers": { "Authorization": "Bearer td_live_<key>" } } } }Local server (OpenClaw, stdio clients, Node.js 22.15+): { "mcpServers": { "transcriptdock": { "command": "npx", "args": ["-y", "@transcriptdock/mcp"], "env": { "TRANSCRIPTDOCK_API_KEY": "td_live_<key>", "TRANSCRIPTDOCK_BASE_URL": "https://www.transcriptdock.com" } } } }. Both variables are required.Remote tool calls are capped at about 40 s; a still-running job comes back with its id for wait_for_job.## Tools- get_video_transcript { url, mode? (captions_only default, auto, transcribe), format? (text default, srt, vtt, segments), timeout_seconds? } -> transcript. Submits, waits, returns. 1 credit, or 2 per minute with AI transcription; repeats are free.- transcribe { url, mode?, language?, max_credits?, idempotency_key } -> job.- wait_for_job { job_id, timeout_seconds? } -> { job, timed_out }.- get_job { job_id } -> job. Free.- get_transcript { transcript_id, format? (segments default, text, srt, vtt) }. Free.- list_jobs { limit?, cursor? }. Free.- search_youtube { query, limit?, cursor?, timeout_seconds? }. 1 credit per page.- list_channel_videos { channel, limit?, cursor? }, get_channel_latest_videos { channel, limit? }, search_channel_videos { channel, query, limit?, cursor? }. 1 credit per page.- list_playlist_videos { playlist, limit?, cursor? }. 1 credit per page.- list_tiktok_user_videos { user (@handle or profile URL), limit? (max 10), include_details? }. 1 credit.- get_video_discovery { id }. Free.