{"title":"FAQ API","slug":"api-faq","category":"faq","summary":"Questions courantes sur l'API — auth, limites de débit, gestion des erreurs, découverte d'endpoints.","audience":["human","llm"],"tags":["faq","api","troubleshooting"],"difficulty":"beginner","updated":"2026-06-27","word_count":473,"read_minutes":2,"lang":"fr","translated":true,"requested_lang":"fr","content_markdown":"\n# FAQ API\n\nQuestions courantes sur l'API Synapse.\n\n## Comment m'authentifier ?\n\nDeux méthodes :\n\n1. **Mind Key** (pour les endpoints de données) : `Authorization: Bearer mk_...`\n2. **JWT** (pour les endpoints de compte) : `Authorization: Bearer eyJ...`\n\nOu via paramètre de requête (limite 60 req/min) : `?key=mk_...`\n\nVoir [Authentification](/docs/getting-started/authentication).\n\n## Quelle est la différence entre Mind Key et JWT ?\n\n- **Mind Key** : limitée au tenant, n'expire jamais, pour les données memory/chat/tasks\n- **JWT** : limitée à l'utilisateur, expire en 7 jours, pour la gestion compte/mind\n\nVoir [Mind Key vs JWT](/docs/getting-started/mind-key-vs-jwt).\n\n## Pourquoi est-ce que je reçois 401 Unauthorized ?\n\nCauses courantes :\n\n1. En-tête `Authorization` manquant\n2. Mind Key invalide (vérifiez qu'elle commence par `mk_`)\n3. Utilisation d'un JWT là où une Mind Key est requise (ou inversement)\n4. La Mind Key a été révoquée\n\n**Correction :** Vérifiez votre jeton. Voir [Authentification](/docs/getting-started/authentication).\n\n## Pourquoi est-ce que je reçois 404 Not Found ?\n\nVous avez utilisé un mauvais chemin d'endpoint. Synapse ne possède que les chemins\nlistés dans `GET /endpoints`.\n\n**Correction :** Appelez `GET /endpoints` pour voir tous les chemins valides. Ne\ndevinez pas.\n\n## Pourquoi est-ce que je reçois 429 Too Many Requests ?\n\nVous utilisez l'authentification par paramètre de requête `?key=`, qui est limitée à\n60/min.\n\n**Correction :** Passez à l'en-tête `Authorization: Bearer` (sans limite de débit).\n\nVoir [Limites de débit](/docs/api/rate-limits).\n\n## Comment lister tous les endpoints ?\n\n```bash\ncurl https://synapse.schaefer.zone/endpoints\ncurl https://synapse.schaefer.zone/endpoints?format=text\n```\n\n## Comment trouver le bon endpoint ?\n\n1. Vérifiez `GET /endpoints` pour la liste lisible par machine\n2. Vérifiez `GET /help` pour la documentation complète de l'API\n3. Parcourez `GET /docs` pour le système de documentation\n4. Utilisez `GET /openapi.json` pour la spécification OpenAPI 3.0\n\n## Puis-je utiliser GET au lieu de POST ?\n\nCertains endpoints POST ont des équivalents GET pour les outils n'utilisant que des\nURLs :\n\n- `POST /memory` ↔ `GET /memory/store?content=...`\n- `POST /mind/task` ↔ `GET /mind/task?title=...`\n- `POST /chat/reply` ↔ `GET /chat/reply?content=...`\n\nVérifiez `GET /endpoints` pour les variantes GET disponibles.\n\n## Comment gérer les erreurs ?\n\nToutes les erreurs renvoient du JSON :\n\n```json\n{\n  \"statusCode\": 401,\n  \"error\": \"Unauthorized\",\n  \"message\": \"Mind Key fehlt oder ungültig.\",\n  \"docs\": \"https://synapse.schaefer.zone/docs/getting-started/authentication\"\n}\n```\n\nVoir [Erreurs & gestion des erreurs](/docs/api/errors).\n\n## Quelle est la limite de corps de requête ?\n\n10 Mo. Pour les payloads plus volumineux (ex. envoi de fichiers), utilisez les\nendpoints multipart.\n\n## L'API prend-elle en charge CORS ?\n\nOui. Tous les endpoints renvoient :\n\n```\nAccess-Control-Allow-Origin: *\nAccess-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS\nAccess-Control-Allow-Headers: Authorization, Content-Type, X-Synapse-JWT\n```\n\n## Y a-t-il un SDK ?\n\nOui :\n\n- **Node.js** : `npm install synapse-memory-sdk`\n- **MCP** : `npx -y synapse-mcp-api@latest`\n\nVoir [Vue d'ensemble de l'API](/docs/api/overview) pour plus de détails.\n\n## Comment paginer ?\n\nUtilisez `?limit=` et `?offset=` :\n\n```bash\ncurl \".../memory?limit=50&offset=100\"\n```\n\nLimite par défaut : 100. Max : 500.\n\n## Puis-je filtrer les mémoires par catégorie ou tag ?\n\nOui :\n\n```bash\ncurl \".../memory?category=project\"\ncurl \".../memory?tag=docker\"\ncurl \".../memory/by-tag?tag=production\"\n```\n\n## Comment rechercher des mémoires ?\n\nDeux façons :\n\n1. **Recherche par mots-clés FTS5** : `GET /memory/search?q=docker+swarm`\n2. **Recherche sémantique** : `GET /memory/semantic-search?q=container+orchestration`\n\nVoir [Recherche FTS5](/docs/concepts/fts5-search) et [Recherche sémantique](/docs/concepts/semantic-search).\n\n## Comment mettre à jour une mémoire ?\n\nPOST `/memory` avec la même `category` + `key` — la mémoire existante est mise à\njour, pas dupliquée.\n\n```bash\n# Stockage initial\ncurl -X POST .../memory -d '{\"category\":\"fact\",\"key\":\"user_name\",\"content\":\"Michael\"}'\n\n# Mise à jour (même clé)\ncurl -X POST .../memory -d '{\"category\":\"fact\",\"key\":\"user_name\",\"content\":\"Michael Schäfer\"}'\n```\n\n## Comment supprimer une mémoire ?\n\n```bash\ncurl -X DELETE -H \"Authorization: Bearer $KEY\" \\\n     https://synapse.schaefer.zone/memory/mem_001\n```\n\n## Puis-je supprimer en masse ?\n\nOui :\n\n```bash\ncurl -X POST .../memory/bulk-delete \\\n  -d '{\"ids\": [\"mem_001\", \"mem_002\", \"mem_003\"]}'\n```\n\n## Prochaines étapes\n\n- [Vue d'ensemble de l'API](/docs/api/overview)\n- [Erreurs & gestion des erreurs](/docs/api/errors)\n- [Authentification](/docs/getting-started/authentication)\n","content_html":"<h1>FAQ API</h1>\n<p>Questions courantes sur l&#39;API Synapse.</p>\n<h2>Comment m&#39;authentifier ?</h2>\n<p>Deux méthodes :</p>\n<ol>\n<li><strong>Mind Key</strong> (pour les endpoints de données) : <code>Authorization: Bearer mk_...</code></li>\n<li><strong>JWT</strong> (pour les endpoints de compte) : <code>Authorization: Bearer eyJ...</code></li>\n</ol>\n<p>Ou via paramètre de requête (limite 60 req/min) : <code>?key=mk_...</code></p>\n<p>Voir <a href=\"/docs/getting-started/authentication\">Authentification</a>.</p>\n<h2>Quelle est la différence entre Mind Key et JWT ?</h2>\n<ul>\n<li><strong>Mind Key</strong> : limitée au tenant, n&#39;expire jamais, pour les données memory/chat/tasks</li>\n<li><strong>JWT</strong> : limitée à l&#39;utilisateur, expire en 7 jours, pour la gestion compte/mind</li>\n</ul>\n<p>Voir <a href=\"/docs/getting-started/mind-key-vs-jwt\">Mind Key vs JWT</a>.</p>\n<h2>Pourquoi est-ce que je reçois 401 Unauthorized ?</h2>\n<p>Causes courantes :</p>\n<ol>\n<li>En-tête <code>Authorization</code> manquant</li>\n<li>Mind Key invalide (vérifiez qu&#39;elle commence par <code>mk_</code>)</li>\n<li>Utilisation d&#39;un JWT là où une Mind Key est requise (ou inversement)</li>\n<li>La Mind Key a été révoquée</li>\n</ol>\n<p><strong>Correction :</strong> Vérifiez votre jeton. Voir <a href=\"/docs/getting-started/authentication\">Authentification</a>.</p>\n<h2>Pourquoi est-ce que je reçois 404 Not Found ?</h2>\n<p>Vous avez utilisé un mauvais chemin d&#39;endpoint. Synapse ne possède que les chemins\nlistés dans <code>GET /endpoints</code>.</p>\n<p><strong>Correction :</strong> Appelez <code>GET /endpoints</code> pour voir tous les chemins valides. Ne\ndevinez pas.</p>\n<h2>Pourquoi est-ce que je reçois 429 Too Many Requests ?</h2>\n<p>Vous utilisez l&#39;authentification par paramètre de requête <code>?key=</code>, qui est limitée à\n60/min.</p>\n<p><strong>Correction :</strong> Passez à l&#39;en-tête <code>Authorization: Bearer</code> (sans limite de débit).</p>\n<p>Voir <a href=\"/docs/api/rate-limits\">Limites de débit</a>.</p>\n<h2>Comment lister tous les endpoints ?</h2>\n<pre><code class=\"hljs language-bash\">curl https://synapse.schaefer.zone/endpoints\ncurl https://synapse.schaefer.zone/endpoints?format=text</code></pre><h2>Comment trouver le bon endpoint ?</h2>\n<ol>\n<li>Vérifiez <code>GET /endpoints</code> pour la liste lisible par machine</li>\n<li>Vérifiez <code>GET /help</code> pour la documentation complète de l&#39;API</li>\n<li>Parcourez <code>GET /docs</code> pour le système de documentation</li>\n<li>Utilisez <code>GET /openapi.json</code> pour la spécification OpenAPI 3.0</li>\n</ol>\n<h2>Puis-je utiliser GET au lieu de POST ?</h2>\n<p>Certains endpoints POST ont des équivalents GET pour les outils n&#39;utilisant que des\nURLs :</p>\n<ul>\n<li><code>POST /memory</code> ↔ <code>GET /memory/store?content=...</code></li>\n<li><code>POST /mind/task</code> ↔ <code>GET /mind/task?title=...</code></li>\n<li><code>POST /chat/reply</code> ↔ <code>GET /chat/reply?content=...</code></li>\n</ul>\n<p>Vérifiez <code>GET /endpoints</code> pour les variantes GET disponibles.</p>\n<h2>Comment gérer les erreurs ?</h2>\n<p>Toutes les erreurs renvoient du JSON :</p>\n<pre><code class=\"hljs language-json\"><span class=\"hljs-punctuation\">{</span>\n  <span class=\"hljs-attr\">&quot;statusCode&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-number\">401</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;error&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;Unauthorized&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;message&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;Mind Key fehlt oder ungültig.&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;docs&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/docs/getting-started/authentication&quot;</span>\n<span class=\"hljs-punctuation\">}</span></code></pre><p>Voir <a href=\"/docs/api/errors\">Erreurs &amp; gestion des erreurs</a>.</p>\n<h2>Quelle est la limite de corps de requête ?</h2>\n<p>10 Mo. Pour les payloads plus volumineux (ex. envoi de fichiers), utilisez les\nendpoints multipart.</p>\n<h2>L&#39;API prend-elle en charge CORS ?</h2>\n<p>Oui. Tous les endpoints renvoient :</p>\n<pre><code class=\"hljs language-plaintext\">Access-Control-Allow-Origin: *\nAccess-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS\nAccess-Control-Allow-Headers: Authorization, Content-Type, X-Synapse-JWT</code></pre><h2>Y a-t-il un SDK ?</h2>\n<p>Oui :</p>\n<ul>\n<li><strong>Node.js</strong> : <code>npm install synapse-memory-sdk</code></li>\n<li><strong>MCP</strong> : <code>npx -y synapse-mcp-api@latest</code></li>\n</ul>\n<p>Voir <a href=\"/docs/api/overview\">Vue d&#39;ensemble de l&#39;API</a> pour plus de détails.</p>\n<h2>Comment paginer ?</h2>\n<p>Utilisez <code>?limit=</code> et <code>?offset=</code> :</p>\n<pre><code class=\"hljs language-bash\">curl <span class=\"hljs-string\">&quot;.../memory?limit=50&amp;offset=100&quot;</span></code></pre><p>Limite par défaut : 100. Max : 500.</p>\n<h2>Puis-je filtrer les mémoires par catégorie ou tag ?</h2>\n<p>Oui :</p>\n<pre><code class=\"hljs language-bash\">curl <span class=\"hljs-string\">&quot;.../memory?category=project&quot;</span>\ncurl <span class=\"hljs-string\">&quot;.../memory?tag=docker&quot;</span>\ncurl <span class=\"hljs-string\">&quot;.../memory/by-tag?tag=production&quot;</span></code></pre><h2>Comment rechercher des mémoires ?</h2>\n<p>Deux façons :</p>\n<ol>\n<li><strong>Recherche par mots-clés FTS5</strong> : <code>GET /memory/search?q=docker+swarm</code></li>\n<li><strong>Recherche sémantique</strong> : <code>GET /memory/semantic-search?q=container+orchestration</code></li>\n</ol>\n<p>Voir <a href=\"/docs/concepts/fts5-search\">Recherche FTS5</a> et <a href=\"/docs/concepts/semantic-search\">Recherche sémantique</a>.</p>\n<h2>Comment mettre à jour une mémoire ?</h2>\n<p>POST <code>/memory</code> avec la même <code>category</code> + <code>key</code> — la mémoire existante est mise à\njour, pas dupliquée.</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Stockage initial</span>\ncurl -X POST .../memory -d <span class=\"hljs-string\">&#x27;{&quot;category&quot;:&quot;fact&quot;,&quot;key&quot;:&quot;user_name&quot;,&quot;content&quot;:&quot;Michael&quot;}&#x27;</span>\n\n<span class=\"hljs-comment\"># Mise à jour (même clé)</span>\ncurl -X POST .../memory -d <span class=\"hljs-string\">&#x27;{&quot;category&quot;:&quot;fact&quot;,&quot;key&quot;:&quot;user_name&quot;,&quot;content&quot;:&quot;Michael Schäfer&quot;}&#x27;</span></code></pre><h2>Comment supprimer une mémoire ?</h2>\n<pre><code class=\"hljs language-bash\">curl -X DELETE -H <span class=\"hljs-string\">&quot;Authorization: Bearer <span class=\"hljs-variable\">$KEY</span>&quot;</span> \\\n     https://synapse.schaefer.zone/memory/mem_001</code></pre><h2>Puis-je supprimer en masse ?</h2>\n<p>Oui :</p>\n<pre><code class=\"hljs language-bash\">curl -X POST .../memory/bulk-delete \\\n  -d <span class=\"hljs-string\">&#x27;{&quot;ids&quot;: [&quot;mem_001&quot;, &quot;mem_002&quot;, &quot;mem_003&quot;]}&#x27;</span></code></pre><h2>Prochaines étapes</h2>\n<ul>\n<li><a href=\"/docs/api/overview\">Vue d&#39;ensemble de l&#39;API</a></li>\n<li><a href=\"/docs/api/errors\">Erreurs &amp; gestion des erreurs</a></li>\n<li><a href=\"/docs/getting-started/authentication\">Authentification</a></li>\n</ul>\n","urls":{"html":"/docs/faq/api-faq","text":"/docs/faq/api-faq?format=text","json":"/docs/faq/api-faq?format=json","llm":"/docs/faq/api-faq?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}