# Noise Removal & Audio Cleanup API

Clean up speech in audio and video files with one HTTP request. Audo provides two endpoints for speech clean-up and noise reduction:

| Endpoint | Tool ID | Web page | What it does | Price | Free tier |
|---|---|---|---|---|---|
| `POST /api/try/remove-noise` | `remove_noise` | [Remove noise](https://audo.ai/noise-removal?utm_source=markdown&utm_medium=agent) | Filters out background noise, hiss, hum, wind, and music behind speech while keeping the speaker's natural voice as recorded; sets loudness to `-16 LUFS` | $0.03/min ($1.80/hr) | First minute free, 3x/day, no API key |
| `POST /api/try/enhance-voice` | `enhance_voice` | [Audio enhancer](https://audo.ai/audio-enhancer?utm_source=markdown&utm_medium=agent) (`enhance-audio`) | Regenerates speech to remove room echo, reverb, background noise, and distortion while restoring muffled, phone, or distant microphones; sets loudness to `-16 LUFS` | $0.03/min ($1.80/hr) | First minute free, 3x/day, no API key |

## One-call free API (no API key required)

Send a local file with `multipart/form-data` or a public HTTPS link as JSON. Without an `Authorization` header, Audo processes the first minute of each file for free (3 times a day per tool):

```bash
# Non-generative noise removal (keeps the speaker's exact voice):
curl -F file=@interview.wav https://audo.ai/api/try/remove-noise -D response.headers -o response.body

# Generative voice enhancement & echo removal (fixes muffled mics and room reverb):
curl -F file=@voice-note.m4a https://audo.ai/api/try/enhance-voice -D response.headers -o response.body

# Or pass a public HTTPS URL as JSON:
curl -X POST https://audo.ai/api/try/remove-noise \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/interview.wav", "noise_reduction": 100, "auto_volume": true}' \
  -D response.headers -o response.body
```

Inspect `response.headers` for the HTTP status and `Content-Type` before naming `response.body`: a `200` media response is the cleaned audio or video file itself, whereas a `202` JSON response gives a `statusUrl` to poll for longer jobs (see [Responses](https://audo.ai/docs/api?utm_source=markdown&utm_medium=agent#responses)).

### Options

- `noise_reduction`: integer from `10` to `100` (default `100`). On `remove-noise`, controls how far background noise is turned down (`100` removes all it can; lower values leave a natural bed of room tone). On `enhance-voice`, sets the blend of the regenerated studio voice (`100` full studio voice; lower values mix back more of the original recording).
- `auto_volume`: boolean (default `true`). Normalizes the output to `-16 LUFS` with a `-1 dBTP` true-peak ceiling.
- `output_format`: `same` (default), `wav`, `mp3`, `m4a`, or `flac`.

## Whole files with an API key

Add an API key from the [API page](https://audo.ai/keys?utm_source=markdown&utm_medium=agent) with `free=false` and an approved positive `max_credits` cap (1 credit = 1 US cent, so `$0.03/min` is 3 credits per minute). You are charged only when the job succeeds:

```bash
curl -H "Authorization: Bearer $AUDO_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F file=@interview.wav \
  -F noise_reduction=100 \
  -F free=false \
  -F max_credits="$APPROVED_MAX_CREDITS" \
  https://audo.ai/api/try/remove-noise -D response.headers -o response.body
```

## Video pass-through (picture copied untouched)

Both `/api/try/remove-noise` and `/api/try/enhance-voice` accept video files directly (`MP4`, `MOV`, `MKV`, `WebM`, and `AVI`, up to 10 GB and 10 hours). When `output_format` is `same` (the default), Audo cleans the audio track and copies the original video stream bit-for-bit without re-encoding the picture—so there is zero visual quality loss and no need to demux and remux audio in your own pipeline:

```bash
curl -F file=@lecture.mp4 -F noise_reduction=100 https://audo.ai/api/try/remove-noise -D response.headers -o response.body
```

## Authenticated REST API (`/api/v1/jobs`)

For server backends and files up to 10 GB (uploaded in parts over 16 MB), use the [REST API](https://audo.ai/docs/api?utm_source=markdown&utm_medium=agent#rest-api):

1. `POST https://audo.ai/api/v1/files` with `{"filename": "episode.wav", "sizeBytes": 52428800}` and upload the bytes to `upload.url` (or `multipart`).
2. `GET https://audo.ai/api/v1/files/<file_id>?wait=30` until `status` is `ready`.
3. `POST https://audo.ai/api/v1/jobs` to start `remove_noise` or `enhance_voice`:

```bash
curl -X POST https://audo.ai/api/v1/jobs \
  -H "Authorization: Bearer $AUDO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "remove_noise",
    "file_id": "file_8Kc2QmP4",
    "noise_reduction": 100,
    "auto_volume": true,
    "output_format": "same",
    "free": false,
    "max_credits": 300,
    "idempotency_key": "550e8400-e29b-41d4-a716-446655440000"
  }'
```

4. Poll `GET https://audo.ai/api/v1/jobs/<job_id>` until `status` is `succeeded`, then fetch a signed download URL from `GET https://audo.ai/api/v1/files/<output_file_id>/download`.

## Batch-clean a folder of files

To clean a folder of recordings safely, [download and inspect the Python client](https://audo.ai/examples/free-api.py?utm_source=markdown&utm_medium=agent) (`free-api.py`), which checks HTTP statuses, follows `202` job links on `audo.ai`, verifies downloaded media with `ffprobe`, and writes each result into a separate directory:

```bash
python3 free-api.py remove-noise interview.wav ./cleaned/interview '{"noise_reduction":100,"auto_volume":true}'

for file in ./raw-recordings/*.{wav,mp3,m4a,mp4}; do
  [ -e "$file" ] || continue
  name="$(basename "${file%.*}")"
  python3 free-api.py remove-noise "$file" "./cleaned/$name" '{"noise_reduction":100,"auto_volume":true}'
done
```

Without an API key, one address can stream 2 uploads at once (an account with an API key, 4 at once, and up to 3 running jobs in parallel).

## Command-line `afftdn` and `arnndn` filters vs. Audo for speech

Developers building audio pipelines often start with local command-line filters such as `afftdn` (FFT spectral denoiser), `arnndn` (RNNoise recurrent network filter), or `anlmdn` (non-local means denoiser). Here is how they compare with Audo's speech endpoints:

| Capability | `afftdn` / `anlmdn` | `arnndn` (RNNoise) | Audo `remove_noise` | Audo `enhance_voice` |
|---|---|---|---|---|
| Steady hiss and fan hum | Good when noise floor (`nf`) is tuned or sampled | Good | Automatic, no manual profile | Automatic |
| Non-stationary noise (café chatter, traffic, keyboard clicks, music) | Leaves chatter behind or causes watery "musical noise" | Partial; can clip fast consonant onsets | Separates speech from complex background noise and music | Strips background noise, chatter, and music |
| Room echo and hollow reverb | None | None | Keeps room acoustics | Removes room echo and reverb |
| Muffled, distant, or phone microphones | Cannot restore missing frequencies | Cannot restore missing frequencies | Preserves original mic tone | Rebuilds close, studio-quality vocal presence |
| EBU R 128 loudness (`-16 LUFS`, `-1 dBTP`) | Requires a separate two-pass `ebur128` / `loudnorm` chain | Requires a separate pass | Built in (`auto_volume=true`) | Built in (`auto_volume=true`) |

- **When `afftdn` or `arnndn` is enough:** You have a clean close-mic recording with only light, steady preamp hiss and want zero external network calls.
- **When to call `remove_noise`:** You have variable background noise (air conditioning, street traffic, café clatter, or background music) and want the speaker's natural vocal timbre preserved without tuning filter thresholds per file.
- **When to call `enhance_voice`:** The speaker was recorded in an echoey conference room, on a laptop or phone mic, or across a table and needs both reverb removal and vocal restoration.

## Related docs

- [Free API and REST API reference](https://audo.ai/docs/api?utm_source=markdown&utm_medium=agent)
- [Free LUFS Loudness & Media Info API](https://audo.ai/docs/lufs-api?utm_source=markdown&utm_medium=agent)
- [Audio Cleanup & Transcription in n8n](https://audo.ai/docs/n8n?utm_source=markdown&utm_medium=agent)
- [Audio MCP Server](https://audo.ai/docs/mcp?utm_source=markdown&utm_medium=agent)
