{"title":"Limites de débit & quotas","slug":"rate-limits","category":"api","summary":"Politique de limites de débit pour l'API Synapse — en-tête Bearer (illimité), ?key= (60/min), endpoints publics.","audience":["human","llm"],"tags":["api","rate-limits","quotas","throttling"],"difficulty":"beginner","updated":"2026-06-27","word_count":405,"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":"fr","translated":true,"requested_lang":"fr","content_markdown":"\n# Limites de débit & quotas\n\nSynapse a une politique de limites de débit simple et prévisible, conçue pour\nprévenir les abus sans gêner les usages légitimes.\n\n## Politique de limites de débit\n\n| Méthode d'auth | Limite | Portée |\n|-------------|-------|-------|\n| Mind Key (`Authorization: Bearer`) | **Aucune** | Par mind |\n| Mind Key (`?key=`) | 60 req/min | Par IP |\n| JWT (`Authorization: Bearer`) | **Aucune** | Par utilisateur |\n| Endpoints publics | **Aucune** | Globale |\n\n> [!TIP]\n> **Utilisez toujours l'en-tête `Authorization: Bearer`** lorsque c'est possible. Il\n> n'a aucune limite de débit. N'utilisez `?key=` que pour les outils qui ne peuvent\n> pas définir d'en-têtes personnalisés.\n\n## En-têtes de limite de débit\n\nLorsque vous utilisez l'authentification `?key=`, les réponses incluent des en-têtes\nde limite de débit :\n\n```\nX-RateLimit-Limit: 60\nX-RateLimit-Remaining: 42\nX-RateLimit-Reset: 1782567840\n```\n\nLorsque vous dépassez la limite :\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## Que faire en cas de limite de débit\n\nSi vous obtenez un 429 :\n\n1. **Passez à l'en-tête Authorization** (recommandé) :\n   ```bash\n   # À éviter : ?key=YOUR_MIND_KEY (limite 60/min)\n   curl \".../memory/recall?key=YOUR_MIND_KEY\"\n   \n   # À faire : en-tête Authorization (illimité)\n   curl -H \"Authorization: Bearer YOUR_MIND_KEY\" .../memory/recall\n   ```\n\n2. **Ou attendez `Retry-After` secondes** et réessayez.\n\n## Pourquoi la limite ?key= existe\n\nLe paramètre de requête `?key=` est pratique pour les outils n'utilisant que des URLs\n(navigateurs, commandes `open`), mais il a des implications de sécurité et de\nperformance :\n\n- **Sécurité :** Les paramètres de requête sont consignés dans les journaux d'accès\n  serveur, l'historique du navigateur et les en-têtes Referer. Limiter l'usage réduit\n  l'exposition.\n- **Performance :** L'authentification par paramètre de requête nécessite un\n  limiteur de débit basé sur l'IP (recherche Redis par requête), ce qui ajoute de la\n  latence. L'authentification par en-tête l'évite.\n- **Prévention des abus :** Une URL `?key=` fuite pourrait être partagée et martelée.\n  La limite par IP contient le rayon d'impact.\n\n## Schémas recommandés\n\n### Agents LLM\n\n```python\n# Toujours utiliser l'authentification par en-tête\nheaders = {\"Authorization\": f\"Bearer {MIND_KEY}\"}\nresponse = requests.get(f\"{URL}/memory/recall\", headers=headers)\n```\n\n### Outils basés sur navigateur\n\nSi votre outil ne peut qu'ouvrir des URLs :\n\n```bash\n# OK pour un usage occasionnel (sous 60/min)\nopen \"https://synapse.schaefer.zone/memory/recall?key=YOUR_MIND_KEY\"\n\n# Pour un usage fréquent, passez à un outil qui prend en charge les en-têtes\ncurl -H \"Authorization: Bearer YOUR_MIND_KEY\" .../memory/recall\n```\n\n### Serveur MCP\n\nLes serveurs MCP utilisent toujours l'authentification par en-tête via la variable\nd'environnement `SYNAPSE_MIND_KEY` — aucune limite de débit ne s'applique.\n\n### Imports en masse\n\nPour les opérations en masse (ex. import de 1000 mémoires), utilisez toujours\nl'authentification par en-tête. Les imports en masse via `?key=` atteindront la\nlimite de débit en moins d'une minute.\n\n## Quotas (niveau mind)\n\nIl n'y a actuellement aucun quota par mind sur la taille de stockage ou le nombre de\nmémoires. Toutes les limites se situent au niveau auth/IP, pas au niveau des données.\nCela pourrait changer à l'avenir pour l'équité multi-tenant.\n\n## Surveiller votre utilisation\n\n```bash\n# Vérifiez votre statut actuel de limite de débit (avec auth ?key=)\ncurl -i \"https://synapse.schaefer.zone/memory/stats?key=YOUR_MIND_KEY\" | grep -i ratelimit\n\n# Sortie :\n# X-RateLimit-Limit: 60\n# X-RateLimit-Remaining: 58\n# X-RateLimit-Reset: 1782567840\n```\n\n## Prochaines étapes\n\n- [Authentification](/docs/getting-started/authentication)\n- [Erreurs & gestion des erreurs](/docs/api/errors)\n","content_html":"<h1>Limites de débit &amp; quotas</h1>\n<p>Synapse a une politique de limites de débit simple et prévisible, conçue pour\nprévenir les abus sans gêner les usages légitimes.</p>\n<h2>Politique de limites de débit</h2>\n<table>\n<thead>\n<tr>\n<th>Méthode d&#39;auth</th>\n<th>Limite</th>\n<th>Portée</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Mind Key (<code>Authorization: Bearer</code>)</td>\n<td><strong>Aucune</strong></td>\n<td>Par mind</td>\n</tr>\n<tr>\n<td>Mind Key (<code>?key=</code>)</td>\n<td>60 req/min</td>\n<td>Par IP</td>\n</tr>\n<tr>\n<td>JWT (<code>Authorization: Bearer</code>)</td>\n<td><strong>Aucune</strong></td>\n<td>Par utilisateur</td>\n</tr>\n<tr>\n<td>Endpoints publics</td>\n<td><strong>Aucune</strong></td>\n<td>Globale</td>\n</tr>\n</tbody></table>\n<div class=\"callout callout-ok\">**Utilisez toujours l'en-tête `Authorization: Bearer`** lorsque c'est possible. Il\nn'a aucune limite de débit. N'utilisez `?key=` que pour les outils qui ne peuvent\npas définir d'en-têtes personnalisés.</div><h2>En-têtes de limite de débit</h2>\n<p>Lorsque vous utilisez l&#39;authentification <code>?key=</code>, les réponses incluent des en-têtes\nde limite de débit :</p>\n<pre><code class=\"hljs language-plaintext\">X-RateLimit-Limit: 60\nX-RateLimit-Remaining: 42\nX-RateLimit-Reset: 1782567840</code></pre><p>Lorsque vous dépassez la limite :</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>Que faire en cas de limite de débit</h2>\n<p>Si vous obtenez un 429 :</p>\n<ol>\n<li><p><strong>Passez à l&#39;en-tête Authorization</strong> (recommandé) :</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># À éviter : ?key=YOUR_MIND_KEY (limite 60/min)</span>\ncurl <span class=\"hljs-string\">&quot;.../memory/recall?key=YOUR_MIND_KEY&quot;</span>\n\n<span class=\"hljs-comment\"># À faire : en-tête Authorization (illimité)</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> .../memory/recall</code></pre></li>\n<li><p><strong>Ou attendez <code>Retry-After</code> secondes</strong> et réessayez.</p>\n</li>\n</ol>\n<h2>Pourquoi la limite ?key= existe</h2>\n<p>Le paramètre de requête <code>?key=</code> est pratique pour les outils n&#39;utilisant que des URLs\n(navigateurs, commandes <code>open</code>), mais il a des implications de sécurité et de\nperformance :</p>\n<ul>\n<li><strong>Sécurité :</strong> Les paramètres de requête sont consignés dans les journaux d&#39;accès\nserveur, l&#39;historique du navigateur et les en-têtes Referer. Limiter l&#39;usage réduit\nl&#39;exposition.</li>\n<li><strong>Performance :</strong> L&#39;authentification par paramètre de requête nécessite un\nlimiteur de débit basé sur l&#39;IP (recherche Redis par requête), ce qui ajoute de la\nlatence. L&#39;authentification par en-tête l&#39;évite.</li>\n<li><strong>Prévention des abus :</strong> Une URL <code>?key=</code> fuite pourrait être partagée et martelée.\nLa limite par IP contient le rayon d&#39;impact.</li>\n</ul>\n<h2>Schémas recommandés</h2>\n<h3>Agents LLM</h3>\n<pre><code class=\"hljs language-python\"><span class=\"hljs-comment\"># Toujours utiliser l&#x27;authentification par en-tête</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>Outils basés sur navigateur</h3>\n<p>Si votre outil ne peut qu&#39;ouvrir des URLs :</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># OK pour un usage occasionnel (sous 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\"># Pour un usage fréquent, passez à un outil qui prend en charge les en-têtes</span>\ncurl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> .../memory/recall</code></pre><h3>Serveur MCP</h3>\n<p>Les serveurs MCP utilisent toujours l&#39;authentification par en-tête via la variable\nd&#39;environnement <code>SYNAPSE_MIND_KEY</code> — aucune limite de débit ne s&#39;applique.</p>\n<h3>Imports en masse</h3>\n<p>Pour les opérations en masse (ex. import de 1000 mémoires), utilisez toujours\nl&#39;authentification par en-tête. Les imports en masse via <code>?key=</code> atteindront la\nlimite de débit en moins d&#39;une minute.</p>\n<h2>Quotas (niveau mind)</h2>\n<p>Il n&#39;y a actuellement aucun quota par mind sur la taille de stockage ou le nombre de\nmémoires. Toutes les limites se situent au niveau auth/IP, pas au niveau des données.\nCela pourrait changer à l&#39;avenir pour l&#39;équité multi-tenant.</p>\n<h2>Surveiller votre utilisation</h2>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Vérifiez votre statut actuel de limite de débit (avec auth ?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\"># Sortie :</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>Prochaines étapes</h2>\n<ul>\n<li><a href=\"/docs/getting-started/authentication\">Authentification</a></li>\n<li><a href=\"/docs/api/errors\">Erreurs &amp; gestion des erreurs</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"]}