DocsIstek Limitleri

Hız Sınırları

FreeFileTools API hız sınırlarını ve uygulamanızda bunları nasıl ele alacagınızı anlayın.

Ucretsiz Plan Sınırları

SınırDeger
Saatlik istek sayısı50
Istek basına maksimum dosya boyutu25 MB
Hız sınırı penceresiRolling 1 hour

Hız sınırı API anahtarı basına uygulanır. Her anahtar, kayan saatlik bazda sıfırlanan kendi bagımsız sayacına sahiptir.

Hız Sınırı Asıldıgında

Hız sınırını astıgınızda, API bir 429 Too Many Requests yanıtı dondurur:

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

retryAfter alanı, baska bir istek gondermeden once beklenecek saniye sayısını belirtir.

Hız Sınırı Yanıt Baslıkları

Her API yanıtı, hız sınırı kullanımınızı takip etmenize yardımcı olacak baslıklar icerir:

BaslıkAcıklama
X-RateLimit-LimitSaatte izin verilen maksimum istek sayısı (50)
X-RateLimit-RemainingMevcut pencerede kalan istek sayısı
Retry-AfterYeniden denemeden once beklenecek saniye sayısı (yalnızca 429 yanıtlarında)

Ornek yanıt baslıkları

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

Sınırlar Icinde Kalma Ipucları

1.

Kalan istekleri kontrol edin

Kac isteginizin kaldıgını ogrenmek icin X-RateLimit-Remaining baslıgını izleyin.

2.

Ustel geri cekilme uygulayın

429 yanıtı aldıgınızda, API'yi bombardıman etmek yerine artan gecikmelerle bekleyip yeniden deneyin.

3.

Sonucları onbellekleyin

Aynı dosyaları tekrar tekrar isliyorsanız, gereksiz API cagrılarından kacınmak icin sonucları yerel olarak onbellekleyin.

4.

Akıllıca gruplayın

Toplu isleme icin isteklerinizi hepsini aynı anda gondermek yerine zamana yayın.

Ornek: JavaScript'te hız sınırlarını yonetme

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