Quick Start
Make your first API call with curl.
Use this pre-built prompt to get started faster.
Get your API key
Go to app.cleanvoice.ai/developer/api-keys and create a new key.
export CLEANVOICE_API_KEY="your_api_key_here"No install needed
The Cleanvoice REST API works with any HTTP client. These examples use curl, which is available on macOS and Linux by default (and on Windows via WSL or Git Bash).
Clean your audio
If your file is already online — pass the URL directly in the request:
curl -X POST https://api.cleanvoice.ai/v2/edits \
-H "X-API-Key: $CLEANVOICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"files": ["https://example.com/episode.mp3"],
"config": {
"fillers": { "enabled": true },
"long_silences": { "enabled": true },
"normalize": { "enabled": true }
}
}
}'If your file is local — upload it first, then submit:
Step 1 — Get a signed upload URL:
curl -X POST https://api.cleanvoice.ai/v2/uploads \
-H "X-API-Key: $CLEANVOICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filename": "episode.mp3", "content_type": "audio/mpeg"}'Response:
{
"upload_url": "https://storage.example.com/...",
"file_url": "https://storage.example.com/episode.mp3"
}Step 2 — Upload your file:
curl -X PUT "https://storage.example.com/..." \
-H "Content-Type: audio/mpeg" \
--data-binary @episode.mp3Step 3 — Submit the edit using the file_url:
curl -X POST https://api.cleanvoice.ai/v2/edits \
-H "X-API-Key: $CLEANVOICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"files": ["https://storage.example.com/episode.mp3"],
"config": {
"fillers": { "enabled": true },
"normalize": { "enabled": true }
}
}
}'Both paths return an edit_id:
{ "id": "edit_abc123", "status": "PENDING" }Poll for the result:
curl https://api.cleanvoice.ai/v2/edits/edit_abc123 \
-H "X-API-Key: $CLEANVOICE_API_KEY"When status is SUCCESS, the response includes a result.url with your cleaned audio.
Processing typically takes ~30 seconds for a 2–3 minute clip and 5–10 minutes for a 1-hour file. Wait at least 30 seconds before your first poll, then poll every 10 seconds.
Common presets
Noise reduction and loudness normalization — language-agnostic.
{
"input": {
"files": ["https://example.com/episode.mp3"],
"config": {
"remove_noise": { "enabled": true },
"studio_sound": { "enabled": true },
"normalize": { "enabled": true }
}
}
}Full spoken-word cleanup: fillers, silences, mouth sounds, breathing, stutters.
{
"input": {
"files": ["https://example.com/episode.mp3"],
"config": {
"fillers": { "enabled": true },
"long_silences": { "enabled": true },
"mouth_sounds": { "enabled": true },
"breath": { "enabled": true },
"stutters": { "enabled": true },
"remove_noise": { "enabled": true },
"normalize": { "enabled": true }
}
}
}Pass a video URL and set video to true — otherwise the file is treated as audio-only and you will not get an edited video back.
{
"input": {
"files": ["https://example.com/video.mp4"],
"config": {
"video": true,
"remove_noise": { "enabled": true },
"studio_sound": { "enabled": true },
"normalize": { "enabled": true }
}
}
}Minimal processing — normalize loudness and trim excessive silences.
{
"input": {
"files": ["https://example.com/episode.mp3"],
"config": {
"long_silences": { "enabled": true },
"normalize": { "enabled": true }
}
}
}Deliver results to your storage
If you want the cleaned file delivered directly to your own storage (S3, GCS, etc.), include a signed_url field in the request body. Cleanvoice will PUT the result to that URL instead of hosting it.
curl -X POST https://api.cleanvoice.ai/v2/edits \
-H "X-API-Key: $CLEANVOICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"files": ["https://example.com/episode.mp3"],
"signed_url": "https://your-bucket.s3.amazonaws.com/cleaned.mp3?X-Amz-Signature=...",
"config": {
"fillers": { "enabled": true },
"normalize": { "enabled": true }
}
}
}'Getting public URLs for your files
If your file is in cloud storage, here's how to get a direct download URL:
- Dropbox — Share the file and change
?dl=0to?dl=1at the end of the URL - Google Drive — Share as "Anyone with the link", then use
https://drive.google.com/uc?export=download&id=YOUR_FILE_ID - S3 — Generate a pre-signed GET URL with your AWS SDK or CLI