Rate limity
Agent API je limitované per API kľúč podľa vášho plánu — nie jedným plošným stropom. Per‑minútový limit sa vynucuje v 60‑s okne a aktuálny strop pre váš kľúč nájdete v hlavičkách X-RateLimit-* každej odpovede.
Limity podľa plánu
| Plán | Požiadaviek / min | Volaní / mesiac |
|---|---|---|
| Pro | 20 | 500 |
| Ultra | 40 | 2 500 |
| Ultra+ | 100 | 10 000 |
Per‑minútový limit je tvrdý (prekročenie = 429). Mesačná kvóta je mäkká — po jej prekročení volania pokračujú a nad rámec sa doúčtujú ako overage. Pri približne 80 % a 100 % mesačnej kvóty vám pošleme upozornenie. Potrebujete vyššie limity? Prejdite na vyšší plán (alebo si vyžiadajte per‑kľúčové navýšenie u podpory).
Hodnota „Maximum 100 požiadaviek za minútu" v OpenAPI popise je iba najvyšší strop naprieč plánmi (Ultra+), nie plošný limit pre všetky kľúče. Reálny strop závisí od plánu organizácie kľúča podľa tabuľky vyššie. Kľúč bez priradeného plánu (napr. bez org kontextu) má reštriktívny default 20 req/min.
Hlavičky
| Hlavička | Popis |
|---|---|
X-RateLimit-Limit | Maximálny počet požiadaviek v okne. |
X-RateLimit-Remaining | Zostávajúci počet v aktuálnom okne. |
X-RateLimit-Reset | Unix čas (s), kedy sa okno resetuje. |
Retry-After | Pri 429: počet sekúnd, koľko počkať. |
Riešenie 429
Pri prekročení limitu API vráti 429 RATE_LIMITED. Rešpektujte Retry-After a použite exponenciálny backoff s jitterom. Neopakujte v tesnej slučke.
async function callWithRetry(fn, max = 5) {
for (let attempt = 0; attempt < max; attempt++) {
const res = await fn();
if (res.status !== 429) return res;
const retryAfter = Number(res.headers.get("Retry-After") ?? 1);
const backoff = retryAfter * 1000 + Math.random() * 250;
await new Promise((r) => setTimeout(r, backoff));
}
throw new Error("Rate limit: vyčerpané pokusy");
}Pre dávkové operácie rozložte požiadavky v čase a využite stránkovanie (
page / per_page) namiesto častého pollingu.