> Documentation index: https://api.veed.io/llms.txt. Fetch it to find every other page, as Markdown.

# Cleaning speech audio

Remove background noise from speech, then tune how much is removed and how loud the result is.

Clean Audio removes background noise from speech and returns the cleaned
recording. It is the same model as Clean Audio in the VEED editor, with finer
control over how much is removed and how loud the result is.

## Send a recording

- `audio_url` · url · required — URL of the recording to clean: any audio or video file, up to 30 minutes and 512 MB. A video's audio track is used; multi-channel audio is mixed down to mono.

```bash
# Submit a job
curl -X POST "https://api.veed.io/v1/clean-audio" \
  -H "Authorization: Bearer $VEED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "audio_url": "https://static-assets.veed.io/api-examples/clean-audio-input.m4a"
}'

# Poll until COMPLETED (response includes data.job_id)
curl "https://api.veed.io/v1/clean-audio/{job_id}" \
  -H "Authorization: Bearer $VEED_API_KEY"
```

It is built for speech, in any language. Music and sound effects count as noise
and are removed, so don't send a track whose music you want to keep. A video file
works too: its audio track is cleaned, and you get audio back, not video.

The price is $0.0125 per minute of the input audio.

## Tune the result

- `strength` · number · optional — How much of the original is allowed to remain under speech: the suppression floor is 1 - strength. Lower keeps more room tone behind the voice; silence between words is always fully cleaned. Between 0 and 1. Defaults to `0.874`.
- `normalize_loudness` · boolean · optional — Set to false to skip loudness normalization and keep the input level. Defaults to `true`.
- `target_lufs` · number · optional — Integrated loudness of the output in LUFS (ITU-R BS.1770); true peak is capped at -1.1 dBTP. Ignored when normalize_loudness is false. A null reads as omitted: set normalize_loudness to false to skip normalization. Between -40 and -8. Defaults to `-19`.
- `output_format` · enum · optional — Container for the 48 kHz mono 16-bit output. FLAC is lossless at about half the size of WAV. Accepts `flac`, `wav`. Defaults to `"flac"`.
- **The voice sounds thin or processed?** Lower `strength` from its default
of `0.874`. That leaves more
of the room behind the speech, which usually sounds more natural. Silence
between words is always cleaned fully.

- **Cleaning a batch that plays back to back?** Keep loudness normalisation on,
and the files come out at the same `target_lufs`.

- **Handling levels yourself further down the pipeline?** Set
`normalize_loudness` to `false`, and the input level is kept.

- **`output_format`** is one of `flac, wav`.
Keep the default unless your pipeline cannot read it: both carry the same
audio.

## Long recordings

One job takes a file within the limits in `audio_url` above. Split anything
longer into separate jobs, and join the results.
