Rate limits

Per-key limits.

Rate limits are abuse protection, not a billing gate. They are applied per API key.

TierDefaultApplies to
Standard60 requests / minuteinterpret, generate, conversations, requesting an analysis run, save version, read source, request live tags, start & download exports, embed-tokens
Poll600 requests / minutecheap reads a caller legitimately hits in bursts or in real time: project list & metadata, /hmi/values & /hmi/history
Job poll12 requests / minutewaiting 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.