Cut from your own tools
Three calls: drop, follow, download. Same engine, same presets, same exports as the online tool. Ideal for a podcast publishing flow, n8n, Make or a script.
The API key is generated in your workspace (Pro plan). Open my workspace →
Authentication
Authorization: Bearer mac_xxxxxxxxxxxxxxxxxxxxxxxxA Bearer header with the key from your workspace. All responses are JSON.
Drop a file
Either a public URL (we download the file) or the file itself as the request body. Analysis starts right away; with autoExport (default) the render follows; with transcribe, transcription runs first and fillers are cut.
# from a public URL
curl -X POST https://make-autocut.com/api/v1/jobs \
-H "Authorization: Bearer mac_…" \
-H "Content-Type: application/json" \
-d '{
"url": "https://exemple.com/episode-12.mp3",
"preset": "podcast",
"params": { "keepSilenceMs": 350 },
"export": { "format": "mp3_320", "normalize": "podcast", "denoise": true },
"transcribe": true,
"autoExport": true
}'
# or the file itself, streamed
curl -X POST https://make-autocut.com/api/v1/jobs \
-H "Authorization: Bearer mac_…" \
-H "X-Filename: episode-12.mp3" \
-H 'X-Options: {"preset":"podcast","autoExport":true}' \
--data-binary @episode-12.mp3Response 202. The id is used to follow processing:
{
"id": "5f1c…",
"status": "analyzing",
"progress": 0,
"input": { "name": "episode-12.mp3", "type": "audio", "duration": null },
"params": { "thresholdDb": -38, "minSilenceSec": 0.8, "keepSilenceMs": 350, "minSpeechMs": 150 },
"export": { "format": "mp3_320", "normalize": "podcast", "denoise": true, "rumble": false, "cutFillers": false },
"output": null
}Follow and fetch
GET https://make-autocut.com/api/v1/jobs/{id}
{
"status": "done",
"plan": { "stats": { "originalSec": 1830.4, "finalSec": 1412.9, "savedSec": 417.5, "savedPct": 22.8, "cutsCount": 96 }, "cuts": [...], "keep": [...] },
"transcript": { "status": "done", "language": "fr", "fillers": [{ "word": "euh", "start": 12.41, "end": 12.9, "kind": "filler" }] },
"output": { "url": "https://make-autocut.com/api/v1/jobs/{id}/download", "format": "mp3", "duration": 1412.9, "name": "episode-12-autocut.mp3" },
"timelines": { "fcpxml": "…", "premiere": "…", "edl": "…", "otio": "…", "csv": "…" }
}Poll every few seconds until status = done. The rendered file and the timelines are URLs authenticated by the same key. Files stay 7 days.
Change settings, re-run
PATCH https://make-autocut.com/api/v1/jobs/{id}
{ "params": { "thresholdDb": -42 }, "export": { "normalize": "youtube" }, "action": "export" }
# start transcription (fillers)
PATCH https://make-autocut.com/api/v1/jobs/{id}
{ "action": "transcribe" }Parameters
| Parameter | Values | Effect |
|---|---|---|
thresholdDb | −70 … −10 | Level under which it is silence (dB). Absent: computed from the file. |
minSilenceSec | 0,2 … 10 | Minimum silence length to be cut (s). |
keepSilenceMs | 0 … 2000 | Length each silence is shortened to (ms). 0 = full removal. |
minSpeechMs | 0 … 2000 | Speech island shorter than this between two cuts: cut too (ms). |
preset | podcast · youtube · cours · interview · radical | Starting point per use (settings + normalization). |
export.format | mp3 · mp3_320 · wav · m4a · mp4 · mp4_hq | Output container and codec. mp4 only for a video. |
export.normalize | none · podcast (−16 LUFS) · youtube (−14 LUFS) | Two-pass EBU R128 normalization. |
export.denoise / rumble / cutFillers | true · false | Noise reduction, 70 Hz high-pass, filler cutting (after transcription). |
Limits
- Files up to 4 GB and 3 hours.
- One transcription at a time per server: about one minute per minute of audio.
- 50 files listed by GET /api/v1/jobs; deletion with DELETE.
- Rendered files expire after 7 days, originals after 24 h.
Errors
HTTP codes: 401 missing or invalid key · 402 Pro plan required · 404 unknown file · 409 processing in progress · 413 file too large · 415 unsupported format · 422 nothing to keep · 501 transcription unavailable. The body carries a readable error field.