Ana içeriğe geç

Rate Limiting

Paylox API, kötüye kullanımı önlemek ve tüm kullanıcılara adil hizmet sunmak için rate limiting uygular.

Limitler

Endpoint GrubuLimitPencere
Session oluşturma100 istekDakika
Ödeme işlemleri60 istekDakika
Durum sorgulama300 istekDakika
BIN / Taksit sorgulama200 istekDakika
Genel (tüm endpoint'ler)1000 istekDakika

Rate Limit Aşıldığında

HTTP 429 yanıtı döner:

{
"detail": "Rate limit exceeded. Try again in 30 seconds."
}

Yanıt header'ları:

HeaderAçıklama
X-RateLimit-LimitToplam izin verilen istek sayısı
X-RateLimit-RemainingKalan istek sayısı
X-RateLimit-ResetLimitin sıfırlanacağı zaman (Unix timestamp)
Retry-AfterTekrar denemeden önce beklenecek süre (saniye)

Retry Stratejisi

Rate limit aşıldığında exponential backoff uygulayın:

async function requestWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);

if (response.status === 429) {
const retryAfter = parseInt(response.headers.get("Retry-After") || "5");
await new Promise(r => setTimeout(r, retryAfter * 1000));
continue;
}

return response;
}
throw new Error("Rate limit exceeded after max retries");
}
import time
import requests

def request_with_retry(url, json_data, max_retries=3):
for i in range(max_retries):
response = requests.post(url, json=json_data)

if response.status_code == 429:
retry_after = int(response.headers.get("Retry-After", 5))
time.sleep(retry_after)
continue

return response

raise Exception("Rate limit exceeded after max retries")

Best Practices

UygulamaAçıklama
Cache kullanınBIN ve taksit sorgulama sonuçlarını kısa süreliğine cache'leyin
Batch işlemlerMümkünse istekleri gruplayın
Retry-After'a uyunHeader'daki bekleme süresine uyun
Monitoring429 yanıtlarını izleyin ve gerekirse limit artışı talep edin
ipucu

İş hacminiz mevcut limitleri aşıyorsa, [email protected] adresine ulaşarak limit artışı talep edebilirsiniz.