Low-light video enhancement API

Dark, underexposed video loses detail that matters — faces, license plates, what actually happened. BetterVideo's API applies adaptive contrast enhancement and noise reduction to recover clarity from low-light footage, in a single REST call.

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

The low-light problem

Video shot in poor lighting suffers from two compounding issues: underexposure (detail is there but invisible) and noise (the camera amplifies sensor grain to compensate). Simply 'brightening' the video makes it noisier and doesn't recover detail.

Where low-light footage comes from

  • Security cameras: Night footage, poorly lit parking lots, interior shadows
  • Dashcams: Night driving, tunnel exits, headlight glare
  • Consumer phones: Indoor events, concerts, evening recordings
  • Body-cams: Low-light encounters, building interiors

In each case, the footage exists but the detail is buried. Enhancement surfaces it.

How the API handles low-light

BetterVideo applies a multi-stage pipeline to low-light footage:

  • Adaptive CLAHE: Contrast-limited adaptive histogram equalization recovers local detail without blowing highlights
  • Denoising: Reduce sensor grain amplified by low-light exposure
  • Super-resolution: Real-ESRGAN reconstructs detail lost to compression
  • Face restoration: GFPGAN sharpens faces that matter for identification

One API call runs the full pipeline — you don't chain steps yourself.

Use cases

  • Insurance claims: Dashcam footage of night incidents
  • Investigations: Security video from poorly lit areas
  • Content platforms: Automatically improve user uploads shot in low light
  • Archive digitization: Old footage shot with less capable cameras

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

It recovers detail from underexposed footage, but can't create detail that was never captured. Extremely dark footage has limits.

Adaptive CLAHE is contrast-limited — it enhances shadows without clipping bright areas.

Yes — one API call runs contrast enhancement, denoising, and super-resolution together.

It handles standard low-light video; infrared or thermal imaging may have different characteristics.

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.