Clean Audio

Submit a clean audio (video) job

Changed on

Start an asynchronous job that removes background noise from speech, with the same model that powers Clean Audio in the VEED editor. Keeps the picture as it is and replaces only the audio track.

It is built for speech, in any language. Music and sound effects count as noise and are removed. The video stream is copied, not re-encoded, so its frames, resolution and bitrate are the input's.

Inputs

  • video_url — public URL of the video; MP4, MOV, MKV or WebM with an H.264, HEVC, AV1, MPEG-4, VP8 or VP9 video stream and an audio track, up to 30 minutes and 2 GB. Only the first audio track is kept: other audio tracks and subtitles are dropped. Split anything longer into separate jobs
  • strength — optional; how much of the original may remain under speech, between 0 and 1. Lower keeps more room tone behind the voice
  • target_lufs — optional; the output's integrated loudness, between -40 and -8 LUFS
  • normalize_loudness — optional; false keeps the input level instead of normalizing it

The result is an MP4 with AAC audio for H.264, HEVC, AV1 or MPEG-4 input, and a WebM with Opus audio for VP8 or VP9 input. The cleaned track is 48 kHz mono.

What happens next

The job is accepted immediately — you get 202 Accepted with a job_id and status PROCESSING. Processing takes roughly 0.2–0.5× the audio's duration; poll GET /v1/clean-audio-video/{job_id} until the job is COMPLETED or FAILED.

post/v1/clean-audio-video

Request

Headers

X-Veed-Store-IO'0' | '1'

Set to 0 to not store this request's and response's bodies. They are then not available in your request logs for debugging.

X-Veed-Media-Expiration-Secondsinteger

Number of seconds before the media URLs returned for this request expire. A value above the maximum is capped rather than rejected.

Request body

$schemastring uri

A URL to the JSON Schema for this object.

normalize_loudnessboolean

Set to false to skip loudness normalization and keep the input level.

strengthnumber double

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.

target_lufsnumber double

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.

video_urlstring uri required

URL of the video to clean: MP4, MOV, MKV or WebM with an H.264, HEVC, AV1, MPEG-4, VP8 or VP9 video stream and an audio track, up to 30 minutes and 2 GB. Only the first audio track is kept.

Example request

{
  "$schema": "https://api.veed.io/schemas/CleanAudioVideoInput.json",
  "video_url": "https://static-assets.veed.io/api-examples/clean-audio-video-input.mp4"
}

Response

Accepted

$schemastring uri

A URL to the JSON Schema for this object.

Example response

{
  "$schema": "https://api.veed.io/schemas/ResourceCleanAudioVideoJob.json",
  "data": {
    "result": {
      "video": {
        "content_type": "video/mp4"
      }
    }
  }
}

Changes

    • warning

      added the new model_access_required enum value to the /// response property for the response status

    • warning

      added the new model_access_required enum value to the /// response property for the response status

    • warning

      added the new model_access_required enum value to the /// response property for the response status

    • warning

      added the new model_access_required enum value to the /// response property for the response status

    • warning

      added the new model_access_required enum value to the /// response property for the response status

    • info

      endpoint added