Errors and rate limits
Handle validation, authentication, plan limits and retries without guesswork.
Error response
{
"error": "Human-readable explanation",
"upgrade": true,
"limit": 1000,
"used": 1000
}
Status codes
| Code | Meaning | Action |
|---|---|---|
| 400 | Invalid input | Fix the request; do not retry unchanged. |
| 401 | Missing or invalid key | Replace or rotate the credential. |
| 403 | Scope or role denied | Use an authorized key or reduce the operation. |
| 404 | Resource not visible | Check the id, organization and domain scope. |
| 409 | Conflict | Choose another slug or reload the resource. |
| 402 | Plan or usage limit | Reduce usage or upgrade the workspace plan. |
| 429 | Rate limited | Wait for Retry-After and use exponential backoff. |
| 500/503 | Temporary server failure | Retry idempotent work with jitter. |
Plan limits
Free50 req/s1K API links
Starter50 req/s2.5K API links
Growth50 req/s10K API links
Business50 req/s100K API links
Scale500 req/sUnlimited API links
Pagination and idempotency
List routes use limit and offset. Keep create retries behind your own idempotency key or deterministic slug so a network timeout does not produce duplicate campaign links.

