{"title":"Limity żądań i przydziały","slug":"rate-limits","category":"api","summary":"Polityka limitów żądań dla API Synapse — nagłówek Bearer (bez limitu), ?key= (60/min), endpointy publiczne.","audience":["human","llm"],"tags":["api","rate-limits","quotas","throttling"],"difficulty":"beginner","updated":"2026-06-27","word_count":336,"read_minutes":2,"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":"pl","translated":true,"requested_lang":"pl","content_markdown":"\n# Limity żądań i przydziały\n\nSynapse posiada prostą i przewidywalną politykę limitów żądań, zaprojektowaną w\ncelu zapobiegania nadużyciom, nie blokując jednocześnie prawidłowego użytku.\n\n## Polityka limitów żądań\n\n| Metoda autoryzacji | Limit | Zakres |\n|-------------|-------|-------|\n| Mind Key (`Authorization: Bearer`) | **Brak** | Na umysł |\n| Mind Key (`?key=`) | 60 żądań/min | Na IP |\n| JWT (`Authorization: Bearer`) | **Brak** | Na użytkownika |\n| Endpointy publiczne | **Brak** | Globalny |\n\n> [!TIP]\n> **Należy zawsze używać nagłówka `Authorization: Bearer`, gdy to możliwe.** Nie\n> ma on limitu żądań. `?key=` należy stosować tylko w narzędziach, które nie\n> potrafią ustawiać własnych nagłówków.\n\n## Nagłówki limitu żądań\n\nGdy używana jest autoryzacja `?key=`, odpowiedzi zawierają nagłówki limitu:\n\n```\nX-RateLimit-Limit: 60\nX-RateLimit-Remaining: 42\nX-RateLimit-Reset: 1782567840\n```\n\nPo przekroczeniu limitu:\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## Po osiągnięciu limitu żądań\n\nW przypadku otrzymania 429:\n\n1. **Przełączyć się na nagłówek Authorization** (zalecane):\n   ```bash\n   # Nie: ?key=YOUR_MIND_KEY (limit 60/min)\n   curl \".../memory/recall?key=YOUR_MIND_KEY\"\n   \n   # Tak: nagłówek Authorization (bez limitu)\n   curl -H \"Authorization: Bearer YOUR_MIND_KEY\" .../memory/recall\n   ```\n\n2. **Lub odczekać `Retry-After` sekund** i ponowić żądanie.\n\n## Dlaczego istnieje limit dla `?key=`\n\nParametr zapytania `?key=` jest wygodny dla narzędzi opartych wyłącznie na URL\n(przeglądarki, polecenia `open`), ale niesie ze sobą implikacje bezpieczeństwa i\nwydajności:\n\n- **Bezpieczeństwo:** Parametry zapytania są rejestrowane w logach dostępu\n  serwera, historii przeglądarki i nagłówkach Referer. Ograniczenie użycia\n  zmniejsza ekspozycję.\n- **Wydajność:** Autoryzacja parametrem zapytania wymaga ogranicznika opartego na\n  IP (odpytanie Redis przy każdym żądaniu), co dodaje opóźnienie. Autoryzacja\n  nagłówkiem pomija ten krok.\n- **Zapobieganie nadużyciom:** Wyciekły URL `?key=` mógłby zostać udostępniony i\n  masowo wywoływany. Limit IP ogranicza obszar rażenia.\n\n## Zalecane wzorce\n\n### Agenci LLM\n\n```python\n# Zawsze używać autoryzacji nagłówkiem\nheaders = {\"Authorization\": f\"Bearer {MIND_KEY}\"}\nresponse = requests.get(f\"{URL}/memory/recall\", headers=headers)\n```\n\n### Narzędzia oparte na przeglądarce\n\nJeśli narzędzie potrafi tylko otwierać URL-e:\n\n```bash\n# Dopuszczalne do okazjonalnego użycia (poniżej 60/min)\nopen \"https://synapse.schaefer.zone/memory/recall?key=YOUR_MIND_KEY\"\n\n# Do częstego użycia przełączyć się na narzędzie obsługujące nagłówki\ncurl -H \"Authorization: Bearer YOUR_MIND_KEY\" .../memory/recall\n```\n\n### Serwer MCP\n\nSerwery MCP zawsze korzystają z autoryzacji nagłówkiem przez zmienną środowiskową\n`SYNAPSE_MIND_KEY` — limit nie ma zastosowania.\n\n### Importy masowe\n\nW przypadku operacji masowych (np. import 1000 wspomnień) zawsze należy używać\nautoryzacji nagłówkiem. Importy przez `?key=` osiągną limit w ciągu minuty.\n\n## Przydziały (poziom umysłu)\n\nObecnie nie ma przydziałów na poziomie umysłu dotyczących rozmiaru pamięci lub\nliczby wspomnień. Wszystkie limity znajdują się na poziomie autoryzacji/IP, a nie\ndanych. Może się to zmienić w przyszłości w celu sprawiedliwego współdzielenia\nw środowisku wielodostępnym.\n\n## Monitorowanie użycia\n\n```bash\n# Sprawdzenie aktualnego statusu limitu (z autoryzacją ?key=)\ncurl -i \"https://synapse.schaefer.zone/memory/stats?key=YOUR_MIND_KEY\" | grep -i ratelimit\n\n# Wynik:\n# X-RateLimit-Limit: 60\n# X-RateLimit-Remaining: 58\n# X-RateLimit-Reset: 1782567840\n```\n\n## Następne kroki\n\n- [Autoryzacja](/docs/getting-started/authentication)\n- [Błędy i ich obsługa](/docs/api/errors)\n","content_html":"<h1>Limity żądań i przydziały</h1>\n<p>Synapse posiada prostą i przewidywalną politykę limitów żądań, zaprojektowaną w\ncelu zapobiegania nadużyciom, nie blokując jednocześnie prawidłowego użytku.</p>\n<h2>Polityka limitów żądań</h2>\n<table>\n<thead>\n<tr>\n<th>Metoda autoryzacji</th>\n<th>Limit</th>\n<th>Zakres</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Mind Key (<code>Authorization: Bearer</code>)</td>\n<td><strong>Brak</strong></td>\n<td>Na umysł</td>\n</tr>\n<tr>\n<td>Mind Key (<code>?key=</code>)</td>\n<td>60 żądań/min</td>\n<td>Na IP</td>\n</tr>\n<tr>\n<td>JWT (<code>Authorization: Bearer</code>)</td>\n<td><strong>Brak</strong></td>\n<td>Na użytkownika</td>\n</tr>\n<tr>\n<td>Endpointy publiczne</td>\n<td><strong>Brak</strong></td>\n<td>Globalny</td>\n</tr>\n</tbody></table>\n<div class=\"callout callout-ok\">**Należy zawsze używać nagłówka `Authorization: Bearer`, gdy to możliwe.** Nie\nma on limitu żądań. `?key=` należy stosować tylko w narzędziach, które nie\npotrafią ustawiać własnych nagłówków.</div><h2>Nagłówki limitu żądań</h2>\n<p>Gdy używana jest autoryzacja <code>?key=</code>, odpowiedzi zawierają nagłówki limitu:</p>\n<pre><code class=\"hljs language-plaintext\">X-RateLimit-Limit: 60\nX-RateLimit-Remaining: 42\nX-RateLimit-Reset: 1782567840</code></pre><p>Po przekroczeniu limitu:</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>Po osiągnięciu limitu żądań</h2>\n<p>W przypadku otrzymania 429:</p>\n<ol>\n<li><p><strong>Przełączyć się na nagłówek Authorization</strong> (zalecane):</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Nie: ?key=YOUR_MIND_KEY (limit 60/min)</span>\ncurl <span class=\"hljs-string\">&quot;.../memory/recall?key=YOUR_MIND_KEY&quot;</span>\n\n<span class=\"hljs-comment\"># Tak: nagłówek Authorization (bez limitu)</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> .../memory/recall</code></pre></li>\n<li><p><strong>Lub odczekać <code>Retry-After</code> sekund</strong> i ponowić żądanie.</p>\n</li>\n</ol>\n<h2>Dlaczego istnieje limit dla <code>?key=</code></h2>\n<p>Parametr zapytania <code>?key=</code> jest wygodny dla narzędzi opartych wyłącznie na URL\n(przeglądarki, polecenia <code>open</code>), ale niesie ze sobą implikacje bezpieczeństwa i\nwydajności:</p>\n<ul>\n<li><strong>Bezpieczeństwo:</strong> Parametry zapytania są rejestrowane w logach dostępu\nserwera, historii przeglądarki i nagłówkach Referer. Ograniczenie użycia\nzmniejsza ekspozycję.</li>\n<li><strong>Wydajność:</strong> Autoryzacja parametrem zapytania wymaga ogranicznika opartego na\nIP (odpytanie Redis przy każdym żądaniu), co dodaje opóźnienie. Autoryzacja\nnagłówkiem pomija ten krok.</li>\n<li><strong>Zapobieganie nadużyciom:</strong> Wyciekły URL <code>?key=</code> mógłby zostać udostępniony i\nmasowo wywoływany. Limit IP ogranicza obszar rażenia.</li>\n</ul>\n<h2>Zalecane wzorce</h2>\n<h3>Agenci LLM</h3>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-comment\"># Zawsze używać autoryzacji nagłówkiem</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>Narzędzia oparte na przeglądarce</h3>\n<p>Jeśli narzędzie potrafi tylko otwierać URL-e:</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Dopuszczalne do okazjonalnego użycia (poniżej 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\"># Do częstego użycia przełączyć się na narzędzie obsługujące nagłówki</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> .../memory/recall</code></pre><h3>Serwer MCP</h3>\n<p>Serwery MCP zawsze korzystają z autoryzacji nagłówkiem przez zmienną środowiskową\n<code>SYNAPSE_MIND_KEY</code> — limit nie ma zastosowania.</p>\n<h3>Importy masowe</h3>\n<p>W przypadku operacji masowych (np. import 1000 wspomnień) zawsze należy używać\nautoryzacji nagłówkiem. Importy przez <code>?key=</code> osiągną limit w ciągu minuty.</p>\n<h2>Przydziały (poziom umysłu)</h2>\n<p>Obecnie nie ma przydziałów na poziomie umysłu dotyczących rozmiaru pamięci lub\nliczby wspomnień. Wszystkie limity znajdują się na poziomie autoryzacji/IP, a nie\ndanych. Może się to zmienić w przyszłości w celu sprawiedliwego współdzielenia\nw środowisku wielodostępnym.</p>\n<h2>Monitorowanie użycia</h2>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Sprawdzenie aktualnego statusu limitu (z autoryzacją ?key=)</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\"># Wynik:</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>Następne kroki</h2>\n<ul>\n<li><a href=\"/docs/getting-started/authentication\">Autoryzacja</a></li>\n<li><a href=\"/docs/api/errors\">Błędy i ich obsługa</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"]}