Skip to main content
Rate limits are per key, not per user or per workspace. Use a separate key per integration so one integration cannot consume another’s budget.

Plan limits

The workspace plan sets the budget for every active key: The counter resets when its one-minute window rolls. Plan changes synchronize the cap on existing keys as well as new ones. Per-key overrides aren’t available in the settings UI.

Response headers

/v1/shortcuts, /v1/folders, and /v1/tags attach the current budget to a request that reaches your route handler, so you can self-throttle before hitting 429: No 401/402/403 from the auth layer carries these, and neither does the 429 itself — a 429 only sets Retry-After (see below). GET /v1/qr doesn’t carry these headers at all. Key-authenticated calls there count against the plan limit above; anonymous calls get a separate 60 requests/minute per-IP budget instead. That endpoint’s 429 response in the API reference has the full breakdown, including the per-IP cap on failed Bearer verification.

When you hit the limit

You get 429 Too Many Requests with a Retry-After header in seconds:
Wait the indicated number of seconds, then retry. Add jitter so concurrent workers do not retry at once:

Choosing a key budget

A few guidelines:
  • For an interactive integration like an internal tool or one-user script, use the plan limit as-is.
  • For background jobs and batch operations, pace the worker fleet so the combined rate for one key stays below its plan limit.
  • Do not embed workspace API keys in browser extensions, public widgets, or other untrusted clients. Keep keys on a trusted server and proxy requests through your backend.