AI video cleanup API

Sometimes video just needs to be cleaned up — noise removed, compression artifacts fixed, soft edges sharpened, faces clarified. BetterVideo's cleanup API applies the full enhancement pipeline in one call, turning messy footage into something usable.

Free sandbox key, no card. Never trained on. Never sold. Auto-deleted.

What 'cleanup' means

Video cleanup is the catch-all for making footage look better when it's degraded in multiple ways:

  • Noisy: Sensor grain, compression artifacts, analog noise
  • Soft: Lack of edge definition, blurry detail
  • Low-resolution: SD or low-quality HD that needs upscaling
  • Faces unclear: People are recognizable but not sharp

The API addresses all of these together — you don't chain separate tools.

The cleanup pipeline

One API call runs:

  • Denoising: AI-powered noise reduction that preserves texture
  • Super-resolution: Real-ESRGAN upscaling that adds real detail
  • Face restoration: GFPGAN sharpens faces specifically
  • Contrast enhancement: Adaptive CLAHE recovers dynamic range
  • Sharpening: Unsharp masking for final edge clarity

Output is optimized H.264 MP4, ready to use.

When to use cleanup

  • User-generated content: Automatically improve uploads before display
  • Old recordings: VHS, early digital, compressed archives
  • Received footage: Clean up video from external sources
  • Pre-edit prep: Start with cleaner source before editing

One API call — curl, Python & Node

Submit a video by URL, then poll GET /v1/jobs/{id} until done (or receive a signed webhook), and fetch a time-limited download link:

cURL
curl -X POST https://api.bettervideo.io/v1/jobs \
  -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"video_url":"https://.../clip.mp4","resolution":"1080p"}'
Python
import requests
r = requests.post("https://api.bettervideo.io/v1/jobs",
    headers={"Authorization": "Bearer YOUR_KEY"},
    json={"video_url": "https://.../clip.mp4", "resolution": "1080p"})
job = r.json()  # poll GET /v1/jobs/{job['id']} until status == "done"
Node.js
const res = await fetch("https://api.bettervideo.io/v1/jobs", {
  method: "POST",
  headers: { "Authorization": "Bearer YOUR_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({ video_url: "https://.../clip.mp4", resolution: "1080p" })
});
const job = await res.json();

Privacy is the default, not an upgrade

  • Never trained on. Pre-trained, fixed-weight models — your frames are enhanced and returned, never used to train AI.
  • Never sold or shared. No third parties, no data brokers, no "anonymized" resale.
  • Auto-deleted. Files self-delete (default 30 days), or delete any job instantly with one call.
  • Proof on the Secure tier. Every deletion can return a signed deletion certificate, with a full audit log.

Frequently Asked Questions

They're the same thing — cleanup is just a more intuitive term for general improvement.

You can, but the improvement will be subtle. The pipeline detects and addresses actual degradation.

The full pipeline runs by default; we may add parameter control in the future.

Noticeably better for degraded footage; diminishing returns on high-quality source.

Start free — get your API key

Free sandbox key (no card). Try the entire submit → enhance → download flow in a minute with the Run-in-Postman collection.