Limits¶
The following limits apply to the HeapStream platform.
| Feature | Limit |
|---|---|
| Number of projects | 50 |
| Maximum size of one video upload | 20 GB |
| Number of concurrent uploads | Unlimited1 |
| Number of collaborators in a project | Unlimited |
| Number of webhooks per project | 1 |
| Posters per video | 20 |
| Chapter tracks per video | 1 |
Rate limits¶
API requests are rate-limited per user, per minute. When a limit is exceeded, the API responds with 429 Too Many Requests; the counter resets at the start of the next minute.
| Endpoint | Limit |
|---|---|
| All API endpoints | 600 requests per minute |
| List videos | 60 requests per minute |
| List projects | 60 requests per minute |
Because of the list-endpoint limits, don't poll the video list to track encoding status — use webhooks instead.
Response headers¶
Every API response reports your current rate-limit state as scalar headers, so any HTTP client — including the generated SDKs — can read them directly:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed per minute for this endpoint. |
X-RateLimit-Remaining | Requests left in the current minute — pace yourself with this. |
X-RateLimit-Concurrent-Limit | Concurrent requests allowed (only on endpoints that cap them). |
X-RateLimit-Concurrent-Remaining | Concurrent requests still available. |
When you exceed a per-minute limit, the 429 response also adds X-RateLimit-Reset (Unix time in seconds when the window resets) and a standard Retry-After ⧉ (seconds to wait), which most HTTP libraries honour automatically.
Concurrency limits¶
| Feature | Limit |
|---|---|
| Concurrent analytics requests per-project | 5 |
Contact support if you need to increase the default limits.
-
Uploads in progress will count towards your storage limit. ↩