Rate Limits & Kontingente
Rate-Limit-Richtlinien für die Synapse-API — Bearer-Header (unbegrenzt), ?key= (60/min), öffentliche Endpunkte.
Rate Limits & Kontingente
Synapse hat eine einfache, vorhersehbare Rate-Limit-Richtlinie, die Missbrauch verhindern soll, ohne legitime Nutzung auszubremsen.
Rate-Limit-Richtlinie
| Auth-Methode | Limit | Scope |
|---|---|---|
Mind Key (Authorization: Bearer) |
Keins | Pro-Mind |
Mind Key (?key=) |
60 req/min | Pro-IP |
JWT (Authorization: Bearer) |
Keins | Pro-Nutzer |
| Öffentliche Endpunkte | Keins | Global |
Rate-Limit-Header
Wenn du ?key=-Auth nutzt, enthalten Antworten Rate-Limit-Header:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1782567840Wenn du das Limit überschreitest:
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
Retry-After: 42
Content-Type: application/json
{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Rate limit exceeded. Use Authorization header for unlimited access."
}Wenn du ein Rate Limit triffst
Bei einer 429:
Wechsle zum Authorization-Header (empfohlen):
# Don't: ?key=YOUR_MIND_KEY (60/min limit) curl ".../memory/recall?key=YOUR_MIND_KEY" # Do: Authorization header (unlimited) curl -H "Authorization: Bearer YOUR_MIND_KEY" .../memory/recallOder warte
Retry-AfterSekunden und versuche es erneut.
Warum das ?key=-Limit existiert
Der ?key=-Query-Parameter ist praktisch für reine URL-Tools (Browser,
open-Befehle), hat aber Sicherheits- und Performance-Auswirkungen:
- Sicherheit: Query-Parameter werden in Server-Access-Logs, Browser-Verlauf und Referer-Headern protokolliert. Eine Begrenzung reduziert die Exposition.
- Performance: Query-Parameter-Auth erfordert einen IP-basierten Rate-Limiter (Redis-Lookup pro Anfrage), was Latenz erzeugt. Header-Auth umgeht das.
- Missbrauchsvermeidung: Eine geleakte
?key=-URL könnte geteilt und abgefeuert werden. Das IP-Limit begrenzt den Schadensradius.
Empfohlene Patterns
LLM-Agenten
# Always use header auth
headers = {"Authorization": f"Bearer {MIND_KEY}"}
response = requests.get(f"{URL}/memory/recall", headers=headers)Browserbasierte Tools
Wenn dein Tool nur URLs öffnen kann:
# OK for occasional use (under 60/min)
open "https://synapse.schaefer.zone/memory/recall?key=YOUR_MIND_KEY"
# For frequent use, switch to a tool that supports headers
curl -H "Authorization: Bearer YOUR_MIND_KEY" .../memory/recallMCP-Server
MCP-Server verwenden immer Header-Auth via SYNAPSE_MIND_KEY-Env-Var — kein
Rate Limit greift.
Bulk-Importe
Für Bulk-Operationen (z. B. 1000 Memories importieren) verwende immer Header-Auth.
Bulk-Importe via ?key= erreichen das Limit innerhalb einer Minute.
Kontingente (Mind-Ebene)
Aktuell gibt es keine Mind-spezifischen Kontingente für Speichergröße oder Memory-Anzahl. Alle Limits sind auf Auth/IP-Ebene, nicht auf Datenebene. Das kann sich in Zukunft für Multi-Tenant-Fairness ändern.
Eigene Nutzung beobachten
# Check your current rate limit status (with ?key= auth)
curl -i "https://synapse.schaefer.zone/memory/stats?key=YOUR_MIND_KEY" | grep -i ratelimit
# Output:
# X-RateLimit-Limit: 60
# X-RateLimit-Remaining: 58
# X-RateLimit-Reset: 1782567840