Developers

API + MCP.
Every plan, including Free.

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.

Quickstart

Three calls.
Clean, poll, clips.

1. Create a job from a URL

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 }

2. Poll until ready

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": "…" } }

3. Fetch the clips

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.

Uploading a local file instead

# 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"
Reference

Endpoints

MethodPathWhat it does
POST/api/v1/videosCreate a job from { url } or { filename, duration_seconds }. Options: mode, clips, noise_removal.
GET/api/v1/videosRecent jobs.
GET/api/v1/videos/{job_id}Status + signed video / MP3 / thumbnail URLs when ready.
POST/api/v1/videos/{job_id}/startStart a job after a signed-URL upload.
GET/api/v1/videos/{job_id}/clipsClips with title, hook_score, duration, video + poster URLs.
POST/api/v1/videos/{job_id}/clipsGenerate or regenerate clips.
GET/api/v1/videos/{job_id}/transcriptWord timestamps, removed words flagged, cut list.
GET/api/v1/usagePlan 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.

MCP

Connect an agent.
Ask for clips in plain words.

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.

Claude Desktop (remote)

{
  "mcpServers": {
    "trimtake": {
      "url": "https://trimtake.com/api/mcp",
      "headers": { "Authorization": "Bearer tt_live_YOUR_KEY" }
    }
  }
}

Claude Desktop (stdio)

{
  "mcpServers": {
    "trimtake": {
      "command": "npx",
      "args": ["-y", "trimtake-mcp"],
      "env": { "TRIMTAKE_API_KEY": "tt_live_YOUR_KEY" }
    }
  }
}

Claude Code

claude mcp add --transport http trimtake https://trimtake.com/api/mcp \
  --header "Authorization: Bearer tt_live_YOUR_KEY"

Cursor (.cursor/mcp.json)

{
  "mcpServers": {
    "trimtake": {
      "url": "https://trimtake.com/api/mcp",
      "headers": { "Authorization": "Bearer tt_live_YOUR_KEY" }
    }
  }
}
ToolWhat it does
clean_videoStart a job from a direct video URL.
clip_videoGenerate or regenerate clips for a finished job.
get_job_statusqueued → processing → ready, with output URLs.
get_clipsClips with titles, scores and URLs.
download_clipSigned URL for one clip by index.
get_audioSigned URL for the clean MP3.
get_transcriptWord-level transcript and cut list.
get_usagePlan and footage used this month.
Recipe

Build a clipping agent.

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.

01
Trigger
A new episode lands in your storage, a webhook fires from your recorder, or a cron job checks a feed. Your agent gets a direct mp4/mov/webm link.
02
Clean + clip
Call clean_video (MCP) or POST /api/v1/videos (REST) with the link. Poll get_job_status until ready, then get_clips until the clips are ready.
03
Choose
Sort by hook_score, keep the top three to five, and use each clip’s title as the caption draft. Pull get_transcript if you want the agent to write a longer description.
04
Post (your step)
Hand the signed clip URLs to the scheduler you already use, such as Postiz or Buffer, through its own API or upload flow. TrimTake never posts on your behalf.

Example prompt once the MCP server is connected

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.
Questions

API FAQ

Which plans include the API?+

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.

What inputs are accepted?+

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.

How long are output links valid?+

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.

What are the rate limits?+

120 requests per minute per key and 30 new jobs per hour per key. Up to 10 active keys per account.

Is there a webhook?+

Not yet. Poll GET /api/v1/videos/{job_id} every few seconds; cleanup takes minutes and clips render a few seconds each.

Create an API keySee the clipsPricing
Product
Professionals
Compare
Company
TrimTake — Clean video in 9 minutes or it’s free. · © 2026support@trimtake.comPrivacyTerms