CleanvoiceDocs

Configuration Reference

Every configuration option available when creating an edit, with types, defaults, and SDK equivalents.

This page documents every option you can pass to the POST /v2/edits endpoint (and the SDK process() / create_edit() methods).


Input payload

Single file

{
  "input": {
    "files": ["https://example.com/episode.mp3"]
  }
}

Multiple files (multi-track)

Pass an array to process multi-speaker recordings with separate audio tracks:

{
  "input": {
    "files": [
      "https://example.com/host.mp3",
      "https://example.com/guest.mp3"
    ],
    "upload_type": "multitrack"
  }
}

This is multi-track, not batch processing. Multiple files are treated as separate tracks of the same recording (e.g. host mic + guest mic). To process multiple independent files, create a separate edit request for each one.


Audio cleaning

These options detect and remove unwanted sounds from the recording.

fillers

Remove filler words such as "um", "uh", "like", "you know", and similar hesitation markers.

APIPython SDKJavaScript SDK
Keyfillersfillers=Truefillers: true
Typebooleanboolboolean
DefaultfalseFalsefalse

Filler detection is language-aware. Check supported languages — English, German, and Romanian have the most accurate detection.


long_silences

Trim long pauses and awkward gaps between sentences.

APIPython SDKJavaScript SDK
Keylong_silenceslong_silences=Truelong_silences: true
Typebooleanboolboolean
DefaultfalseFalsefalse

mouth_sounds

Remove clicks, lip smacks, tongue sounds, and similar mouth noises that often appear between words.

APIPython SDKJavaScript SDK
Keymouth_soundsmouth_sounds=Truemouth_sounds: true
Typebooleanboolboolean
DefaultfalseFalsefalse

breath

Remove audible breathing sounds between sentences and during pauses.

APIPython SDKJavaScript SDK
Keybreathbreath=Truebreath: true
Typeboolean | stringbool | strboolean | string
DefaultfalseFalsefalse

breath options:

ValueBehavior
trueRecommended for most audio. Best default for challenging recordings.
"legacy"Conservative removal. Safer choice for already-clean recordings.
"natural"Lighter touch — preserves more of the original breathing feel.
falseDisabled (default).

stutters

Detect and remove repeated word fragments (e.g. "I— I— I think").

APIPython SDKJavaScript SDK
Keystuttersstutters=Truestutters: true
Typebooleanboolboolean
DefaultfalseFalsefalse

Audio enhancement

These options improve audio quality without cutting content.

Recommended default: Remove Noise v2 plus Normalize v2 (remove_noise: true and normalize: true). This is the enhancement the web app uses for a first clean pass. Filler, silence, breath, and other edit options stay off unless you ask for them.

{
  "remove_noise": true,
  "normalize": true
}

remove_noise

Reduce background noise: hiss, hum, fan noise, AC, street noise, and similar sounds.

true is Noise v2 (recommended). Omitting the key on /v2/edits and /v2/noise is the same as true. "legacy" pins the previous engine (DeepFilterNet). "v2" is still accepted and means the same as true. false turns noise removal off.

APIPython SDKJavaScript SDK
Keyremove_noiseremove_noise=Trueremove_noise: true
Typeboolean | stringbool | strboolean | string
Defaulttrue (Noise v2)True (Noise v2)true (Noise v2)

remove_noise values:

ValueBehavior
trueRecommended. Noise v2. This is also what you get when the key is omitted.
"legacy"Previous engine (DeepFilterNet), pinned so it stays on that model.
"v2"Still accepted. Same as true (Noise v2).
falseOff.

studio_sound

Apply aggressive audio enhancement to make the recording sound studio-quality. Best used on voice-only recordings in quiet environments.

APIPython SDKJavaScript SDK
Keystudio_soundstudio_sound=Truestudio_sound: true
Typeboolean | stringbool | strboolean | string
DefaultfalseFalsefalse

studio_sound options:

ValueBehavior
trueAggressive studio-quality enhancement. Optional, and stronger than Remove Noise v2.
"nightly"Advanced/experimental variant. Currently behaves similarly to true.
falseDisabled (default).

studio_sound is optional. For most recordings, use remove_noise: true with normalize: true instead.


normalize

Normalize v2. Levels loudness across the recording so it stays consistent. This option is a boolean: true runs the current leveler (Normalize v2). There is no "v2" string.

APIPython SDKJavaScript SDK
Keynormalizenormalize=Truenormalize: true
Typebooleanboolboolean
DefaultfalseFalsefalse

Turn it on together with remove_noise: true. When normalize is true and target_lufs is omitted, loudness targets -16 LUFS. Pass target_lufs to override that. Accepted values are -36 to -6.


autoeq

Legacy automatic EQ correction. Prefer studio_sound; autoeq will be removed in a future release.

APIPython SDKJavaScript SDK
Keyautoeqautoeq=Trueautoeq: true
Typebooleanboolboolean
DefaultfalseFalsefalse

mute_lufs + target_lufs

target_lufs sets the integrated loudness used when normalize is true. -16 is the podcast target and the Normalize v2 default when the field is omitted. Accepted range: -36 to -6. mute_lufs is the gate used while measuring loudness.

APIPython SDKJavaScript SDK
Keymute_lufsmute_lufs=-120mute_lufs: -120
Typenumberfloatnumber
Default-120-120-120
APIPython SDKJavaScript SDK
Keytarget_lufstarget_lufs=-16target_lufs: -16
Typenumberfloatnumber
DefaultnullNoneundefined
{
  "config": {
    "mute_lufs": -120,
    "target_lufs": -16
  }
}

Output format

export_format

The audio format for the cleaned output file. This only applies to audio outputs. Video jobs keep the original video container format.

APIPython SDKJavaScript SDK
Keyexport_formatexport_format="mp3"export_format: "mp3"
Typestringstrstring
Default"auto""auto""auto"
Valuesauto mp3 wav flac m4a opus aacauto mp3 wav flac m4aauto mp3 wav flac m4a

Content generation

transcription

Return a full word-by-word transcript of the audio.

APIPython SDKJavaScript SDK
Keytranscriptiontranscription=Truetranscription: true
Typebooleanboolboolean
DefaultfalseFalsefalse

Language is auto-detected. See supported languages.


summarize

Generate chapter markers, key learnings, and an episode summary from the transcript. Automatically enables transcription.

APIPython SDKJavaScript SDK
Keysummarizesummarize=Truesummarize: true
Typebooleanboolboolean
DefaultfalseFalsefalse

social_content

Generate social media post suggestions (tweets, LinkedIn, show notes) from the content.

APIPython SDKJavaScript SDK
Keysocial_contentsocial_content=Truesocial_content: true
Typebooleanboolboolean
DefaultfalseFalsefalse

Additional options

These options are also supported by the current SDK/backend surface but are not covered in the sections above.

Additional cleanup and enhancement

OptionAPI keyPython SDKJavaScript SDKTypeDescription
hesitationshesitationshesitations=Truehesitations: truebooleanRemove short hesitation sounds that are not full filler words
mutedmutedmuted=Truemuted: truebooleanSilence edits instead of cutting them, preserving the original timing
keep_musickeep_musickeep_music=Truekeep_music: truebooleanPreserve music sections during noise reduction
autoeqautoeqautoeq=Trueautoeq: truebooleanLegacy automatic EQ option. Prefer studio_sound

Additional output and delivery

OptionAPI keyPython SDKJavaScript SDKTypeDescription
export_timestampsexport_timestampsexport_timestamps=Trueexport_timestamps: truebooleanReturn edit markers for DAW or NLE workflows
signed_urlsigned_urlsigned_url="https://..."signed_url: 'https://...'stringUpload the finished output directly to your own storage using a pre-signed PUT URL

Additional advanced workflow options

OptionAPI keyPython SDKJavaScript SDKTypeDescription
videovideovideo=Truevideo: truebooleanMust be true for video editing in raw API requests. SDKs auto-detect many common video files, but being explicit is safest for ambiguous URLs
mergemergemerge=Truemerge: truebooleanMulti-track only. Merge all tracks into a single output file
audio_for_edlaudio_for_edlaudio_for_edl=Trueaudio_for_edl: truebooleanVideo workflows only. Return an additional uncut enhanced audio file for EDL or NLE workflows

Full example

result = client.process(
    "https://example.com/episode.mp3",
    fillers=True,
    long_silences=True,
    mouth_sounds=True,
    breath=True,
    stutters=True,
    remove_noise=True,
    studio_sound=False,
    normalize=True,
    mute_lufs=-120,
    target_lufs=-16,
    export_format="mp3",
    transcription=True,
    summarize=True,
    social_content=False,
)
const result = await client.process(
  'https://example.com/episode.mp3',
  {
    fillers: true,
    long_silences: true,
    mouth_sounds: true,
    breath: true,
    stutters: true,
    remove_noise: true,
    studio_sound: false,
    normalize: true,
    mute_lufs: -120,
    target_lufs: -16,
    export_format: 'mp3',
    transcription: true,
    summarize: true,
    social_content: false,
  }
);
{
  "input": {
    "files": ["https://example.com/episode.mp3"],
    "config": {
      "fillers": true,
      "long_silences": true,
      "mouth_sounds": true,
      "breath": true,
      "stutters": true,
      "remove_noise": true,
      "studio_sound": false,
      "normalize": true,
      "mute_lufs": -120,
      "target_lufs": -16,
      "export_format": "mp3",
      "transcription": true,
      "summarize": true,
      "social_content": false
    }
  }
}

PresetOptions
Enhance audio (recommended)remove_noise: true, normalize: true
Studio polishremove_noise: true, studio_sound, normalize: true
Full podcast editremove_noise: true, normalize: true, plus optional fillers, long_silences, mouth_sounds, breath, stutters
Transcript onlytranscription
Full analysistranscription, summarize, social_content