# Limits

> What each account can do, what a publisher may send, and the sizes of everything the API accepts.

## Account limits

New accounts start with conservative limits. An account is made **trusted** by hand, on request, once we know what you broadcast.

| Limit | New | Trusted | Error when reached |
|---|---|---|---|
| Streams live at once | 1 | 10 | publisher refused |
| Streams waiting to go live at once | 2 | 20 | `limit_pending_streams` |
| Streams created per hour | 10 | 100 | `limit_creation_rate` |
| Ingest hours per month | 20 | No cap (credit is the limit) | `limit_ingest_hours` |
| Highest `max_resolution` | 720 | 1080 | `limit_resolution` |
| Longest stream | 4 hours | 24 hours | ends with `duration_limit` |
| Active API keys | 20 | 20 | `limit_api_keys` |
| Webhook endpoints | 5 | 5 | `limit_webhook_endpoints` |

## What a publisher may send

| | Limit |
|---|---|
| Bitrate | 6 Mbps of video; the stream ends above 7.5 Mbps sustained, everything included, after a 20 s warning |
| Resolution | Within the declared `max_resolution` in either orientation, with 12% slack |
| Video tracks | One (simulcast is refused) |
| Codec | H.264 |
| Publishers per stream | One at a time |

## Sizes

| Field | Limit |
|---|---|
| `name` | 100 characters |
| `metadata` | 2 KB of JSON |
| `Idempotency-Key` | 1–255 characters, remembered for 24 hours |
| Playback link lifetime (`expires_in`) | 60 seconds to 7 days |
| Recording download link | 60 seconds to 7 days, default 1 hour |
| `recording_retention_days` | 1 to 3650, or `null` for no limit |
| `GET /v1/streams` page | Up to 100 |
| `GET /v1/usage` | Up to 90 days |
| Webhook delivery log | Kept 30 days |

## Viewers

There is no cap on viewers. Delivery is paid per GB from your credit, and the credit is the real limit: when it reaches zero, live streams end. The CDN has its own protection against abuse, and requests to a single URL are rate limited per viewer.
