Skip to main content
Flextell, tüm API çağrılarını sizin (kullanıcının) kimliği üzerinden sınırlar. Bir pencereyi aştığınızda 429 Too Many Requests yanıtı alırsınız.

Limitler

Uç grubuLimit
Genel API (/api/v1/*)Kullanıcı başına dakikada 60 istek (yapılandırılabilir)
Hassas hesap işlemleri — parola değiştirme, 2FA aç/kapat, oturum sonlandırmaDakikada 5 istek
2FA doğrulama (/v1/account/two-factor/confirm)Dakikada 3 istek
Genel API limiti Flextell’in tarafında yapılandırılabilir bir değerdir (varsayılan: 60/dk). Yüksek hacimli entegrasyonlarınız için limit yükseltilmesini istemek üzere destek ekibiyle iletişime geçebilirsiniz. Hassas ve 2FA limitleri güvenlik nedeniyle sabittir.

Kim sınırlanır?

Rate limit, authentice olmuş kullanıcının ID’si üzerinden uygulanır — client_id üzerinden değil. Yani aynı kullanıcı birden fazla uygulamaya yetki verirse, kullanıcının toplam istekleri sınırlanır, her uygulama ayrı kota almaz. Henüz oturum açmamış isteklerde (ör. OAuth token değişimi) limit IP başına uygulanır.

429 yanıtı

{
  "message": "Too many requests."
}
Yanıtla birlikte gelen header’lar:
HeaderAnlam
X-RateLimit-LimitPencerenizde izin verilen toplam istek sayısı
X-RateLimit-RemainingPencerede kalan istek kotası
Retry-AfterYeniden denemeden önce beklemeniz gereken saniye sayısı

Doğru yeniden deneme (retry) örüntüsü

429 aldığınızda:
  1. Retry-After header’ını okuyun.
  2. O kadar saniye bekleyin.
  3. Aynı isteği tekrar deneyin.
Eğer Retry-After yoksa exponential backoff kullanın: 1s, 2s, 4s, 8s... en fazla birkaç deneme.
async function withRetry(fn, maxAttempts = 5) {
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
    const res = await fn();

    if (res.status !== 429) {
      return res;
    }

    const retryAfter = Number(res.headers.get("Retry-After")) || 2 ** attempt;
    await new Promise((r) => setTimeout(r, retryAfter * 1000));
  }
  throw new Error("Rate limit: giving up after max attempts");
}
429 aldığınızda sonsuz döngüde yeniden denemeyin. Bir üst sınır koyun ve kullanıcıya bilgilendirme gösterin.

Limiti zorlamamak için

  • Batch okuyun. 50 hastayı GET /customers ile bir kerede çekin, 50 ayrı GET /customers/{id} atmaktan vazgeçin.
  • Cache’leyin. Nadiren değişen veriler (doktorlar, tedaviler, tenant listesi) için saatlerce cache makul.
  • Webhook / realtime kullanın. Yeni mesaj veya randevu değişikliği için polling yerine Realtime kanallarını dinleyin.
  • Paralelliği sınırlayın. Bir seferde en fazla 5–10 eşzamanlı istek yeterli olacaktır.

İpucu: kendi rate-limit monitoringiniz

Her yanıtta X-RateLimit-Remaining değerini loglayıp düşüşleri izleyin. Eşik (ör. < 10) altına düşerse ilgili entegrasyonu geçici olarak yavaşlatın.