{"title":"API-FAQ","slug":"api-faq","category":"faq","summary":"Häufige API-Fragen — Auth, Rate Limits, Fehlerbehandlung, Endpunkt-Discovery.","audience":["human","llm"],"tags":["faq","api","troubleshooting"],"difficulty":"beginner","updated":"2026-06-27","word_count":347,"read_minutes":2,"lang":"de","translated":true,"requested_lang":"de","content_markdown":"\n# API-FAQ\n\nHäufige Fragen zur Synapse-API.\n\n## Wie authentifiziere ich mich?\n\nZwei Methoden:\n\n1. **Mind Key** (für Daten-Endpunkte): `Authorization: Bearer mk_...`\n2. **JWT** (für Konto-Endpunkte): `Authorization: Bearer eyJ...`\n\nOder via Query-Parameter (60 req/min Limit): `?key=mk_...`\n\nSiehe [Authentifizierung](/docs/getting-started/authentication).\n\n## Was ist der Unterschied zwischen Mind Key und JWT?\n\n- **Mind Key**: Tenant-scoped, läuft nie ab, für Memory-/Chat-/Tasks-Daten\n- **JWT**: Nutzer-scoped, 7-Tage-Ablauf, für Konto-/Mind-Verwaltung\n\nSiehe [Mind Key vs JWT](/docs/getting-started/mind-key-vs-jwt).\n\n## Warum erhalte ich 401 Unauthorized?\n\nHäufige Ursachen:\n\n1. Fehlender `Authorization`-Header\n2. Ungültiger Mind Key (prüfen, ob er mit `mk_` beginnt)\n3. JWT verwendet, wo Mind Key erforderlich ist (oder umgekehrt)\n4. Mind Key wurde widerrufen\n\n**Lösung:** Token überprüfen. Siehe [Authentifizierung](/docs/getting-started/authentication).\n\n## Warum erhalte ich 404 Not Found?\n\nDu hast einen falschen Endpunkt-Pfad verwendet. Synapse hat nur die Pfade, die in\n`GET /endpoints` gelistet sind.\n\n**Lösung:** Rufe `GET /endpoints` auf, um alle gültigen Pfade zu sehen. Nicht\nraten.\n\n## Warum erhalte ich 429 Too Many Requests?\n\nDu verwendest `?key=`-Query-Parameter-Auth, die auf 60/min begrenzt ist.\n\n**Lösung:** Wechsle zum `Authorization: Bearer`-Header (kein Rate Limit).\n\nSiehe [Rate Limits](/docs/api/rate-limits).\n\n## Wie liste ich alle Endpunkte auf?\n\n```bash\ncurl https://synapse.schaefer.zone/endpoints\ncurl https://synapse.schaefer.zone/endpoints?format=text\n```\n\n## Wie finde ich den richtigen Endpunkt?\n\n1. Prüfe `GET /endpoints` für die maschinenlesbare Liste\n2. Prüfe `GET /help` für die vollständige API-Doku\n3. Durchsuche `GET /docs` für das Dokumentationssystem\n4. Verwende `GET /openapi.json` für die OpenAPI-3.0-Spec\n\n## Kann ich GET statt POST verwenden?\n\nEinige POST-Endpunkte haben GET-Äquivalente für reine URL-Tools:\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\nPrüfe `GET /endpoints` für verfügbare GET-Varianten.\n\n## Wie behandle ich Fehler?\n\nAlle Fehler liefern 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\nSiehe [Errors & Fehlerbehandlung](/docs/api/errors).\n\n## Wie hoch ist das Request-Body-Limit?\n\n10 MB. Für größere Payloads (z. B. Datei-Uploads) verwende die Multipart-\nEndpunkte.\n\n## Unterstützt die API CORS?\n\nJa. Alle Endpunkte liefern:\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## Gibt es ein SDK?\n\nJa:\n\n- **Node.js**: `npm install synapse-memory-sdk`\n- **MCP**: `npx -y synapse-mcp-api@latest`\n\nSiehe [API-Übersicht](/docs/api/overview) für Details.\n\n## Wie paginiere ich?\n\nVerwende `?limit=` und `?offset=`:\n\n```bash\ncurl \".../memory?limit=50&offset=100\"\n```\n\nStandard-Limit: 100. Max: 500.\n\n## Kann ich Memories nach Kategorie oder Tag filtern?\n\nJa:\n\n```bash\ncurl \".../memory?category=project\"\ncurl \".../memory?tag=docker\"\ncurl \".../memory/by-tag?tag=production\"\n```\n\n## Wie durchsuche ich Memories?\n\nZwei Wege:\n\n1. **FTS5-Keyword-Suche**: `GET /memory/search?q=docker+swarm`\n2. **Semantische Suche**: `GET /memory/semantic-search?q=container+orchestration`\n\nSiehe [FTS5-Suche](/docs/concepts/fts5-search) und [Semantische Suche](/docs/concepts/semantic-search).\n\n## Wie aktualisiere ich einen Memory?\n\nPOST `/memory` mit derselben `category` + `key` — der bestehende Memory wird\naktualisiert, nicht dupliziert.\n\n```bash\n# Initial store\ncurl -X POST .../memory -d '{\"category\":\"fact\",\"key\":\"user_name\",\"content\":\"Michael\"}'\n\n# Update (same key)\ncurl -X POST .../memory -d '{\"category\":\"fact\",\"key\":\"user_name\",\"content\":\"Michael Schäfer\"}'\n```\n\n## Wie lösche ich einen Memory?\n\n```bash\ncurl -X DELETE -H \"Authorization: Bearer $KEY\" \\\n     https://synapse.schaefer.zone/memory/mem_001\n```\n\n## Kann ich Bulk-löschen?\n\nJa:\n\n```bash\ncurl -X POST .../memory/bulk-delete \\\n  -d '{\"ids\": [\"mem_001\", \"mem_002\", \"mem_003\"]}'\n```\n\n## Nächste Schritte\n\n- [API-Übersicht](/docs/api/overview)\n- [Errors & Fehlerbehandlung](/docs/api/errors)\n- [Authentifizierung](/docs/getting-started/authentication)\n","content_html":"<h1>API-FAQ</h1>\n<p>Häufige Fragen zur Synapse-API.</p>\n<h2>Wie authentifiziere ich mich?</h2>\n<p>Zwei Methoden:</p>\n<ol>\n<li><strong>Mind Key</strong> (für Daten-Endpunkte): <code>Authorization: Bearer mk_...</code></li>\n<li><strong>JWT</strong> (für Konto-Endpunkte): <code>Authorization: Bearer eyJ...</code></li>\n</ol>\n<p>Oder via Query-Parameter (60 req/min Limit): <code>?key=mk_...</code></p>\n<p>Siehe <a href=\"/docs/getting-started/authentication\">Authentifizierung</a>.</p>\n<h2>Was ist der Unterschied zwischen Mind Key und JWT?</h2>\n<ul>\n<li><strong>Mind Key</strong>: Tenant-scoped, läuft nie ab, für Memory-/Chat-/Tasks-Daten</li>\n<li><strong>JWT</strong>: Nutzer-scoped, 7-Tage-Ablauf, für Konto-/Mind-Verwaltung</li>\n</ul>\n<p>Siehe <a href=\"/docs/getting-started/mind-key-vs-jwt\">Mind Key vs JWT</a>.</p>\n<h2>Warum erhalte ich 401 Unauthorized?</h2>\n<p>Häufige Ursachen:</p>\n<ol>\n<li>Fehlender <code>Authorization</code>-Header</li>\n<li>Ungültiger Mind Key (prüfen, ob er mit <code>mk_</code> beginnt)</li>\n<li>JWT verwendet, wo Mind Key erforderlich ist (oder umgekehrt)</li>\n<li>Mind Key wurde widerrufen</li>\n</ol>\n<p><strong>Lösung:</strong> Token überprüfen. Siehe <a href=\"/docs/getting-started/authentication\">Authentifizierung</a>.</p>\n<h2>Warum erhalte ich 404 Not Found?</h2>\n<p>Du hast einen falschen Endpunkt-Pfad verwendet. Synapse hat nur die Pfade, die in\n<code>GET /endpoints</code> gelistet sind.</p>\n<p><strong>Lösung:</strong> Rufe <code>GET /endpoints</code> auf, um alle gültigen Pfade zu sehen. Nicht\nraten.</p>\n<h2>Warum erhalte ich 429 Too Many Requests?</h2>\n<p>Du verwendest <code>?key=</code>-Query-Parameter-Auth, die auf 60/min begrenzt ist.</p>\n<p><strong>Lösung:</strong> Wechsle zum <code>Authorization: Bearer</code>-Header (kein Rate Limit).</p>\n<p>Siehe <a href=\"/docs/api/rate-limits\">Rate Limits</a>.</p>\n<h2>Wie liste ich alle Endpunkte auf?</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>Wie finde ich den richtigen Endpunkt?</h2>\n<ol>\n<li>Prüfe <code>GET /endpoints</code> für die maschinenlesbare Liste</li>\n<li>Prüfe <code>GET /help</code> für die vollständige API-Doku</li>\n<li>Durchsuche <code>GET /docs</code> für das Dokumentationssystem</li>\n<li>Verwende <code>GET /openapi.json</code> für die OpenAPI-3.0-Spec</li>\n</ol>\n<h2>Kann ich GET statt POST verwenden?</h2>\n<p>Einige POST-Endpunkte haben GET-Äquivalente für reine URL-Tools:</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>Prüfe <code>GET /endpoints</code> für verfügbare GET-Varianten.</p>\n<h2>Wie behandle ich Fehler?</h2>\n<p>Alle Fehler liefern 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>Siehe <a href=\"/docs/api/errors\">Errors &amp; Fehlerbehandlung</a>.</p>\n<h2>Wie hoch ist das Request-Body-Limit?</h2>\n<p>10 MB. Für größere Payloads (z. B. Datei-Uploads) verwende die Multipart-\nEndpunkte.</p>\n<h2>Unterstützt die API CORS?</h2>\n<p>Ja. Alle Endpunkte liefern:</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>Gibt es ein SDK?</h2>\n<p>Ja:</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>Siehe <a href=\"/docs/api/overview\">API-Übersicht</a> für Details.</p>\n<h2>Wie paginiere ich?</h2>\n<p>Verwende <code>?limit=</code> und <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>Standard-Limit: 100. Max: 500.</p>\n<h2>Kann ich Memories nach Kategorie oder Tag filtern?</h2>\n<p>Ja:</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>Wie durchsuche ich Memories?</h2>\n<p>Zwei Wege:</p>\n<ol>\n<li><strong>FTS5-Keyword-Suche</strong>: <code>GET /memory/search?q=docker+swarm</code></li>\n<li><strong>Semantische Suche</strong>: <code>GET /memory/semantic-search?q=container+orchestration</code></li>\n</ol>\n<p>Siehe <a href=\"/docs/concepts/fts5-search\">FTS5-Suche</a> und <a href=\"/docs/concepts/semantic-search\">Semantische Suche</a>.</p>\n<h2>Wie aktualisiere ich einen Memory?</h2>\n<p>POST <code>/memory</code> mit derselben <code>category</code> + <code>key</code> — der bestehende Memory wird\naktualisiert, nicht dupliziert.</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Initial store</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\"># Update (same key)</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>Wie lösche ich einen Memory?</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>Kann ich Bulk-löschen?</h2>\n<p>Ja:</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>Nächste Schritte</h2>\n<ul>\n<li><a href=\"/docs/api/overview\">API-Übersicht</a></li>\n<li><a href=\"/docs/api/errors\">Errors &amp; Fehlerbehandlung</a></li>\n<li><a href=\"/docs/getting-started/authentication\">Authentifizierung</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"]}