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

ValueMeaning
Your plan's API rate limitThe 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 addressCounted before your key is even looked at. Several keys behind one address share this ceiling.

No per-key or daily limits

There is no separate limit per key and no daily ceiling. What a period can hold is your plan’s capture allowance.

What costs nothing

already_pending is free

A call that answers 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.

ValueMeaning
429 rate_limitedGoing too fast. Wait and the same call succeeds. Nothing was spent.
403 no_trigger_allowanceThe subscription has no capture allowance left, or is not permitted to start one right now. Waiting a minute does not help.
403 feature_not_availableThe plan does not include API triggering at all. Only a different plan changes this.

Do not retry a 403

Retrying 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

429 Too Many Requests
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 the Retry-After header — 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 429 and 503. 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

The lockout is aimed at key guessing, but a job left running with a deleted key will reach it too. If triggers suddenly answer 429 with a fifteen-minute wait, check the key before you check the rate.

Did this page answer your question?

Tell us what is missing