Edits
Create an Edit
Submit an audio or video file for AI-powered editing.
Endpoint
POST /v2/editsSubmit a new editing job. The job runs asynchronously — you receive an edit_id immediately, then retrieve the result by polling.
Request body
{
"input": {
"files": ["https://example.com/podcast.mp3"],
"config": {
"fillers": { "enabled": true },
"long_silences": { "enabled": true },
"mouth_sounds": { "enabled": true },
"stutters": { "enabled": true },
"breath": { "enabled": true },
"remove_noise": { "enabled": true },
"studio_sound": { "enabled": false },
"normalize": { "enabled": true },
"transcription": { "enabled": false },
"summarize": { "enabled": false }
}
}
}Multi-track
For interviews or multi-speaker recordings, pass multiple URLs in the files array and set upload_type to "multitrack":
{
"input": {
"files": [
"https://example.com/host.mp3",
"https://example.com/guest.mp3"
],
"upload_type": "multitrack",
"config": {
"fillers": { "enabled": true }
}
}
}Not sure which settings to enable? See Edit Settings for recommended presets.
Response
{
"id": "edit_abc123",
"status": "PENDING"
}Examples
curl -X POST https://api.cleanvoice.ai/v2/edits \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"files": ["https://example.com/episode.mp3"],
"config": {
"fillers": { "enabled": true },
"long_silences": { "enabled": true },
"mouth_sounds": { "enabled": true },
"normalize": { "enabled": true }
}
}
}'from cleanvoice import Cleanvoice
client = Cleanvoice.from_env()
# process() submits AND waits for completion
result = client.process(
"https://example.com/episode.mp3",
fillers=True,
long_silences=True,
mouth_sounds=True,
normalize=True,
)
result.audio.download("cleaned.mp3")
# create_edit() submits without waiting
edit_id = client.create_edit(
"https://example.com/episode.mp3",
fillers=True,
)
print("Edit ID:", edit_id)import Cleanvoice from 'cleanvoice';
const client = new Cleanvoice({ apiKey: process.env.CLEANVOICE_API_KEY });
// process() submits AND waits for completion
const result = await client.process(
'https://example.com/episode.mp3',
{
fillers: true,
longSilences: true,
mouthSounds: true,
normalize: true,
}
);
// createEdit() submits without waiting
const editId = await client.createEdit(
'https://example.com/episode.mp3',
{ fillers: true }
);
console.log('Edit ID:', editId);Configuration reference
See Edit Settings for a full list of configuration options and recommended presets.