Video & Audio Polish API

One-shot post-production for creators: clean speech, upscale clips to 4K, restore noisy footage, and apply cinematic color in one HTTP call. All four endpoints are asynchronous — POST returns a job id, then poll the matching GET status route until status="completed".

What's new: 4 post-production endpoints — AI noise-suppression (audio), 4× super-resolution (video upscale & restore), and 6 cinematic color presets (color grade) — all running on PixelAPI's always-warm processing system so you skip cold starts. Try in dashboard →

Pricing summary

EndpointCreditsUSD per secondvs market
POST /v1/audio/denoise1 cr / sec (min 5 cr)$0.001/sec2× cheaper than Adobe Podcast
POST /v1/video/upscale10 cr / sec (min 30 cr)$0.0015/sec27× cheaper than Topaz Video AI cloud
POST /v1/video/denoise7 cr / sec (min 20 cr)$0.007/sec~3× cheaper than Topaz Restoration
POST /v1/video/colorgrade3 cr / sec (min 10 cr)$0.003/secOne-click LUT — no DaVinci needed

1 credit = $0.001. India pricing localized via Razorpay.

Common authentication & polling

All four endpoints use the same Bearer-token auth and the same poll loop:

Authorization: Bearer YOUR_API_KEY
User-Agent: MyApp/1.0

POST returns:

{ "id": "uuid", "status": "queued", "credits_used": 30 }

Poll the matching GET route every 2 seconds until:

{ "id": "uuid", "status": "completed",
  "output_url": "https://api.pixelapi.dev/files/...",
  "processing_ms": 7234 }

🎧 Audio Denoise 1 credit / sec · min 5

Studio-clean speech in one upload. Strips wind, hiss, hum, fan, and traffic noise without the robotic "voice in a tunnel" sound that older suppression methods produce. Real-time on our processing system.

POST /v1/audio/denoise

ParamTypeDescription
filefileRequired. WAV / MP3 / M4A / OGG / FLAC, up to ~30 minutes per request.
curl -X POST https://api.pixelapi.dev/v1/audio/denoise \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@noisy_recording.wav"

GET /v1/audio/denoise/{id} — returns output_url (MP3) when status="completed".

Quality: Heavy noise (-3 dB signal-to-noise ratio) → 99.7% noise reduction while keeping speech fully intelligible.

📺 Video Upscale 4× 10 credits / sec · min 30

Upscale any clip to 4K — sharp, halo-free. Frame-by-frame super-resolution on PixelAPI's processing system. 640×360 → 2560×1440 in ~34 seconds. Output: H.264 MP4.

POST /v1/video/upscale

ParamTypeDescription
filefileRequired. MP4 / MOV / WebM / MKV. Up to 60 seconds recommended for fast turnaround.
curl -X POST https://api.pixelapi.dev/v1/video/upscale \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@clip_360p.mp4"

GET /v1/video/upscale/{id}

Quality: Crisp edges with no halo or "oil-painting" artefacts on faces, text, or logos.

🧴 Video Denoise / Restore 7 credits / sec · min 20

De-grain, de-block, restore detail in old or low-light footage. Restoration pass cleans every frame without changing the original resolution.

POST /v1/video/denoise

ParamTypeDescription
filefileRequired. Any common video container.
curl -X POST https://api.pixelapi.dev/v1/video/denoise \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@grainy_clip.mp4"

GET /v1/video/denoise/{id}

Tip: Pair with /v1/video/upscale for the cleanest possible 4K master from old camera footage — denoise first, then upscale.

🎞️ Video Color Grade 3 credits / sec · min 10

Cinematic color in one click — 6 LUT-style presets. Synchronous response — a typical 10-second clip is ready in under 5 seconds.

POST /v1/video/colorgrade

ParamTypeDescription
filefileRequired. Any common video container.
presetstringOptional, default teal_orange. One of: teal_orange, vintage_film, bw, warm_sunset, cool_blue, vivid_pop.
curl -X POST https://api.pixelapi.dev/v1/video/colorgrade \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "[email protected]" \
  -F "preset=teal_orange"

GET /v1/video/colorgrade/{id}

Quality: Clean across all 6 presets — no banding, no clipping in deep shadows or highlights.

Python end-to-end example

import requests, time

API = "https://api.pixelapi.dev"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY", "User-Agent": "MyApp/1.0"}

def submit(endpoint, file_path, **fields):
    with open(file_path, "rb") as f:
        r = requests.post(f"{API}{endpoint}",
                          headers=HEADERS,
                          files={"file": f},
                          data=fields)
    r.raise_for_status()
    return r.json()["id"]

def wait(endpoint, job_id, max_polls=180):
    for _ in range(max_polls):
        r = requests.get(f"{API}{endpoint}/{job_id}", headers=HEADERS).json()
        if r["status"] == "completed":
            return r["output_url"]
        if r["status"] == "failed":
            raise RuntimeError(r.get("error"))
        time.sleep(2)
    raise TimeoutError(job_id)

# 1. Denoise audio
job = submit("/v1/audio/denoise", "podcast.wav")
print("clean audio:", wait("/v1/audio/denoise", job))

# 2. Upscale video to 4K
job = submit("/v1/video/upscale", "clip_360p.mp4")
print("4K master:", wait("/v1/video/upscale", job))

# 3. Color grade with teal/orange
job = submit("/v1/video/colorgrade", "clip.mp4", preset="teal_orange")
print("graded:", wait("/v1/video/colorgrade", job))

Limits & behaviour

Need help?

Email support@pixelapi.dev or check the full API reference.