The buckets
Limits are token buckets: each bucket has a capacity (burst headroom) and a refill rate (sustained throughput). A request that finds its bucket empty gets429.
Expensive operations are the build-heavy endpoints:
POST /v1/websiteSourceCode/head/check, POST /v1/websiteSourceCode/head/publish, POST /v1/websiteSourceCode/deployment/ensure, and POST /v1/websiteSourceCode/published/rollback-version. Everything else is standard.
Additional IP-based abuse protections apply before authentication. Repeated authentication failures may be temporarily blocked. These protections apply to the REST API and MCP, not hosted website traffic.
Handling 429
A rate-limited response tells you exactly how long to wait:- Honor
Retry-After— sleep that many seconds, then retry the same request. Retrying a read or an idempotent write is always safe. - Pace bulk work below the refill rate — for example, keep sustained traffic under 100 requests per second per key, and under 20 per second for publishes and exports.
- Queue, don’t fan out. If you operate many websites (an agency sweep, a bulk content update), run a worker pool with a global pace rather than firing per-site requests concurrently without bounds.
Scope details
- Per-key buckets are keyed to the key’s principal, so two keys in one organization have independent budgets.
- MCP tool calls consume the same buckets as their REST equivalents — an agent and a script sharing one key share one budget. Give busy agents their own keys.
- Limits are enforced before your handler runs; a
429never partially applies an operation.