Flavoso APIGrundlagenAnfragegrenzen
Anfragegrenzen
120 Anfragen je Minute und Verbindung. Jede Antwort sagt, wie viel noch übrig ist; darüber kommt 429 mit Retry-After.
Die Grenze
Jede Verbindung darf 120 Anfragen pro Minute stellen. Die Grenze gilt je Verbindung, also je Betrieb: eine App mit vielen Betrieben hat für jeden ein eigenes Kontingent. Das Fenster ist 60 Sekunden lang und beginnt mit der ersten Anfrage. GET /me nennt die Grenze unter rate_limit.
Wer alle zehn Sekunden nach Bestellungen fragt und dazwischen Stände meldet, kommt nie in die Nähe.
Kopfzeilen
| Kopf | Bedeutung |
|---|---|
RateLimit-Limit | Anfragen je Fenster: 120. |
RateLimit-Remaining | Was im laufenden Fenster noch übrig ist. |
RateLimit-Reset | Sekunden, bis das Fenster neu beginnt. |
Retry-After | Nur bei 429: Sekunden bis zum nächsten Versuch. |
HTTP/1.1 200 OK
RateLimit-Limit: 120
RateLimit-Remaining: 3
RateLimit-Reset: 17Warten und wiederholen
Bei 429 rate_limited wartest du Retry-After Sekunden und schickst dieselbe Anfrage noch einmal. Steht RateLimit-Remaining auf 0, wartest du schon vorher bis zum RateLimit-Reset. Führe die Wartezeit je Verbindung, nicht für deine ganze App.
// One queue per connection: the limit counts per connection (= per restaurant).
const pausedUntil = new Map(); // connection id → time
export async function send(conn, request) {
const wait = (pausedUntil.get(conn.id) ?? 0) - Date.now();
if (wait > 0) await new Promise((r) => setTimeout(r, wait));
const res = await request();
const remaining = Number(res.headers.get("ratelimit-remaining"));
const reset = Number(res.headers.get("ratelimit-reset"));
if (res.status === 429) {
pausedUntil.set(conn.id, Date.now() + Number(res.headers.get("retry-after") ?? 1) * 1000);
return send(conn, request); // the same request again, after the pause
}
if (remaining === 0 && reset > 0) pausedUntil.set(conn.id, Date.now() + reset * 1000);
return res;
}Sparsam anfragen
- Webhooks oder GET /events statt ständiger Abfragen.
updated_sincestatt die ganze Liste neu zu holen.PUT /menuundPOST /menu/availability(bis 500 Einträge) statt hunderter einzelnerPATCH.- Die Speisekarte einmal lesen und danach den
menu.*-Ereignissen folgen.
Fehlgeschlagene Anmeldungen
Anfragen mit einem Token, das Flavoso nicht kennt, oder ohne Token zählen zusätzlich je IP-Adresse. Kommen von einer Adresse mehr als 30 in der Minute, antwortet Flavoso mit 429 statt 401. Ein abgelaufenes oder widerrufenes Token von dir zählt nicht: es bekommt immer 401, damit du es erneuern kannst, auch für viele Betriebe auf einmal. Wer viele Betriebe von einem Server aus bedient, markiert eine Verbindung als getrennt, sobald auf ein 401 beim Erneuern invalid_grant folgt, statt es weiter zu versuchen.
Der Token-Endpunkt hat eigene Grenzen; dort heißt die Antwort 429 temporarily_unavailable mit Retry-After.
Etwas unklar geblieben? Schreib an support@flavoso.com und nenne die Kennung aus X-Request-Id. Damit finden wir deine Anfrage im Protokoll.