Send a video. Get back a clean video, a clean MP3 and captioned 9:16 clips. Call it from code with the REST API, or from Claude Desktop, Claude Code, Cursor and any MCP client with the remote MCP server. Same key, same footage allowance as the web app.
curl -X POST https://trimtake.com/api/v1/videos \
-H "Authorization: Bearer tt_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com/episode.mp4",
"options": { "mode": "medium", "clips": true, "noise_removal": true } }'
# → { "job_id": "…", "status": "queued", "duration_seconds": 1840 }curl https://trimtake.com/api/v1/videos/JOB_ID \
-H "Authorization: Bearer tt_live_YOUR_KEY"
# → { "status": "ready", "clips_status": "processing",
# "outputs": { "video_url": "…", "audio_url": "…", "transcript_url": "…", "clips_url": "…" } }curl https://trimtake.com/api/v1/videos/JOB_ID/clips \
-H "Authorization: Bearer tt_live_YOUR_KEY"
# → { "status": "ready", "clips": [
# { "index": 0, "title": "…", "hook_score": 0.82, "duration_seconds": 38.4,
# "video_url": "…", "poster_url": "…" }, … ] }Clips start rendering as soon as the cleanup finishes. Poll this endpoint until status is ready. Each ready clip has a 24-hour signed video_url and poster_url.
# 1. Create the job and get a signed upload URL
curl -X POST https://trimtake.com/api/v1/videos \
-H "Authorization: Bearer tt_live_YOUR_KEY" -H "Content-Type: application/json" \
-d '{ "filename": "call.mp4", "duration_seconds": 420, "size_bytes": 83000000 }'
# → { "job_id": "…", "upload_url": "…", "upload_method": "PUT" }
# 2. PUT the bytes
curl -X PUT "UPLOAD_URL" -H "Content-Type: video/mp4" --data-binary @call.mp4
# 3. Start it
curl -X POST https://trimtake.com/api/v1/videos/JOB_ID/start \
-H "Authorization: Bearer tt_live_YOUR_KEY"| Method | Path | What it does |
|---|---|---|
POST | /api/v1/videos | Create a job from { url } or { filename, duration_seconds }. Options: mode, clips, noise_removal. |
GET | /api/v1/videos | Recent jobs. |
GET | /api/v1/videos/{job_id} | Status + signed video / MP3 / thumbnail URLs when ready. |
POST | /api/v1/videos/{job_id}/start | Start a job after a signed-URL upload. |
GET | /api/v1/videos/{job_id}/clips | Clips with title, hook_score, duration, video + poster URLs. |
POST | /api/v1/videos/{job_id}/clips | Generate or regenerate clips. |
GET | /api/v1/videos/{job_id}/transcript | Word timestamps, removed words flagged, cut list. |
GET | /api/v1/usage | Plan and footage used this month. |
Auth: Authorization: Bearer tt_live_…. Errors come back as { "error": { "code", "message" } }. Statuses: queued, processing, ready, failed, rejected. Full schema in the OpenAPI 3 spec.
The remote MCP server lives at https://trimtake.com/api/mcp (streamable HTTP, Bearer key). If your client only speaks stdio, use the trimtake-mcp package with the same key.
{
"mcpServers": {
"trimtake": {
"url": "https://trimtake.com/api/mcp",
"headers": { "Authorization": "Bearer tt_live_YOUR_KEY" }
}
}
}{
"mcpServers": {
"trimtake": {
"command": "npx",
"args": ["-y", "trimtake-mcp"],
"env": { "TRIMTAKE_API_KEY": "tt_live_YOUR_KEY" }
}
}
}claude mcp add --transport http trimtake https://trimtake.com/api/mcp \
--header "Authorization: Bearer tt_live_YOUR_KEY"{
"mcpServers": {
"trimtake": {
"url": "https://trimtake.com/api/mcp",
"headers": { "Authorization": "Bearer tt_live_YOUR_KEY" }
}
}
}| Tool | What it does |
|---|---|
clean_video | Start a job from a direct video URL. |
clip_video | Generate or regenerate clips for a finished job. |
get_job_status | queued → processing → ready, with output URLs. |
get_clips | Clips with titles, scores and URLs. |
download_clip | Signed URL for one clip by index. |
get_audio | Signed URL for the clean MP3. |
get_transcript | Word-level transcript and cut list. |
get_usage | Plan and footage used this month. |
A clipping agent is a loop: watch a folder or feed for new recordings, clean and clip each one, pick the strongest clips, post them. TrimTake handles the middle; posting stays your own step.
Clean https://cdn.example.com/podcast-ep42.mp4 with TrimTake, wait until it is ready,
then get the clips and give me the three with the highest hook_score, with titles and download links.Every plan, including Free. API jobs use the same monthly footage allowance as the web app. Pay Per Video accounts are billed per upload through the web app, so they start API jobs by moving to the Free plan or a subscription.
Direct https links to mp4, mov or webm files, or a file you upload to a signed URL. Links to YouTube, TikTok and similar pages are rejected with a clear error; download the file yourself first.
Signed URLs returned by the API are valid for 24 hours. Fetch the job again for a fresh link. Files themselves are kept for 14 days.
120 requests per minute per key and 30 new jobs per hour per key. Up to 10 active keys per account.
Not yet. Poll GET /api/v1/videos/{job_id} every few seconds; cleanup takes minutes and clips render a few seconds each.