Audio in · timestamped text out
Sound becomes text.
With the clock attached.
Point it at an audio or video file and get back the words, every one of them stamped with when it was said — as SRT, VTT, plain text or JSON. Priced by the minute at 3 credits, refunded down to the minutes there actually were.
The pipeline
Five steps, and you are only charged for the fourth.
Everything before the transcription exists so the price is right, and everything after it exists so you get the difference back.
Read the header
Two ranged requests pull the container's metadata to find the real length. That is the number you are quoted.
Hold the credits
Reserved up front on that length, never on a cap. Nothing is spent yet.
Split if needed
Over 22 MB the audio is cut on frame boundaries with a three-second overlap, so no word falls in a gap.
Transcribe
Each piece is transcribed with word-level timings, then stitched back onto one timeline.
Settle the difference
Billed on the length actually transcribed. The rest goes straight back to your wallet.
Exports
One transcript. Whatever file you actually needed.
Subtitles, plain text, or structured JSON — all four are the same words with the same timings, serialized differently. Exporting is free, and it stays free however many times you come back for a different one.
- .srt
- Premiere, Resolve, YouTube
- Numbered cues, comma milliseconds.
- .vtt
- The web, <track> elements
- WEBVTT header, dot milliseconds.
- .txt
- Reading and pasting
- One timestamped line per cue.
- .json
- Anything programmatic
- Segments with start, end, text.
For developers & AI agents
Three ways in. One of them needs no account at all.
Transcription APIs are everywhere. Keyless ones are not — and an agent mid-task cannot go and sign up for something.
REST
creditsThe same endpoints the dashboard uses. A Bearer key spends its owner's Ounie credits and is refused — never overdrawn — when the wallet is short.
curl -X POST https://transcribe.ounie.com/api/jobs \
-H "Authorization: Bearer trx_live_…" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/ep-104.mp3","summarize":true}'
# → 202 { "job": { "id": "…", "status": "queued" } }
# poll GET /api/jobs/<id> — free, and it advances the jobMCP
creditsWorks with Claude, Cursor, ChatGPT and the Ounie AI Team. The?api_key=fallback exists for hosts that cannot set a header.
Endpoint https://transcribe.ounie.com/api/mcp
Header Authorization: Bearer trx_live_… (or ounie_live_…)
# hosts that cannot set headers put the key in the URL:
https://transcribe.ounie.com/api/mcp?api_key=trx_live_…
tools transcribe_media · get_transcript · estimate_cost
list_transcripts · get_credit_balance · get_pricingx402
no accountPay per call in USDC on Base. The 402 quotes the exact price for that file's length, and payment is only settled once a transcript exists.
curl -X POST https://transcribe.ounie.com/api/x402/transcribe \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/clip.mp3"}'
# → 402 with the exact price for THIS file's length.
# sign it, retry with X-Payment, and the transcript comes back.
# no account, no key, USDC on Base.Credit safety is server-side: a reserve that cannot be met returns 402 with a buy-credits link. An agent can never overdraw the wallet it is spending.
Credit math
3 credits a minute, and only for the minutes there were.
A credit is one cent. The hold is sized from the file's own header before anything runs; the charge is sized from what was actually transcribed. You keep the difference — automatically, without asking.
Rounded up, per job — not per chunk. A 61-minute file is 61 minutes even when it is split four ways.
Optional. A summary that fails never fails the transcript you paid for.
Every export, every re-read, every format. Silent or failed media refunds in full.
Who reaches for this
Anything where the words matter more than the sound.
Agents mid-task
A research agent hits a podcast episode and needs its contents. No signup, no key — a 402, a signature, and the text.
Podcast and video teams
Show notes, chapter marks, and burned-in captions from the same run. SRT straight into the edit.
Calls and interviews
Sales calls, user research, standups. Add a summary and get the decisions without replaying the hour.
Archives
Years of recordings become searchable text. Bill by the minute, so a backlog costs exactly what it is long.
Accessibility
VTT for every video on the site, generated from the file you already have.
Pipelines
One POST, one poll. Timestamps arrive as numbers, not strings to parse.
Questions
The things worth knowing first.
What can it transcribe?
Do you label who is speaking?
How long can a file be?
What happens if the length is wrong?
What if there is no speech?
Is there a subscription?
Can an agent use it without an account?
POST /api/x402/transcribe answers 402 with the exact price for that file, and a signed retry returns the transcript. Payment is verified before the work and settled only after a transcript exists — so a file that turns out to be silent costs nothing.Who can read my recordings?
Give it a file. Get the words back.
3 credits a minute, refunded down to the real length. Nothing to cancel.