Rate-Limits
Die fepli API begrenzt, wie viele Anfragen sie in einer bestimmten Zeit annimmt. So kann ein einzelnes außer Kontrolle geratenes Skript das Programm einer Organisation nicht für alle anderen ausbremsen.
Die Limits
| Aufrufer | Gezählt je | Burst | Auffüllung |
|---|---|---|---|
| Mit Token | Person oder Service-Account | 300 Anfragen | 100 Anfragen pro Minute |
| Ohne Token | IP-Adresse | 5 Anfragen | 5 Anfragen pro Stunde |
| Mit öffentlichem Schlüssel | Schlüssel | 600 Anfragen | 300 Anfragen pro Minute |
Alle Limits funktionieren wie ein Eimer voller Tokens. Jede Anfrage nimmt eines heraus. Der Eimer füllt sich mit der angegebenen Rate wieder auf, höchstens bis zur Burst-Größe. Mit einem Token senden Sie 300 Anfragen unmittelbar nacheinander und danach weiter 100 pro Minute. Das reicht für eine Integration, die eine Saison synchronisiert, oder für eine Auswertung, die alle Anmeldungen einer Saison durchgeht.
Das Limit mit Token gilt je Person oder Service-Account, nicht je Token: Alle Tokens desselben Service-Accounts teilen sich einen Eimer.
Das Limit für anonyme Anfragen ist bewusst knapp. Wenn Sie Angebote auf einer öffentlichen Website zeigen, rufen Sie die API nicht ohne Schlüssel aus den Browsern Ihrer Besucher:innen auf. Laden Sie die Angebote auf Ihrem Server, legen Sie sie im Cache ab und aktualisieren Sie den Cache alle paar Stunden; siehe Angebote auf Ihrer Website. Oder rufen Sie die API mit einem öffentlichen Schlüssel aus dem Browser auf. So machen es die Bausteine: Alle Besucher:innen Ihrer Website teilen sich dann das Kontingent des Schlüssels.
Wenn Sie das Limit erreichen
Eine Anfrage über dem Limit weist die API mit dem Status 429 Too Many Requests ab. Die Antwort enthält keinen Retry-After-Header. Warten Sie deshalb und wiederholen Sie die Anfrage mit zunehmendem Abstand. Mit einem Token genügt meist eine Pause von wenigen Sekunden: Der Eimer füllt sich fortlaufend wieder auf, nicht einmal pro Minute.
Im Limit bleiben
- Fordern Sie größere Seiten an. Mit
itemsPerPage=200brauchen Sie ein Sechstel der Anfragen, die der Standardwert 30 braucht. Siehe Paginierung. - Laden Sie nur, was sich geändert hat. Die meisten Listen akzeptieren
modifiedSinceodercreatedSince. - Nutzen Sie Referenzen. Antworten enthalten Name und UUID verknüpfter Datensätze, oft brauchen Sie deshalb keine zweite Anfrage.
- Nutzen Sie die Suche. Ein Aufruf von
/searchersetzt die Suche in fünf Listen. - Legen Sie öffentliche Daten im Cache ab. Angebote ändern sich höchstens einige Male am Tag.