Developer-first video API

Video infrastructure, one API call away.

Upload any video and get frame-accurate, web-ready MP4 up to 4K, usually in about a minute. Trim, stitch, splice, redact and record screen + camera with one clean REST API.

Frame-accurate cuts Up to 4K OpenAPI 3 spec Free tier
From upload to playback

One request. A whole video pipeline.

Processing flow illustration
01
Uploadstraight to storage, in parallel
02
Planprobe + frame-exact chunks
Encodeparallel CPU or GPU
04
Audiocontinuous, in sync
05
Verifyevery chunk checked
06
ReadyMP4 download link
Built for video

One API. Every video possibility.

Capture, edit and deliver. Explore the toolkit behind your next video feature.

Explore the docs ↗
Video APICapture · Edit · Deliver

Capture

Screen + cameraRecord both in sync, uploaded as you go.

Two recordings in, one picture-in-picture video out with both audio tracks in sync. Parts upload while recording, so short videos are ready about a minute after you stop.

Web componentsDrop-in player, recorder and editor.

A drop-in player, recorder, editor and thumbnail picker. One script tag each, no framework, no API key in the page.

Edit

Trim, stitch & spliceFrame-accurate edits.

Cut any range, join clips with hard cuts, crossfades or fades to black, and splice inserts — all frame-accurate.

RedactionBlur or black out regions.

Blur or black out regions — rectangles or ovals, each on its own time window — and delete the unredacted original.

Auto-redactionHide sensitive data before encoding.

Turn it on and we read the screen for API keys and tokens, emails and card numbers (and faces, if you ask), then hide them before anything is encoded.

Deliver

Fast parallel encodingEncode chunks side by side.

Long videos split into frame-exact chunks and encode side by side, on GPUs for long files. Short ones finish in a single pass.

720p to 4KMultiple quality levels. No upscaling.

Pick the top quality per video; every lower level is made too. Videos are never upscaled.

Adaptive streamingHLS that adapts to your connection.

Every video also gets HLS streaming copies at every quality from your top one down to 720p, so players switch quality to match the viewer's connection instead of buffering. Pro and Scale.

Live streamingGo live from the browser or OBS.

Go live straight from the browser (camera, screen or both) or from OBS, with low-latency watch links for any website, viewer counts and webhooks. Every stream is saved as a video you can trim, caption and redact. Pro and Scale.

Build

Keys per userPrivate videos and individual limits.

Issue an API key per customer or teammate, each with private videos and its own daily limit. Revoke in a minute.

WebhooksSigned events with retries.

Signed events the moment a video is ready, its captions finish or something fails, with retries and a delivery log. No polling.

Locked to your domainsPlayback on approved sites.

Signed, expiring links that only play on the sites you list, so your videos don't end up embedded elsewhere.

Test mode & playgroundRehearse your integration.

Test keys make free, watermarked videos that delete themselves after a day, and a playground lets you rehearse your integration before going live.

AI assistants (MCP)Manage videos from Claude or Cursor.

Connect Claude, Cursor or VS Code with your API key and ask in plain words: import a video, cut and join clips, add captions or chapters, check usage. Every plan.

Select a feature to explore

Also: automatic captions · thumbnails, metadata and URL import · validation and dry runs for every request

Edits

A timeline, as JSON.

Cut a section out, stitch an intro and outro, or splice an insert into the middle. Send clips in order; we render the timeline and encode it like any upload.

  • Cuts land on exact frames; audio stays in sync across every join
  • Hard cuts, crossfades or fades through black
  • Validated against each video's real length before anything runs
intro.mp4 · 0:00 → 0:30
lesson.mp4 · 1:00 → 2:00
outro.mp4 · whole
crossfade
fade to black
0:000:301:001:302:00
POST /v1/videos { "edit": { "clips": [ { "videoId": "intro…", "end": 30 }, { "videoId": "lesson…", "start": 60, "end": 120, "transition": { "type": "fade", "seconds": 0.75 } }, { "videoId": "outro…", "transition": { "type": "fadeblack" } } ] } }
Privacy

Hide what shouldn't be seen.

API keys on screen, a face in the corner, a customer's email. Mark regions as blur or solid black, even on things that move, and they're burned into every quality level, the download and the thumbnail.

  • Rectangles or ovals, each with its own start and end
  • Optionally delete the unredacted original after processing
  • Follows moving faces and objects: set a few keyframes and it glides between them
Recording

No upload wait when you hit stop.

Record your screen and camera right in the browser. The video uploads while you're still recording, and processing starts the moment you stop, so you never wait for a big upload at the end. Short recordings are usually ready in about a minute; longer ones take a little longer.

  • Screen and camera combined picture-in-picture, both mics mixed
  • Cancel anytime: parts, job and record are cleaned up
  • Tab closed by accident? The upload cancels itself
Web components

Prototype in minutes, ship this week.

A drop-in player, recorder, editor and thumbnail picker. One script tag each, no framework and no API key in the page, so your users get a finished video experience while you build the rest of your app.

  • Four ready-made elements: <video-piper>, <video-piper-recorder>, <video-piper-editor> and <video-piper-thumbnail>
  • Short-lived tokens from your server, each scoped to one job, so the page never holds a key
  • Themed with CSS variables, light and dark built in, styles that never leak into your page
  • Try every option live in the Playground, then copy the page and server code (Node.js, Python or C#)
<!-- your page --> <script src="https://videopiper.com/recorder/recorder.js"></script> <video-piper-recorder token-url="/api/upload-token"> </video-piper-recorder> // your server: one call makes the token POST /v1/upload-tokens { "maxSeconds": 600 }
Developer experience

Designed by people who read error messages

Predictable REST, a complete OpenAPI spec and errors that tell you exactly what to fix.

Errors you can act on

Every problem at once, with its field path and a stable code.

400 { "error": "INVALID_REQUEST",
  "details": [ { "field": "edit.clips[0].end",
    "message": "80s is past the end of
    the video, which is 60.0s" } ] }

Dry runs

Validate any request against real video lengths without creating anything.

POST /v1/videos?dryRun=true
200 { "valid": true,
  "duration": "49.0s (0:49)" }

Uploads that don't fall over

Bytes go straight to storage in parallel 64 MiB parts. Retry a part, not the file.

POST /v1/videos/{id}/parts
{ "partNumbers": [1, 2, 3] }
→ 15-minute pre-signed PUT URLs
~1minute to ready after stop
0frames off at every cut
4Ktop quality, 720p and up
5 GiBper upload
8 hper video
Pricing

Simple plans. Start free.

Start free with the core API. Upgrade to Pro for redaction with motion tracking, in-browser screen recording and adaptive streaming.

Starter

$49/mo
  • 400 processing minutes
  • Up to 1080p · trim, stitch & splice
  • 30 GB storage · 40 GB delivery
Most popular

Pro

$199/mo
  • 1,500 processing minutes
  • Up to 4K · redaction & adaptive streaming
  • 200 GB storage · 150 GB delivery

Scale

$699/mo
  • 6,000 processing minutes
  • Up to 4K · screen recording · 50 API keys
  • 1 TB storage · 400 GB delivery

Compare all plans

FAQ

Questions developers ask

What video formats can I upload?

MP4, MOV, MKV, WebM and most other common formats, up to 5 GiB and 8 hours per file. Browser recordings (WebM) are fully supported.

How fast is processing?

Short videos are usually ready within a minute or two. Long videos are split into frame-accurate chunks and encoded in parallel, on GPUs for long files. With upload-while-recording, there is no upload wait at the end: a short recording is typically ready about a minute after you stop, and longer ones take longer.

Can I trim, stitch or splice videos?

Yes. Trim any upload at no extra cost, or create an edit from clips of your finished videos with hard cuts, crossfades or fades through black. Cuts land on exact frames.

How do I hide sensitive information?

Send up to 20 redaction regions — blur or solid black, rectangle or oval, each for its own time window — or turn on auto-redaction to find API keys, tokens, emails and card numbers on screen and hide them for you. Optionally delete the unredacted original after processing.

How is usage billed?

Plans include processing minutes, storage and delivery. Minutes are counted per output minute (at least one per video); 1440p counts double and 4K four times. Usage beyond your plan is billed per unit.

Can my end users upload from the browser?

Yes, without exposing your key: your backend creates the upload and hands the browser short-lived pre-signed part URLs. The docs walk through it.

Ship your video feature this week.

Create a free account with just your email, grab a key and make your first request in minutes.