Go live, or upload. One API. One player.
Create a live stream and push from any encoder, or send us a file. Either way you get back adaptive HLS on a playback URL that works in a browser, a phone, and a TV. Video delivery, priced on what you use.
How it works
Two ways in. One way out.
Broadcast it or upload it. Both paths end on the same playback URL, in the same player, on the same bill.
Going live
-
01
Create the stream
One call gives you an ingest URL, a stream key, and a playback URL that exists before you push a single frame.
-
02
Push from any encoder
OBS, a hardware encoder, a phone, or your own app. RTMP or SRT, both on the same key.
-
03
It goes live on signal
The moment your encoder connects, playback starts serving. Viewers who join late rewind with DVR.
-
04
The replay publishes itself
Record the broadcast and it becomes an on-demand video on the same account. There is no second upload.
Uploading a file
-
01
Ask for an upload
You get back a resumable upload URL. No server of your own sits in the middle of the transfer.
-
02
Send the file
Straight from a browser or a terminal, up to 100GB, and it picks up where it left off when a laptop lid closes.
-
03
We transcode
An adaptive bitrate ladder is built automatically, so playback fits whatever connection the viewer has.
-
04
It is ready
Poll it or catch the webhook. Same playback URL shape as a live stream, same player, same rate.
Both end here https://cdn.tsp/{playback_id}/master.m3u8
- Web
- iPhone
- Android
- Apple TV
- Roku
- AirPlay
- Chromecast
- Your own player
Quickstart
A few calls, either way.
# 1. Create the stream. Once for an event, or once for good. POST /api/v1/live-streams -> { "ingest_url": "rtmp://in.example.com/live", "stream_key": "7f3c1e88-...-9ab2", "playback": "https://cdn/.../master.m3u8", "status": "waiting_for_signal" } # 2. Point an encoder at ingest_url with stream_key. That is the whole step. # 3. Watch it come up GET /api/v1/live-streams/{id} -> { "status": "active", "recording": true }
Illustrative. Full reference provided when you request access.
No code required
Two fields, and you are live.
Going live does not need a developer. Paste the server and the stream key into the software or the hardware you already run, and hit stream.
What you paste into your encoder
Server
rtmp://in.example.com/live
Stream key
7f3c1e88-4d21-4c7a-b0f5-2c19b47a9ab2
On a shaky uplink, use SRT instead. Same key, and you get error correction over a bonded or cellular connection.
Works with what you already own
- Software
- OBS, Wirecast, vMix, Ecamm Live
- Hardware
- ATEM Mini, Tricaster, Pearl, LiveU, Teradek
- Phones
- Any RTMP app, straight from the floor
- Your own
- ffmpeg, GStreamer, or a browser capture you built
Playback access
Signed by default. Public when you want it.
Anything you charge for should be behind a playback URL that expires. Plenty of video is not like that, so signing is a setting and not a rule.
Signed and expiring
Your backend asks us for a playback URL at the moment a viewer is entitled to watch. That URL is signed, and it stops working on its own.
- A link forwarded into a group chat is dead before it gets read. The signature is checked at the edge, not in your app.
- Anti-piracy monitoring runs on gated streams, so a re-broadcast gets spotted while the event is still on.
- It does not cost you speed. The edge caches the video and not the token, so two viewers holding different URLs still share the same cached segments.
- What it costs you is one call per viewing session, from a server you control.
Right for Pay-per-view, subscriptions, members-only libraries, anything with a paywall in front of it.
Public and permanent
Turn signing off and the playback URL is just a URL. It does not expire, nothing has to mint it, and no server of yours sits between a viewer and the first frame.
- Paste it into a site embed, a partner's player, an app you do not control, or an email. It keeps working.
- There is no token service to build, so a page with no backend behind it can still play your video.
- Anyone holding the URL can play it or embed it anywhere. That is the point of it, and it is the whole trade.
- Delivery is still metered either way, so a link that travels further than you expected still lands on your bill.
Right for Free content, sermons, trailers, marketing pages, an open conference track, anything you would rather people shared.
It is set per stream and per video, not once for the account. The same key can sell a pay-per-view behind signed URLs on Saturday night and put the highlight reel on an open URL on Monday morning.
Worked examples
How four customers run it.
Most events are both live and on demand before the night is over. Here is the actual sequence, start to finish.
Fight promotion · Live, then on demand
Sell the pay-per-view, then sell the replay
- Create one stream the week of the event, with recording on and playback signed.
- At load-in the truck pushes SRT over the venue uplink, on the key issued days earlier.
- Doors open, playback goes live, and late buyers rewind with DVR to the walkout they missed.
- Last bell. Stop the encoder, and the recording becomes an on-demand video by itself.
The replay is sellable the same night. Nobody uploads anything.
Church · Live every week
One stream key, every Sunday, forever
- Create the stream once. The key goes into the switcher in the booth and is never touched again.
- The volunteer running the board hits stream. That is the entire Sunday workflow.
- Playback is public, so the same URL sits in the website embed week after week.
- Each service records into the sermon archive automatically, ready to watch by lunch.
No technical staff needed on a Sunday morning.
Conference · Live and on demand together
Three rooms at once, then a session library
- Their own system creates one stream per room, straight from the published schedule.
- Each session page embeds its own playback URL. Nothing is wired by hand on the day.
- Every room records, so three live rooms become three tracks of on-demand sessions.
- Slides and speaker footage recorded separately get uploaded into the same library.
Live and uploaded content sit in one catalog, billed one way.
Software team · API only, no site
Video inside a product we do not run
- They hold an API key and never touch a platform site. No tenant, no branding, no checkout.
- Their users upload from the browser straight to the resumable URL, so their servers never see the bytes.
- They catch the ready webhook and drop the playback URL into the player they already ship.
- When they add a live feature later, it is the same key and the same player.
Priced per GB delivered, so their cost tracks their usage.
What you get
The same platform, both ways.
| Capability | Live | On demand |
|---|---|---|
| Getting video in | RTMP or SRT from any encoder | Resumable upload to 100GB |
| Encoding | Adaptive ladder built as it runs | Adaptive ladder on ingest |
| Rewind | DVR window during the broadcast | Scrub, and resume where you stopped |
| Becoming the other | The recording publishes as on demand | Already on demand |
| Access control | Signed and expiring, or public | Signed and expiring, or public |
| Delivery | Global edge, signed or open | Global edge, signed or open |
| What it costs | Per GB delivered | Per GB delivered |
Tokenized delivery
Signed, expiring playback URLs with anti-piracy monitoring on anything you gate. Free content can stay on a plain public URL.
Per-rendition usage data
See exactly how much was streamed at each quality, so your bill and your analytics line up.
Global CDN delivery
Content served from a worldwide edge so viewers everywhere get a fast start.
Pay for what you use.
Live and on demand bill the same way. No setup fees, no minimums.
$0.02
per GB delivered
$10
per TB stored / month
$0
setup
Frequently asked questions
- Do I need a full site to use the video API?
- No. The video API works on its own. Upload your video, we transcode and deliver it, and you embed the stream wherever you want.
- What formats do you deliver?
- We transcode to adaptive-bitrate HLS so playback adjusts to each viewer's connection and device automatically.
- How much does it cost?
- Delivery is $0.02 per GB and storage is $10 per TB per month. There are no setup fees and no minimum.
- How is this different from Mux or Vimeo?
- Same idea, transparent pricing, and the option to grow into a full branded platform (tickets, pay-per-view, apps) whenever you want, without switching vendors.
- How do I get access?
- Request API access and we will get you set up with keys and docs.
Start delivering video.
Request API access and we will set you up with keys and docs. No site required.