Oran sınırı ve kota
İlk yıl API ücretsizdir: plan katmanı, fatura ya da ödeme yoktur. Yine de her anahtarlı istek sayılır ve kötüye kullanıma karşı sınırlıdır. Sınırlar ürün başına ayrıdır.
Ürünler ve sınırlar
| Ürün | Neyi kapsar | Dakika | Gün |
|---|---|---|---|
tiles |
Anahtarlı karo istekleri, bölge paketi | 1 200 | 200 000 |
query |
Geri kalan her /v1 çağrısı (okuma, yükleme, rıza, paylaşım) |
60 | 10 000 |
render |
Uçuş videosu (sonraki sürüm) | 5 | 100 |
Bunlar standart anahtarın değerleridir; dakika ve gün pencereleri UTC'dir ve sabittir (dakika başında, gün UTC gece yarısında sıfırlanır). Ayrıca her anahtarın bütün ürünleri kapsayan bir aylık kotası vardır (UTC ayı); değeri anahtarla birlikte size bildirilir. Daha yüksek sınır gerekiyorsa yöneticiye yazın.
429 yanıtı
Sınır dolunca API 429 döner, gövde her hatadaki biçimdedir (Hatalar):
{"code": "rate_limited", "detail": "rate limit of 60 per minute reached"}
code |
Ne doldu |
|---|---|
rate_limited |
Dakika ya da gün penceresi |
quota_exceeded |
Aylık kota |
| Başlık | Anlamı |
|---|---|
Retry-After |
Pencerenin bitişine kalan saniye (en az 1) |
X-RateLimit-Limit |
Dolan pencerenin sınırı |
X-RateLimit-Window |
minute, day ya da month |
Reddedilen istek sayılmaz; 401 ve 403 de sayılmaz. Geçersiz istek (422) sayılır.
İstemci ne yapmalı
- 429'da
Retry-Afterkadar bekleyin; aynı isteği hemen yinelemeyin. - Okuma yanıtlarını
ETagile saklayın: aynı sorguyuIf-None-Matchile sorduğunuzda veri değişmediyse 304 gelir (gövdesiz, ucuz). - Sürekli 429 alıyorsanız istek düzeninizi gözden geçirin ya da yöneticiden sınır artırımı isteyin.
// Retry-After'a uyan basit istemci (Node 24 ya da tarayıcı fetch'i).
export async function updraftGet(url, apiKey, { attempts = 3 } = {}) {
for (let attempt = 1; ; attempt += 1) {
const response = await fetch(url, { headers: { 'X-Api-Key': apiKey } });
if (response.status !== 429 && response.status < 500) return response;
if (attempt >= attempts) return response;
const wait = Number(response.headers.get('Retry-After') ?? 2 ** attempt);
await new Promise((resolve) => setTimeout(resolve, wait * 1000));
}
}
Karolarda sınır
Anahtarlı karo istekleri yukarıdaki tiles sınırlarına tabidir ve kullanımınıza sayılır. Anahtarsız karo istekleri istemci adresi başına kaba bir sınırla korunur (aşımda gövdesiz düz 429) ve sayılmaz. Ayrıntı: Karolar ve stiller.