API
One upload, one id, five formats. Keys for people, x402 for agents, and the same thing from a terminal or an MCP client.
Upload
curl -F file=@interview.m4a -F language=auto \ -H "Authorization: Bearer $TYPEHEARD_API_KEY" \ https://typeheard.com/api/v1/transcripts
Answers 202 with { id, status, status_url, url }.
Without a key you get the first 3 minutes free.
tier=full refuses with 402 rather than quietly giving you a preview;
tier=preview never spends.
Wait, then read
curl https://typeheard.com/api/v1/transcripts/ID # status: queued, running, done, failed curl https://typeheard.com/api/v1/transcripts/ID/txt # also md, srt, vtt, json
Command line
npx -y @profullstack/typeheard interview.m4a # prints the text npx -y @profullstack/typeheard talk.mp4 --format srt > talk.srt npx -y @profullstack/typeheard login # saves an API key npx -y @profullstack/typeheard tui # your transcripts, in the terminal
MCP
{ "mcpServers": { "typeheard": { "command": "npx", "args": ["-y", "@profullstack/typeheard-mcp"],
"env": { "TYPEHEARD_API_KEY": "th_…" } } } }
Tools: transcribe_file, get_transcript, list_transcripts.
Agents without an account
Send the upload with no key. A metered caller over the free allowance gets
402 with an x402 offer; pay it and repeat the request with the payment header.
One payment covers a file up to 60 minutes.
Keys
Make one at Account → API keys. It is shown once.