API v1

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_xxxxxxxxxxxxxxxxxxxxxxxx

A 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.mp3

Response 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

ParameterValuesEffect
thresholdDb−70 … −10Level under which it is silence (dB). Absent: computed from the file.
minSilenceSec0,2 … 10Minimum silence length to be cut (s).
keepSilenceMs0 … 2000Length each silence is shortened to (ms). 0 = full removal.
minSpeechMs0 … 2000Speech island shorter than this between two cuts: cut too (ms).
presetpodcast · youtube · cours · interview · radicalStarting point per use (settings + normalization).
export.formatmp3 · mp3_320 · wav · m4a · mp4 · mp4_hqOutput container and codec. mp4 only for a video.
export.normalizenone · podcast (−16 LUFS) · youtube (−14 LUFS)Two-pass EBU R128 normalization.
export.denoise / rumble / cutFillerstrue · falseNoise reduction, 70 Hz high-pass, filler cutting (after transcription).

Limits

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.

API — cut silences and fillers from your own tools — Make Autocut