Rate limits
How many requests per minute the Slicer API accepts per token, the X-RateLimit headers, the 429 response and other v1 limits.
Rate limits protect the service from runaway loops and overload. They are counted per token (for apps connected via OAuth — per connection), not per IP address: two of your services with different tokens don't affect each other.
Requests per minute
| Bucket | Limit | Which requests |
|---|---|---|
| Regular | 120 per minute | everything except the ones below |
| Paid operations and rendering | 30 per minute | creating a project, rebuild, retry, AI assistant, caption translation, export |
| Upload parts | 1200 per minute | PUT /v1/uploads/{id}/parts/{n} |
The reference shows which bucket each endpoint belongs to. The window is one minute. Values may change; the current ones always come in the response headers.
Headers
Every API response carries the current state of the limit:
| Header | Value |
|---|---|
X-RateLimit-Limit | how many requests are allowed in the window for this bucket |
X-RateLimit-Remaining | how many are left in the current window |
X-RateLimit-Reset | when the window resets — Unix time in seconds |
Retry-After | only in a 429 response: how many seconds to wait before retrying |
HTTP/1.1 429 Too Many Requests
Retry-After: 17
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1792152060
{
"ok": false,
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests: no more than 120 per minute per token",
"retryAfterSec": 17
}
}Staying within the limit
- Poll status every 5 seconds, not more often: a montage takes minutes, and frequent polling won't speed it up. Better yet, use webhooks: they arrive on their own and don't use up the limit.
- Upload parts in parallel, but in moderation — 4–6 streams are enough to upload a large file quickly.
- Cache the catalog
GET /v1/styles— it rarely changes. - On 429, wait
Retry-Afterseconds and repeat the same request with the sameIdempotency-Key— see Errors.
Other limits
| What | Limit |
|---|---|
| Active API tokens per account | 20 |
| Webhooks per account | 5 |
Materials in one project (uploadIds) | up to 20; exact limits per kind — GET /v1/styles → materialLimits |
| Concurrent imports from URLs | 3 per account; more — 429 too_many_imports |
| Operations in one edit request | up to 80 |
| Publications in one export | up to 8 accounts |
Upload link uploadUrl | one file, up to 1 hour |
| Webhook response timeout | 10 seconds |
File size, duration and format limits are the same as in the app: File formats and limits.
Besides per-token limits, the service has general overload protection by network address — normal use doesn't run into it.