Phrase markers
Mark a clip with the words spoken at each end. Matching is case-insensitive and punctuation-tolerant, so you type what you heard, not what the transcript guessed.
- "start": { "type": "phrase", "value": "the results are in" }
Name the phrase the clip starts on and the phrase it ends on. OttoCut resolves both against the transcript and cuts the media — over an API built for developers, agents and anyone tired of scrubbing a timeline.
so we ran the numbers again and the results are in churn dropped by a third once we shipped the new onboarding, which nobody expected this quarter, and then we back after the break to talk through what that means for next year.
Two phrases in, one clip out. No timeline, no scrubbing for the exact frame.
curl -X POST https://api.ottocut.com/clips \
-H "Content-Type: application/json" \
-d '{
"media_id": "med_abc123",
"start": { "type": "phrase", "value": "the results are in" },
"end": { "type": "phrase", "value": "back after the break" }
}'import httpx
clip = httpx.post(
"https://api.ottocut.com/clips",
json={
"media_id": "med_abc123",
"start": {"type": "phrase", "value": "the results are in"},
"end": {"type": "phrase", "value": "back after the break"},
},
).json()["data"]
print(clip["download_url"])Built on infrastructure you already trust
Capabilities
The API is the product. A browser UI, a CLI and an MCP server are all layers on the same eight endpoints.
Mark a clip with the words spoken at each end. Matching is case-insensitive and punctuation-tolerant, so you type what you heard, not what the transcript guessed.
An MCP server for tool-using assistants, and x402 so an agent that meets the API mid-task can pay per request and keep going — no account, no onboarding.
The same media with the same markers returns the existing clip instantly. No second encode, no second charge.
The first clip from a video pays for transcription. Every later clip from that video does not.
When a phrase occurs more than once, pick the occurrence by index — or hand over a rough timestamp and let the closest match win.
Push a file straight to a signed upload URL, or hand the API a source URL and let it fetch the media itself.
Every response carries data, error and a request_id — the same shape on success and failure, which is what makes it safe to hand to an agent.
Pricing
You pay per clip. Transcription is charged once per source video, so the second clip from a video costs a fraction of the first.
Planned pricing. Accounts and billing ship with v1 — every figure here is an estimate and will change before launch.
$0.50
in signup credit
Enough to run the whole pipeline before you integrate anything.
Pay as you clip
base + transcription x audio minutes
The workhorse. Top up a balance, get a key, spend it per request.
No signup
priced per request, quoted up front
For agents that meet the API mid-task and have no account.
Questions
Pass an occurrence index to pick which one, or a rough timestamp to select the occurrence nearest it. The timestamp wins when you give both, which is usually what you want when you already know roughly where you are in the video.
Matching ignores case and punctuation, so most near-misses still resolve. When a word is genuinely mis-transcribed, fall back to a raw timestamp marker for that end of the clip — you can mix a phrase marker and a timestamp marker in the same request.
Yes. A marker is either a phrase or a timestamp in seconds, and the two are interchangeable at either end of a clip.
Video or audio, either uploaded directly to a signed URL or fetched by the API from a source URL you provide.
A clip download URL is signed and valid for one hour. Ask for the clip again and you get a fresh URL — the clip itself is not re-encoded.
No. Transcription is charged once per source video; later clips from it pay only the base cost. And two identical clip requests return the same cached clip rather than encoding it twice.
The clipping pipeline is built and running, but there is no way to sign up yet. Accounts, API keys and billing all land together with v1. Join the early-access list and we will email you the day it opens.
Both are planned. The API is the primary interface and everything else is a layer on it, so a CLI and an MCP server are thin wrappers rather than separate products.
Accounts, API keys and billing all open together with v1. Tell us what you are building and we will email you the day it does.
One request
curl -X POST https://api.ottocut.com/clips \
-H "Content-Type: application/json" \
-d '{"media_id":"med_abc123",
"start":{"type":"phrase","value":"the results are in"},
"end":{"type":"phrase","value":"back after the break"}}'