Skip to content
IntroductionHow it works, guides, and what you can transcribe.
QuickstartSubmit a link, wait for the job, export the transcript. Three requests.
AuthenticationAPI keys, scopes, Idempotency-Key and X-Request-Id.
JobsCreate, wait for, list, cancel and retry jobs.
TranscriptsThe transcript object and txt, srt, vtt, json exports.
BatchesUp to 50 videos in one request.
UploadsTranscribe your own audio and video files.
WebhooksGet called when a job or batch finishes; verify the signature.
ErrorsEvery error code, what it means and what to do.
Rate limitsSubmits, jobs in progress and reads per plan; the 429 response.
Pricing and credits1 credit per caption transcript, 2 per minute of AI transcription. Plans and extra credits.
SourcesYouTube, TikTok, your files and direct links: accepted URLs and modes.
MCPFind and transcribe videos from Claude, Cursor, Windsurf or your own agent.
OpenAPI SpecificationThe OpenAPI 3.1 spec for codegen and typed clients.
Claude CodeOne command adds TranscriptDock to Claude Code.
Claude DesktopAdd TranscriptDock as an MCP server in Claude Desktop's configuration file.
CursorAdd TranscriptDock as an MCP server in Cursor.
WindsurfAdd TranscriptDock to Windsurf so Cascade can find and transcribe videos.
OpenClawConnect TranscriptDock to OpenClaw autonomous agents.
19 results
Reference

MCP

Give Claude, Cursor, Windsurf or your own agent the ability to find and transcribe videos.


The MCP server gives an AI agent the same API as your key: it can find videos, transcribe them and read the results in the middle of a conversation. It charges your credits and honors your key's scopes. Nothing to install: point the client at the remote server.

Connect#

Claude Code
claude mcp add --transport http transcriptdock https://transcriptdock.com/mcp \
--header "Authorization: Bearer td_live_YOUR_KEY"
Cursor, Windsurf, VS Code and other clients (mcp.json)
{
"mcpServers": {
"transcriptdock": {
"type": "http",
"url": "https://transcriptdock.com/mcp",
"headers": { "Authorization": "Bearer td_live_YOUR_KEY" }
}
}
}

Local server#

For clients without HTTP transport (Claude Desktop, OpenClaw), run the same server locally with Node.js. The signed-in MCP page in your dashboard has this config with your key filled in.

mcp config
{
"mcpServers": {
"transcriptdock": {
"command": "npx",
"args": ["-y", "@transcriptdock/mcp"],
"env": {
"TRANSCRIPTDOCK_API_KEY": "td_live_YOUR_KEY",
"TRANSCRIPTDOCK_BASE_URL": "https://transcriptdock.com"
}
}
}
}
The remote server caps each tool call at about 40 seconds. A job still running after that comes back with its id; the agent can call wait_for_job again. Clients that only sign in with OAuth (Claude web, ChatGPT) are not supported yet.

Tools#

ToolDoesCredits
get_video_transcriptURL in, transcript out. Submits, waits, returns text (or srt, vtt, segments).1, or 2 per minute with AI transcription
transcribeSubmit a job and return it without waiting.Same
wait_for_jobWait for a job to finish.Free
get_jobJob status, error and billing.Free
get_transcriptRead a transcript by id as segments, text, srt or vtt.Free
list_jobsRecent jobs.Free
search_youtubeSearch YouTube.1 per page
list_channel_videosA channel's videos, newest first, with paging.1 per page
get_channel_latest_videosA channel's latest 10 videos.1
search_channel_videosSearch inside one channel.1 per page
list_playlist_videosA playlist's videos.1 per page
list_tiktok_user_videosA TikTok profile's latest videos (up to 10) and profile stats.1
get_video_discoveryRead a discovery by id, e.g. after a timeout.Free

get_video_transcript#

The tool an agent should reach for when asked what a video says.

urlstringRequired
YouTube or TikTok video URL.
mode"captions_only" | "auto" | "transcribe"Optional
Default captions_only (1 credit). auto falls back to AI transcription when the video has no captions; transcribe always uses it (2 credits per started minute, paid plans).
format"text" | "srt" | "vtt" | "segments"Optional
text (default) is the most compact for an agent; segments returns timed JSON.
timeout_secondsintegerOptional
Default 120. On timeout the job state and id are returned instead.
call
{ "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "mode": "auto" }
returns
Never gonna give you up
Never gonna let you down
…

The same video with the same mode is answered from your workspace's stored result, free.

transcribe, wait_for_job, get_transcript#

The three-step version for agents that want control: transcribe takes url, mode, optional language and max_credits, plus an idempotency_key (any stable 8 to 128 character string, so a retried call never submits twice) and returns the job. wait_for_job takes job_id and an optional timeout_seconds. get_transcript takes the job's result_id as transcript_id and a format.

Finding videos#

The search and list tools return videos with url, title, duration and view count, ready to pass to get_video_transcript. channel accepts an @handle, channel id or channel URL; playlist an id or URL; user a TikTok @user or profile URL. YouTube tools page with limit (default 20) and cursor. TikTok returns at most 10 videos and no further pages; include_details adds likes, comments, hashtags and caption languages per video.

Errors#

A failed call returns isError: true with the API error code, message and request id, so the agent can explain it or change course. The codes are the ones in the API reference.

Troubleshooting#

  • Unauthorized: the key goes in the server config (header or env), not in your shell. Check it has not been revoked.
  • Tool not found: restart the client after editing its config.
  • Local server will not start: install a current Node.js LTS; npx comes with it.
  • NO_CAPTIONS: the video has no captions. Ask for mode: "auto".