Başlarken
Hız Limitleri

Hız Limitleri

Platform hız sınırlamayı iki katmanda uygular:

KatmanNeredeNeyi korur
Kenar (firewall)İstek API'ye ulaşmadan önceHacimsel kötüye kullanım, kaba kuvvet, dağıtık taşkın
UygulamaEndpoint bazlı, kimlik doğrulandıktan sonraHassas işlemlerin kendine özgü eşikleri

Kenar katmanı taban korumadır ve kurulum bazında ayarlanır. Uygulama katmanı ise işlemin doğasına göre ayrı ayrı sınırlanır — aşağıda hepsi yazılı.

429 yanıtı

Limit aşıldığında standart hata zarfı döner ve yanıt Retry-After başlığı taşır:

HTTP/1.1 429 Too Many Requests
Retry-After: 47
{
  "status": "failure",
  "code": "RATE_LIMITED",
  "statusCode": 429,
  "requestId": "req_7f3d9c1a4b2e"
}
⚠️

Retry-After saniyedir ve ona uyun. Kendi geri çekilme sürenizi uydurmayın — sunucu pencerenin ne zaman sıfırlanacağını biliyor, siz bilmiyorsunuz. Daha erken denemek yalnız sayacı besler.

Yüzeye göre üç kod dönebilir: RATE_LIMITED · RATE_LIMIT_EXCEEDED · ACTIVATION_RATE_LIMITED. Üçü de 429 taşır; ayrımı loglarken işinize yarar.

Endpoint bazlı limitler

Identity SDK

Pencere 60 saniye:

UçLimit
analyze30 istek/dk
Tekil olay120 istek/dk
Toplu olay (events/batch)20 istek/dk
Uyumluluk kontrolü60 istek/dk

Toplu ucunuz limiti düşüktür çünkü istek başına çok kayıt taşır. Yüksek hacimde tekil olay göndermek yerine toplu ucu kullanın — 20 toplu istek, 120 tekil istekten çok daha fazla olay taşır.

Cüzdan portalı

Kimlik doğrulama yüzeyi, kaba kuvvete karşı hem IP hem telefon bazında sınırlanır:

İşlemIP başınaTelefon başına
Kayıt3 / saat3 / 5 dk
Giriş10 / dk · 40 / saat5 / dk
OTP doğrulama10 / dk—
OTP yeniden gönderim5 / saat—

İki eksenli olması kasıtlıdır. Yalnız IP'ye bakmak, IP değiştiren bir saldırganı durdurmaz; yalnız telefona bakmak, çok sayıda numara deneyen birini durdurmaz. İkisi birlikte her iki deseni de kapatır.

POS terminal aktivasyonu

Pencere 5 dakika:

EksenLimit
IP başına10 deneme
Seri numarası başına5 deneme

Seri numarası ekseni, geçerli bir terminalin kimliğini tahmin etmeye çalışan denemeleri sınırlar.

Banka hesapları — şimdi yenile

Pencere 60 saniye:

UçLimit
POST /api/v1/bank-connect/accounts/{accountId}/syncAPI anahtarı başına 6 istek/dk

429 yanıtı RATE_LIMITED kodunu, Retry-After başlığını ve details.retryAfterSeconds alanını taşır. Okuma uçları bu limite sayılmaz. → Banka Hesapları › Sınırlar

Doğru yeniden deneme

async function callWithBackoff(fn: () => Promise<Response>) {
  for (let attempt = 0; attempt < 4; attempt++) {
    const res = await fn();
    if (res.status !== 429) return res;
 
    // Sunucunun söylediği süreye uyun; yoksa üstel geri çekilin
    const retryAfter = Number(res.headers.get('retry-after'));
    const waitSec = Number.isFinite(retryAfter) && retryAfter > 0
      ? retryAfter
      : 2 ** attempt;
 
    await new Promise(r => setTimeout(r, waitSec * 1000));
  }
  throw new Error('rate limit: deneme hakkı tükendi');
}
🚫

429'u sonsuz döngüde yeniden denemeyin. Bir üst sınır koyun ve sonra hatayı yukarı taşıyın. Sınırsız yeniden deneme, geçici bir yavaşlamayı kalıcı bir kesintiye çevirir — hem sizde hem bizde.

Limite takılmamak için

  • Toplu uçları kullanın. Olay beslerken events/batch, tekil çağrıdan kat kat verimlidir.
  • Token'ı önbelleğe alın. Her çağrıda token basmak gereksiz istek üretir. → Kimlik Doğrulama
  • Sayfalarken limiti büyütün. 100'lük sayfa, 25'lik sayfadan dört kat az istek demektir. → Sayfalama
  • Webhook'ları yoklayın, sorgulamayın. Durum değişikliğini öğrenmek için döngüyle sormak yerine webhook alın. → Webhook'lar
⚠️

Beklediğiniz hacim yukarıdaki limitlerin üstündeyse önceden haber verin — limite çarpıp keşfetmek yerine. İletişim: [email protected]

İlgili