typeheard

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.