video hosting & processing as a service

video in, adaptive streams out. one api key.

resumable uploads straight from end-user devices, transcoding on a worker fleet you can extend, playback over hls — without running any of it yourself.

sandbox: no signup · watermarked · purged after 24 h

energixer demo key …ab3d
launch.mp4 · 84 MB 64%
pause cancel survives page reloads
WHAT JUST HAPPENED
201POST /v1/videos12:01:44
curl -X POST https://energixer.net/v1/videos -H "authorization…copy
204PATCH /v1/videos/upload/8f21…12:01:45
413POST /v1/videos11:58:02
ℹ 413 file_too_large — the file is 312 MB; this key allows up to 200 MB per video. The upload never started, nothing was stored.
pending_uploaduploadedqueuedlockedencodingavailablefailedtimeoutexpiredcancelled

the demo logs every api call it makes — each row expands to a copy-pasteable curl

three calls, start to stream

01

upload

initiate returns an upload url and a single-video token — the api key never ships inside a client. tus resumable: pause, lose the connection, reload the page; it continues from the last confirmed byte.

02

process

a worker fleet transcodes to h.264 + av1 · 720p / 1080p ladders. workers are plain http clients — self-hosting, a gpu box at home joins the fleet with three environment variables.

03

play

adaptive hls from unguessable public urls, mp4 fallback, poster + og thumbnails, dimensions and duration metadata. the rendition ladder is shown, never hidden.

every claim runs live in the demo

the demo is executable documentation — each screen teaches the api it sits on.

tus 1.0

uploads survive anything

pause, drop the connection, even reload the page mid-upload — it continues. byte-exact server verification.

3 env vars

a fleet that runs anywhere

workers are plain http clients — self-host the whole thing and add capacity from a datacenter or the gpu box under your desk.

hls · dash · mp4

adaptive playback out

h.264 + av1 · 720p / 1080p ladders, posters, og thumbnails, metadata — optional transcripts and moderation frames.

t=…,v1=…

push or poll

signed webhooks with a retry ladder from 1 m → 6 h, dead-letter and replay. or just poll status.

429 says why

honest limits

quotas and rate limits are first-class. every rejection names the limit it enforced.

no signup

a sandbox in one click

mint a throwaway key and upload in under a minute. 3 videos a day, watermarked, purged after 24 h.

on the record

renditionsh.264 + av1 · 720p / 1080p · 1080p only when the source earns it — never upscaled, never mislabeled
segments4 s cmaf fmp4 · hls always · dash per config · mp4 fallback · poster + og thumbnail
default tier200 MB / 180 s per video · 10 GB/day · 100 GB storage · operator-adjustable
uploadstus 1.0 · 2 MB chunks recommended · byte-exact verification
webhooksvideo.ready · video.failed · video.expired · video.cancelled — signed, retried (1 m → 6 h), replayable
sandbox3 videos/day · watermarked · purged after 24 h · no signup
statespending_uploaduploadedqueuedlockedencodingavailablefailedtimeoutexpiredcancelled

the numbers above are imported from the constants the api enforces — see limits & quotas and the state machine.

four lines in, four lines out

initiate with one curl; play back with stock hls.js and a bounded ~15 s look-ahead — bandwidth-conscious by example. every error in the catalog explains what happened and what it does not mean.

curl -X POST https://energixer.net/v1/videos \
  -H "authorization: bearer ek_live_…" \
  -H "content-type: application/json" \
  -d '{"content_type":"video/mp4","file_size":88080384}'
# 201 → { video_id, tus_upload_url, upload_token }

try it in under a minute.

the sandbox mints a throwaway key — no signup, no card, nothing to clean up.

3 videos/day · watermarked · purged after 24 h

already have a key? sign in to the console to manage your domains.