DocsLimity požadavků

Limity pozadavku

Pochopte limity pozadavku pro FreeFileTools API a jak je zvladat ve sve aplikaci.

Limity bezplatne urovne

LimitHodnota
Pozadavky za hodinu50
Max velikost souboru na pozadavek25 MB
Okno limitu pozadavkuRolling 1 hour

Limit pozadavku se uplatnuje na API Key. Kazdy klic ma svuj vlastni nezavisly citac, ktery se resetuje na klouzave hodinove bazi.

Kdy jsou limity pozadavku prekroceny

Kdyz prekrocite limit pozadavku, API vrati odpoved 429 Too Many Requests:

json
{
  "error": "Rate limit exceeded",
  "message": "You have exceeded the rate limit of 50 requests per hour. Please try again later.",
  "retryAfter": 1742
}

Pole retryAfter udava pocet sekund, po kterych muzete provest dalsi pozadavek.

Hlavicky odpovedi limitu pozadavku

Kazda odpoved API obsahuje hlavicky, ktere vam pomohou sledovat vyuziti limitu pozadavku:

HlavickaPopis
X-RateLimit-LimitMaximalni pocet povolenych pozadavku za hodinu (50)
X-RateLimit-RemainingPocet zbyvajicich pozadavku v aktualnim okne
Retry-AfterSekundy cekani pred dalsim pokusem (pouze u odpovedi 429)

Priklad hlavicek odpovedi

http
HTTP/1.1 200 OK
Content-Type: image/jpeg
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 42

Tipy pro dodrzovani limitu

1.

Kontrolujte zbyvajici pozadavky

Sledujte hlavicku X-RateLimit-Remaining, abyste vedeli, kolik pozadavku vam zbyva.

2.

Implementujte exponencialni ustup

Kdyz obdrzite odpoved 429, pockejte a zkuste to znovu s rostoucimi prodlevami, misto aby jste API zaplavovali.

3.

Ukladejte vysledky do cache

Pokud zpracovavate stejne soubory opakovane, ukladejte vysledky lokalne do cache, abyste se vyhnuli zbytecnym API pozadavkum.

4.

Davkujte chytre

Pro davkove zpracovani rozlozte sve pozadavky v case, misto aby jste je vsechny odeslali najednou.

Priklad: Zpracovani limitu pozadavku v JavaScriptu

javascript
async function apiCall(url, options, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const response = await fetch(url, options);

    if (response.status === 429) {
      const retryAfter = parseInt(response.headers.get("Retry-After") || "60");
      console.log(`Rate limited. Waiting ${retryAfter} seconds...`);
      await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000));
      continue;
    }

    return response;
  }

  throw new Error("Max retries exceeded");
}