Limits & quotas
All values below are imported from the same constants the limiters enforce —
this table cannot drift from behavior. Per-domain values are defaults,
overridable via PATCH /v1/domain/config or by the operator.
Rate limits
| Scope | Limit | Key |
|---|---|---|
| All /v1 API calls | 200/min | per credential (per IP unauthenticated) |
| POST /v1/videos (initiate) | 5/hour | per uploader_ref |
| tus chunk PATCH | 200/min | per video |
| POST /v1/internal/auth/service-token | 10/10 min | per IP |
| Public delivery (/videos/…) | 2000/min | per IP, independent of API limits |
| Internal worker routes | exempt | heartbeats must never throttle |
429 bodies carry retryAfter (ISO-8601). Honor it.
Per-domain defaults
| Setting | Default |
|---|---|
| max_file_bytes | 209,715,200 (200 MB) |
| max_duration_seconds | 180 (instance hard cap 900) |
| max_concurrent_pending_per_uploader | 1 |
| renditions | h264_720, h264_1080, av1_720, av1_1080 |
| outputs | hls: true, dash: false, mp4_fallback: true, og_thumbnail: true |
| transcript / moderation_frames | false / false |
| daily_upload_bytes, storage_bytes_limit, max_concurrent_processing | domain columns — see GET /v1/usage |