DocsBegransningar

Hastighetsgranser

Forsta hastighetsgranserna for FreeFileTools API och hur du hanterar dem i din applikation.

Gratisniva-granser

GransVarde
Forfragninar per timme50
Max filstorlek per forfragen25 MB
HastighetsgransfonsterRolling 1 hour

Hastighetsgransern tillampas per API Key. Varje nyckel far sin egen oberoende raknare som aterstalls pa rullande timbasis.

Nar hastighetsgranser overskrids

Nar du overskrider hastighetgransen returnerar API:et ett 429 Too Many Requests-svar:

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

Faltet retryAfter anger antalet sekunder att vanta innan du gor en ny forfragen.

Svarsrubriker for hastighetsgrans

Varje API-svar inkluderar rubriker for att hjalpa dig spara din hastighetsgransanvandning:

RubrikBeskrivning
X-RateLimit-LimitMaximalt antal tillatna forfragninar per timme (50)
X-RateLimit-RemainingAntal aterstaende forfragninar i aktuellt fonster
Retry-AfterSekunder att vanta innan nytt forsok (endast vid 429-svar)

Exempel pa svarsrubriker

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

Tips for att halla sig inom granserna

1.

Kontrollera aterstaende forfragninar

Overvaka X-RateLimit-Remaining-huvudet for att veta hur manga forfragninar du har kvar.

2.

Implementera exponentiell avvakning

Nar du far ett 429-svar, vanta och forsok igen med okande fordrojningar istallet for att bombardera API:et.

3.

Cacha resultat

Om du bearbetar samma filer upprepade ganger, cacha resultaten lokalt for att undvika onodiga API-anrop.

4.

Batcha klokt

For batchbearbetning, fordela dina forfragninar over tid istallet for att skicka alla pa en gang.

Exempel: Hantera hastighetsgranser i JavaScript

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");
}