# JustOnAir

> Live video for your app or event. One API call gives you an address to stream to and a player to watch in.

Create a stream with one request. The answer holds everything a broadcast needs:

| You get | For |
|---|---|
| `rtmp_url` + `stream_key` | OBS, ffmpeg, vMix, hardware encoders |
| `whip_url` | Going live from a browser or any WebRTC encoder |
| `embed_url` | A hosted player page: put it in an iframe or send the link |
| `playback_url` | A signed HLS URL for your own player (hls.js, Safari, AVPlayer, ExoPlayer) |

Viewers get several qualities automatically, the stream plays from a CDN, and an MP4 of it is ready a few minutes after it ends. You pay for minutes of encoding and gigabytes delivered, from prepaid credit. There is no monthly fee.

<div class="cards">
<a href="/quickstart"><b>Quickstart</b><span>From zero to a live picture in the player in about five minutes, with curl and ffmpeg.</span></a>
<a href="/agents"><b>For AI agents</b><span>llms.txt, Markdown pages, OpenAPI and a recipe an agent can follow to run a live stream.</span></a>
<a href="/publishing"><b>Sending video</b><span>OBS settings, ffmpeg, browsers over WHIP, and the limits that keep a stream healthy.</span></a>
<a href="/player"><b>Hosted player</b><span>The embed code, what viewers see, and the options you can set.</span></a>
<a href="/api-reference"><b>API reference</b><span>Every endpoint and field, generated from the OpenAPI spec.</span></a>
<a href="/pricing"><b>Pricing</b><span>Four rates, worked examples, and how billing works.</span></a>
</div>

## How it works

1. **You create a stream.** The API reserves capacity on an ingest server for 30 minutes and returns the addresses above.
2. **A publisher connects** with the stream key: OBS, ffmpeg, a browser. The ingest server checks the key with the API before it accepts a single frame.
3. **The ingest server builds the qualities.** The top quality is what you send, copied untouched. Below it, 480p (and 720p when you send 1080p) are encoded. Every 4 seconds a new piece of each is uploaded.
4. **Viewers watch from the CDN** through signed URLs. The hosted player shows a waiting screen until you go live, starts by itself, and says when the stream has ended.
5. **You end the stream**, or the publisher stops and doesn't come back within 60 seconds. An MP4 of the top quality is made from what was streamed.

Viewers are 10–15 seconds behind the publisher. That is normal for HLS, the format every browser and phone plays without a plugin. If you need sub-second delay for two-way conversation, JustOnAir is not the right tool today.

## What a stream costs

| | Rate |
|---|---|
| Encoding (several qualities, `abr_basic`) | $0.003 per minute ($0.18 per hour) |
| Passthrough (exactly what you send) | $0.0005 per minute ($0.03 per hour) |
| Delivery to viewers | $0.03 per GB (about $0.034 per viewer-hour at 720p) |
| Recording storage | $0.03 per GB per month |

A one-hour 720p event with 100 viewers costs about $3.56. See [Pricing](/pricing) for more examples.

## Getting an account

Sign up at [app.justonair.com](https://app.justonair.com) with your email; there are no passwords. New accounts are approved by hand and start with credit to test with. Then create an API key under **API keys** and follow the [Quickstart](/quickstart).
