Auto Schedule API
Rate limits and quota
A trigger sets a flag on a row rather than holding a browser open. Two ceilings apply to how fast you can call it: your plan's API rate limit, and one per address.
The limits
| Value | Meaning |
|---|---|
Your plan's API rate limit | The requests a minute your plan accepts: 40 on Starter, 80 on Pro, 150 on Business, 200 on Business Plus and 10 on the free trial. It limits how fast requests are accepted, not how quickly captures finish. The allowance belongs to the workspace, not to a key. Scheduled captures, Quick Capture in the app and this API share it with the Instant Snap API — unless you reserve part of it for each on the Capacity page. A trigger past it answers 429 rate_limited with the seconds until the next minute. |
60 requests per minute, per IP address | Counted before your key is even looked at. Several keys behind one address share this ceiling. |
No per-key or daily limits
What costs nothing
already_pending is free
already_pending started nothing: no slot of the per-minute window is consumed, no API request is recorded and no quota is charged. Only a triggered answer costs anything.That makes the endpoint safe to call from a retrying pipeline. It does not, however, make it free to call in a loop — the per-IP limiter still counts every request that reaches it, whatever the answer.
Triggers still spend quota
A triggered capture is a capture. It is charged against your plan’s allowance exactly as a scheduled one is, and it is subject to the same feature gating.
| Value | Meaning |
|---|---|
429 rate_limited | Going too fast. Wait and the same call succeeds. Nothing was spent. |
403 no_trigger_allowance | The subscription has no capture allowance left, or is not permitted to start one right now. Waiting a minute does not help. |
403 feature_not_available | The plan does not include API triggering at all. Only a different plan changes this. |
Do not retry a 403
no_trigger_allowance or feature_not_available in a loop will fail for the rest of the billing period. Surface them to a human instead.Backing off correctly
HTTP/1.1 429 Too Many Requests
Retry-After: 24
{
"success": false,
"error_code": "rate_limited",
"error_message": "Trigger limit reached, retry in 24 seconds.",
"retry_after_seconds": 24
}- Honour
retry_after_seconds— it is also in theRetry-Afterheader — before falling back to exponential backoff. - Cap your attempts. An unbounded retry turns one throttled deploy into a stuck pipeline.
- Add jitter if several jobs share a key, or they will all wake at the same instant and be refused together.
- Retry
429and503. Everything else means the identical call will fail identically.
There are no X-RateLimit-* headers on successful responses. You learn your headroom by being refused, so pace your own calls rather than reading it off each answer.
Bad keys are locked out
Ten rejected keys from one address within a short window suspends further attempts for fifteen minutes, answering 429 with Retry-After: 900. A header that is not even shaped like a key is refused before it reaches the service and is not counted towards the lockout — there is nothing to enumerate with a value that could never be valid.
A stale deployment can trip it
Did this page answer your question?
Tell us what is missing