{"title":"Hastighetsgränser & kvoter","slug":"rate-limits","category":"api","summary":"Principer för hastighetsgränser i Synapse API — Bearer-header (obegränsat), ?key= (60/min), publika endpoints.","audience":["human","llm"],"tags":["api","rate-limits","quotas","throttling"],"difficulty":"beginner","updated":"2026-06-27","word_count":293,"read_minutes":1,"llm_context":"Mind Key (Authorization: Bearer header) → NO rate limit\nMind Key (?key= query param) → 60 req/min per IP\nJWT (Authorization: Bearer header) → NO rate limit\nPublic endpoints (/tools/*, /docs, /health, /endpoints) → NO rate limit\nRate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After\nRecommendation: ALWAYS use Authorization header. Use ?key= only for URL-only tools.\n","lang":"sv","translated":true,"requested_lang":"sv","content_markdown":"\n# Hastighetsgränser & kvoter\n\nSynapse har en enkel, förutsägbar princip för hastighetsgränser som utformats\nför att förhindra missbruk utan att vara i vägen för legitim användning.\n\n## Princip för hastighetsgränser\n\n| Autentiseringsmetod | Gräns | Omfattning |\n|-------------|-------|-------|\n| Mind Key (`Authorization: Bearer`) | **Ingen** | Per-mind |\n| Mind Key (`?key=`) | 60 req/min | Per-IP |\n| JWT (`Authorization: Bearer`) | **Ingen** | Per-användare |\n| Publika endpoints | **Ingen** | Global |\n\n> [!TIP]\n> **Använd alltid `Authorization: Bearer`-headern** när det är möjligt. Den har\n> ingen hastighetsgräns. Använd `?key=` endast för verktyg som inte kan sätta\n> egna headers.\n\n## Headers för hastighetsgränser\n\nNär ni använder `?key=`-autentisering inkluderar svar headers för hastighetsgräns:\n\n```\nX-RateLimit-Limit: 60\nX-RateLimit-Remaining: 42\nX-RateLimit-Reset: 1782567840\n```\n\nNär ni överskrider gränsen:\n\n```\nHTTP/1.1 429 Too Many Requests\nX-RateLimit-Limit: 60\nX-RateLimit-Remaining: 0\nRetry-After: 42\nContent-Type: application/json\n\n{\n  \"statusCode\": 429,\n  \"error\": \"Too Many Requests\",\n  \"message\": \"Rate limit exceeded. Use Authorization header for unlimited access.\"\n}\n```\n\n## När ni når en hastighetsgräns\n\nOm ni får en 429:\n\n1. **Byt till Authorization-header** (rekommenderas):\n   ```bash\n   # Don't: ?key=YOUR_MIND_KEY (60/min limit)\n   curl \".../memory/recall?key=YOUR_MIND_KEY\"\n   \n   # Do: Authorization header (unlimited)\n   curl -H \"Authorization: Bearer YOUR_MIND_KEY\" .../memory/recall\n   ```\n\n2. **Eller vänta `Retry-After` sekunder** och försök igen.\n\n## Varför ?key=-gränsen finns\n\nQueryparametern `?key=` är bekväm för URL-endast-verktyg (webbläsare,\n`open`-kommandon), men har säkerhets- och prestandakonsekvenser:\n\n- **Säkerhet:** Queryparametrar loggas i serverns åtkomstloggar,\n  webbläsarhistorik och Referer-headers. Begränsad användning minskar exponeringen.\n- **Prestanda:** Queryparameter-autentisering kräver en IP-baserad\n  hastighetsbegränsare (Redis-uppslag per begäran), vilket lägger till latens.\n  Header-autentisering hoppar över detta.\n- **Missbruksförebyggande:** En läckt `?key=`-URL skulle kunna delas och\n  överbelastas. IP-gränsen begränsar skadeomfånget.\n\n## Rekommenderade mönster\n\n### LLM-agenter\n\n```python\n# Always use header auth\nheaders = {\"Authorization\": f\"Bearer {MIND_KEY}\"}\nresponse = requests.get(f\"{URL}/memory/recall\", headers=headers)\n```\n\n### Webbläsarbaserade verktyg\n\nOm ert verktyg bara kan öppna URL:er:\n\n```bash\n# OK for occasional use (under 60/min)\nopen \"https://synapse.schaefer.zone/memory/recall?key=YOUR_MIND_KEY\"\n\n# For frequent use, switch to a tool that supports headers\ncurl -H \"Authorization: Bearer YOUR_MIND_KEY\" .../memory/recall\n```\n\n### MCP-server\n\nMCP-servrar använder alltid header-autentisering via miljövariabeln\n`SYNAPSE_MIND_KEY` — ingen hastighetsgräns gäller.\n\n### Massimport\n\nFör massåtgärder (t.ex. import av 1000 minnen), använd alltid header-autentisering.\nMassimport via `?key=` når hastighetsgränsen inom 1 minut.\n\n## Kvoter (Mind-nivå)\n\nDet finns för närvarande inga kvoter per mind för lagringsstorlek eller antal\nminnen. Alla gränser är på auth/IP-nivå, inte datanivå. Detta kan ändras i\nframtiden för rättvisa i miljöer med flera användare.\n\n## Övervaka er användning\n\n```bash\n# Check your current rate limit status (with ?key= auth)\ncurl -i \"https://synapse.schaefer.zone/memory/stats?key=YOUR_MIND_KEY\" | grep -i ratelimit\n\n# Output:\n# X-RateLimit-Limit: 60\n# X-RateLimit-Remaining: 58\n# X-RateLimit-Reset: 1782567840\n```\n\n## Nästa steg\n\n- [Autentisering](/docs/getting-started/authentication)\n- [Fel & felhantering](/docs/api/errors)\n","content_html":"<h1>Hastighetsgränser &amp; kvoter</h1>\n<p>Synapse har en enkel, förutsägbar princip för hastighetsgränser som utformats\nför att förhindra missbruk utan att vara i vägen för legitim användning.</p>\n<h2>Princip för hastighetsgränser</h2>\n<table>\n<thead>\n<tr>\n<th>Autentiseringsmetod</th>\n<th>Gräns</th>\n<th>Omfattning</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Mind Key (<code>Authorization: Bearer</code>)</td>\n<td><strong>Ingen</strong></td>\n<td>Per-mind</td>\n</tr>\n<tr>\n<td>Mind Key (<code>?key=</code>)</td>\n<td>60 req/min</td>\n<td>Per-IP</td>\n</tr>\n<tr>\n<td>JWT (<code>Authorization: Bearer</code>)</td>\n<td><strong>Ingen</strong></td>\n<td>Per-användare</td>\n</tr>\n<tr>\n<td>Publika endpoints</td>\n<td><strong>Ingen</strong></td>\n<td>Global</td>\n</tr>\n</tbody></table>\n<div class=\"callout callout-ok\">**Använd alltid `Authorization: Bearer`-headern** när det är möjligt. Den har\ningen hastighetsgräns. Använd `?key=` endast för verktyg som inte kan sätta\negna headers.</div><h2>Headers för hastighetsgränser</h2>\n<p>När ni använder <code>?key=</code>-autentisering inkluderar svar headers för hastighetsgräns:</p>\n<pre><code class=\"hljs language-plaintext\">X-RateLimit-Limit: 60\nX-RateLimit-Remaining: 42\nX-RateLimit-Reset: 1782567840</code></pre><p>När ni överskrider gränsen:</p>\n<pre><code class=\"hljs language-plaintext\">HTTP/1.1 429 Too Many Requests\nX-RateLimit-Limit: 60\nX-RateLimit-Remaining: 0\nRetry-After: 42\nContent-Type: application/json\n\n{\n  &quot;statusCode&quot;: 429,\n  &quot;error&quot;: &quot;Too Many Requests&quot;,\n  &quot;message&quot;: &quot;Rate limit exceeded. Use Authorization header for unlimited access.&quot;\n}</code></pre><h2>När ni når en hastighetsgräns</h2>\n<p>Om ni får en 429:</p>\n<ol>\n<li><p><strong>Byt till Authorization-header</strong> (rekommenderas):</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Don&#x27;t: ?key=YOUR_MIND_KEY (60/min limit)</span>\ncurl <span class=\"hljs-string\">&quot;.../memory/recall?key=YOUR_MIND_KEY&quot;</span>\n\n<span class=\"hljs-comment\"># Do: Authorization header (unlimited)</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> .../memory/recall</code></pre></li>\n<li><p><strong>Eller vänta <code>Retry-After</code> sekunder</strong> och försök igen.</p>\n</li>\n</ol>\n<h2>Varför ?key=-gränsen finns</h2>\n<p>Queryparametern <code>?key=</code> är bekväm för URL-endast-verktyg (webbläsare,\n<code>open</code>-kommandon), men har säkerhets- och prestandakonsekvenser:</p>\n<ul>\n<li><strong>Säkerhet:</strong> Queryparametrar loggas i serverns åtkomstloggar,\nwebbläsarhistorik och Referer-headers. Begränsad användning minskar exponeringen.</li>\n<li><strong>Prestanda:</strong> Queryparameter-autentisering kräver en IP-baserad\nhastighetsbegränsare (Redis-uppslag per begäran), vilket lägger till latens.\nHeader-autentisering hoppar över detta.</li>\n<li><strong>Missbruksförebyggande:</strong> En läckt <code>?key=</code>-URL skulle kunna delas och\növerbelastas. IP-gränsen begränsar skadeomfånget.</li>\n</ul>\n<h2>Rekommenderade mönster</h2>\n<h3>LLM-agenter</h3>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-comment\"># Always use header auth</span>\nheaders = {<span class=\"hljs-string\">&quot;Authorization&quot;</span>: <span class=\"hljs-string\">f&quot;Bearer <span class=\"hljs-subst\">{MIND_KEY}</span>&quot;</span>}\nresponse = requests.get(<span class=\"hljs-string\">f&quot;<span class=\"hljs-subst\">{URL}</span>/memory/recall&quot;</span>, headers=headers)</code></pre><h3>Webbläsarbaserade verktyg</h3>\n<p>Om ert verktyg bara kan öppna URL:er:</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># OK for occasional use (under 60/min)</span>\nopen <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/memory/recall?key=YOUR_MIND_KEY&quot;</span>\n\n<span class=\"hljs-comment\"># For frequent use, switch to a tool that supports headers</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> .../memory/recall</code></pre><h3>MCP-server</h3>\n<p>MCP-servrar använder alltid header-autentisering via miljövariabeln\n<code>SYNAPSE_MIND_KEY</code> — ingen hastighetsgräns gäller.</p>\n<h3>Massimport</h3>\n<p>För massåtgärder (t.ex. import av 1000 minnen), använd alltid header-autentisering.\nMassimport via <code>?key=</code> når hastighetsgränsen inom 1 minut.</p>\n<h2>Kvoter (Mind-nivå)</h2>\n<p>Det finns för närvarande inga kvoter per mind för lagringsstorlek eller antal\nminnen. Alla gränser är på auth/IP-nivå, inte datanivå. Detta kan ändras i\nframtiden för rättvisa i miljöer med flera användare.</p>\n<h2>Övervaka er användning</h2>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Check your current rate limit status (with ?key= auth)</span>\ncurl -i <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/memory/stats?key=YOUR_MIND_KEY&quot;</span> | grep -i ratelimit\n\n<span class=\"hljs-comment\"># Output:</span>\n<span class=\"hljs-comment\"># X-RateLimit-Limit: 60</span>\n<span class=\"hljs-comment\"># X-RateLimit-Remaining: 58</span>\n<span class=\"hljs-comment\"># X-RateLimit-Reset: 1782567840</span></code></pre><h2>Nästa steg</h2>\n<ul>\n<li><a href=\"/docs/getting-started/authentication\">Autentisering</a></li>\n<li><a href=\"/docs/api/errors\">Fel &amp; felhantering</a></li>\n</ul>\n","urls":{"html":"/docs/api/rate-limits","text":"/docs/api/rate-limits?format=text","json":"/docs/api/rate-limits?format=json","llm":"/docs/api/rate-limits?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}