OSIR · The AI-Native Domain Registrar

Help Center / api

Ratenbegrenzungen

Ratenbegrenzungen

Unsere API verwendet Ratenbegrenzungen, um eine faire Nutzung und Stabilität zu gewährleisten. Erfahren Sie, wie die Begrenzungen funktionieren und wie Sie damit umgehen.

Standardbegrenzungen

Tarif Anfragen/Minute Anfragen/Tag
Free 60 1.000
Starter 300 10.000
Business 1.000 100.000
Enterprise Individuell Individuell

Header für Ratenbegrenzungen

Jede Antwort enthält Informationen zur Ratenbegrenzung:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640000000
Header Beschreibung
X-RateLimit-Limit Maximale Anfragen pro Zeitfenster
X-RateLimit-Remaining Verbleibende Anfragen im Zeitfenster
X-RateLimit-Reset Unix-Zeitstempel, wann das Limit zurückgesetzt wird

Endpunktspezifische Begrenzungen

Einige Endpunkte haben niedrigere Begrenzungen:

Endpunkt Limit Grund
Domain-Verfügbarkeitsprüfung 30/min Externe API-Aufrufe
VPS erstellen 10/min Ressourcenintensiv
Massenoperationen 5/min Hohe Verarbeitungslast

Mit Ratenbegrenzungen umgehen

Header prüfen

const response = await fetch('https://api.osir.com/v1/domains')
const remaining = response.headers.get('X-RateLimit-Remaining')

if (remaining < 10) {
  // Anfragen verlangsamen
}

429-Fehler behandeln

async function fetchWithRetry(url, options, retries = 3) {
  const response = await fetch(url, options)

  if (response.status === 429 && retries > 0) {
    const retryAfter = response.headers.get('Retry-After') || 60
    await sleep(retryAfter * 1000)
    return fetchWithRetry(url, options, retries - 1)
  }

  return response
}

429-Antwort

Bei Erreichen der Ratenbegrenzung:

{
  "error": "rate_limit_exceeded",
  "message": "Too many requests. Please retry after 60 seconds.",
  "retry_after": 60
}

Bewährte Vorgehensweisen

1. Exponentielles Backoff implementieren

async function backoff(attempt) {
  const delay = Math.min(1000 * Math.pow(2, attempt), 30000)
  await sleep(delay)
}

2. Caching verwenden

// Antworten zwischenspeichern, die sich selten ändern
const cache = new Map()
const CACHE_TTL = 60000 // 1 Minute

async function getCachedDomains() {
  if (cache.has('domains') && cache.get('domains').expires > Date.now()) {
    return cache.get('domains').data
  }

  const data = await fetchDomains()
  cache.set('domains', { data, expires: Date.now() + CACHE_TTL })
  return data
}

3. Anfragen bündeln

Anstelle von:

// Schlecht: 100 Anfragen
for (const domain of domains) {
  await checkDomain(domain)
}

Verwenden Sie:

// Gut: 1 Anfrage
await checkDomains(domains) // Massen-Endpunkt

Begrenzungen erhöhen

Benötigen Sie höhere Begrenzungen?

  1. Aktualisieren Sie Ihren Tarif
  2. Kontaktieren Sie den Vertrieb für Enterprise-Preise
  3. Bewerben Sie sich für das Partnerprogramm