Rate limits
Per-key limits.
Rate limits are abuse protection, not a billing gate. They are applied per API key.
| Tier | Default | Applies to |
|---|---|---|
| Standard | 60 requests / minute | interpret, generate, conversations, requesting an analysis run, save version, read source, request live tags, start & download exports, embed-tokens |
| Poll | 600 requests / minute | cheap reads a caller legitimately hits in bursts or in real time: project list & metadata, /hmi/values & /hmi/history |
| Job poll | 12 requests / minute | waiting on a slow background job: GET /projects/{id}/analysis, GET /analyses/{analysisId}, GET /exports/{exportId} |
Job polls are deliberately slow. An analysis run or an export takes seconds to minutes, so anything faster than one call every few seconds is pure waste. The tier is separate so that ceiling does not also throttle live values, which share nothing with it but the word “poll”. The SDKs' wait_for_* helpers already pace themselves for it.
On exceeding a limit you get 429 rate_limited with a Retry-After header (seconds). The SDKs retry automatically when the error is retryable, respecting Retry-After.