{"title":"API-Übersicht & Basis-URL","slug":"overview","category":"api","summary":"Alle Synapse-API-Endpunkte, Basis-URL, Authentifizierungsmuster und Antwortformate auf einen Blick.","audience":["human","llm"],"tags":["api","overview","endpoints"],"difficulty":"beginner","updated":"2026-06-27","word_count":492,"read_minutes":2,"llm_context":"Base URL: https://synapse.schaefer.zone\nAuth: Authorization: Bearer YOUR_MIND_KEY (header, no rate limit)\n      OR ?key=YOUR_MIND_KEY (query, 60 req/min)\nAll responses are JSON except /memory/recall (text/plain) and /docs (HTML/text/json)\nAll 404 responses mean the path does not exist — do NOT guess paths.\nGET /endpoints returns machine-readable list of all valid endpoints.\n","lang":"de","translated":true,"requested_lang":"de","content_markdown":"\n# API-Übersicht & Basis-URL\n\nDie Synapse-API ist eine RESTful-HTTP-API. Alle Endpunkte liefern JSON zurück\n(ausgenommen sind explizit gekennzeichnete Fälle). Diese Seite behandelt die\nGrundlagen, die du kennen solltest, bevor du dich den spezifischen Endpunkten\nwidmest.\n\n## Basis-URL\n\n```\nhttps://synapse.schaefer.zone\n```\n\nAlle Pfade in dieser Dokumentation sind relativ zu dieser Basis-URL. Für\nselbstgehostete Instanzen ersetze sie durch deine eigene URL.\n\n## Authentifizierung\n\nZwei Methoden, beide über den `Authorization`-Header:\n\n```\nAuthorization: Bearer YOUR_MIND_KEY    # für Daten-Endpunkte\nAuthorization: Bearer YOUR_JWT          # für Konto-Endpunkte\n```\n\nOder über einen Query-Parameter (auf 60/min begrenzt):\n\n```\n?key=YOUR_MIND_KEY\n```\n\nSiehe [Authentifizierung](/docs/getting-started/authentication) für Details.\n\n## Endpunkt-Gruppen\n\n| Gruppe | Auth | Beschreibung |\n|-------|------|--------------|\n| Öffentlich | Keine | Landing-Page, Health, OpenAPI, Docs |\n| Memory | Mind Key | CRUD, Suche, Sync, Embeddings |\n| Chat | Mind Key / JWT | Asynchrone Nachrichten zwischen Mensch und Agent |\n| Tasks | Mind Key | Aufgabenverwaltung |\n| Scripts | Mind Key / JWT | Persistenter Script-Speicher |\n| Scheduler | Mind Key | Cron-Jobs + Variablen |\n| Webhooks | Mind Key | HTTP-Callbacks bei Events |\n| Computers | Mind Key / JWT | Fernsteuerung von Rechnern |\n| User/Minds | JWT | Konto- + Mind-Verwaltung |\n| Sharing | JWT | Mind-Freigaben zwischen Nutzern |\n| Push | JWT | Web-Push-Abonnements |\n| Tools | Keine | Zeit, Calc, Random (öffentliche Hilfswerkzeuge) |\n\n## Antwortformate\n\n- **JSON** (Standard): `{ \"key\": \"value\", ... }`\n- **Klartext**: `/memory/recall` liefert LLM-optimierten Text\n- **HTML**: `/`, `/docs`, `/human`, `/support`, `/playground`\n\n## Standard-Antwort-Envelope\n\nErfolgsantworten liefern die Daten direkt:\n\n```json\n{ \"id\": \"mem_001\", \"status\": \"stored\" }\n```\n\nFehlerantworten verwenden dieses Format:\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\n> [!NOTE]\n> Das Feld `docs` verlinkt bei häufigen Fehlern auf die relevante Doku.\n\n## HTTP-Statuscodes\n\n| Code | Bedeutung |\n|------|-----------|\n| 200 | Erfolg (GET, PUT) |\n| 201 | Erstellt (POST) |\n| 204 | Kein Inhalt (DELETE) |\n| 400 | Bad Request (Validierungsfehler) |\n| 401 | Unauthorized (fehlender/ungültiger Token) |\n| 403 | Forbidden (falscher Token-Typ) |\n| 404 | Not Found (Pfad existiert nicht) |\n| 409 | Conflict (Duplikat) |\n| 429 | Too Many Requests (Rate Limit) |\n| 500 | Serverfehler |\n\n## Discoverability-Endpunkte\n\n| Endpunkt | Zweck |\n|----------|-------|\n| `GET /` | Landing-Page (LLM-optimiert) |\n| `GET /endpoints` | Maschinenlesbare Liste aller Endpunkte |\n| `GET /endpoints?format=text` | Endpunkt-Liste als Klartext |\n| `GET /openapi.json` | OpenAPI-3.0-Spezifikation |\n| `GET /help` | Vollständige API-Doku (HTML) |\n| `GET /help?format=json` | API-Doku als JSON |\n| `GET /docs` | Dokumentationssystem (HTML) |\n| `GET /docs?format=json` | Doku-Index (JSON) |\n| `GET /docs?format=text&scope=all` | Alle Docs als ein Textblock |\n| `GET /playground` | Interaktives API-Playground |\n\n## Rate Limits\n\n| Auth-Methode | Limit |\n|---------------|-------|\n| Mind Key (Header) | Keins |\n| Mind Key (?key=) | 60/min pro IP |\n| JWT (Header) | Keins |\n| Öffentliche Endpunkte | Keins |\n\nRate-limitierte Antworten enthalten:\n\n```\nX-RateLimit-Limit: 60\nX-RateLimit-Remaining: 42\nRetry-After: 30  (nur bei 429)\n```\n\n## Paginierung\n\nListen-Endpunkte unterstützen `?limit=` und `?offset=`:\n\n```\nGET /memory?limit=50&offset=100\nGET /mind/tasks?status=pending\n```\n\nStandard-Limit: 100. Max. Limit: 500.\n\n## CORS\n\nAlle Endpunkte unterstützen CORS für browserbasierte Clients:\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, Mcp-Session-Id, Mcp-Tool-Profile\n```\n\n## SDKs & Clients\n\n- **Node.js SDK**: `npm install synapse-memory-sdk` ([Repo](https://gitlab.com/schaefer-services/synapse-sdk-js))\n- **MCP Server**: `npx -y synapse-mcp-api@latest` ([Repo](https://gitlab.com/schaefer-services/synapse-mcp))\n- **HTTP-Client**: jede HTTP-Bibliothek (curl, fetch, axios, etc.)\n\n## Nächste Schritte\n\n- [Memory-API](/docs/api/memory) — die wichtigsten Endpunkte\n- [Chat-API](/docs/api/chat) — asynchrone Mensch-Agent-Kommunikation\n- [Errors & Fehlerbehandlung](/docs/api/errors)\n","content_html":"<h1>API-Übersicht &amp; Basis-URL</h1>\n<p>Die Synapse-API ist eine RESTful-HTTP-API. Alle Endpunkte liefern JSON zurück\n(ausgenommen sind explizit gekennzeichnete Fälle). Diese Seite behandelt die\nGrundlagen, die du kennen solltest, bevor du dich den spezifischen Endpunkten\nwidmest.</p>\n<h2>Basis-URL</h2>\n<pre><code class=\"hljs language-plaintext\">https://synapse.schaefer.zone</code></pre><p>Alle Pfade in dieser Dokumentation sind relativ zu dieser Basis-URL. Für\nselbstgehostete Instanzen ersetze sie durch deine eigene URL.</p>\n<h2>Authentifizierung</h2>\n<p>Zwei Methoden, beide über den <code>Authorization</code>-Header:</p>\n<pre><code class=\"hljs language-plaintext\">Authorization: Bearer YOUR_MIND_KEY    # für Daten-Endpunkte\nAuthorization: Bearer YOUR_JWT          # für Konto-Endpunkte</code></pre><p>Oder über einen Query-Parameter (auf 60/min begrenzt):</p>\n<pre><code class=\"hljs language-plaintext\">?key=YOUR_MIND_KEY</code></pre><p>Siehe <a href=\"/docs/getting-started/authentication\">Authentifizierung</a> für Details.</p>\n<h2>Endpunkt-Gruppen</h2>\n<table>\n<thead>\n<tr>\n<th>Gruppe</th>\n<th>Auth</th>\n<th>Beschreibung</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Öffentlich</td>\n<td>Keine</td>\n<td>Landing-Page, Health, OpenAPI, Docs</td>\n</tr>\n<tr>\n<td>Memory</td>\n<td>Mind Key</td>\n<td>CRUD, Suche, Sync, Embeddings</td>\n</tr>\n<tr>\n<td>Chat</td>\n<td>Mind Key / JWT</td>\n<td>Asynchrone Nachrichten zwischen Mensch und Agent</td>\n</tr>\n<tr>\n<td>Tasks</td>\n<td>Mind Key</td>\n<td>Aufgabenverwaltung</td>\n</tr>\n<tr>\n<td>Scripts</td>\n<td>Mind Key / JWT</td>\n<td>Persistenter Script-Speicher</td>\n</tr>\n<tr>\n<td>Scheduler</td>\n<td>Mind Key</td>\n<td>Cron-Jobs + Variablen</td>\n</tr>\n<tr>\n<td>Webhooks</td>\n<td>Mind Key</td>\n<td>HTTP-Callbacks bei Events</td>\n</tr>\n<tr>\n<td>Computers</td>\n<td>Mind Key / JWT</td>\n<td>Fernsteuerung von Rechnern</td>\n</tr>\n<tr>\n<td>User/Minds</td>\n<td>JWT</td>\n<td>Konto- + Mind-Verwaltung</td>\n</tr>\n<tr>\n<td>Sharing</td>\n<td>JWT</td>\n<td>Mind-Freigaben zwischen Nutzern</td>\n</tr>\n<tr>\n<td>Push</td>\n<td>JWT</td>\n<td>Web-Push-Abonnements</td>\n</tr>\n<tr>\n<td>Tools</td>\n<td>Keine</td>\n<td>Zeit, Calc, Random (öffentliche Hilfswerkzeuge)</td>\n</tr>\n</tbody></table>\n<h2>Antwortformate</h2>\n<ul>\n<li><strong>JSON</strong> (Standard): <code>{ &quot;key&quot;: &quot;value&quot;, ... }</code></li>\n<li><strong>Klartext</strong>: <code>/memory/recall</code> liefert LLM-optimierten Text</li>\n<li><strong>HTML</strong>: <code>/</code>, <code>/docs</code>, <code>/human</code>, <code>/support</code>, <code>/playground</code></li>\n</ul>\n<h2>Standard-Antwort-Envelope</h2>\n<p>Erfolgsantworten liefern die Daten direkt:</p>\n<pre><code class=\"hljs language-json\"><span class=\"hljs-punctuation\">{</span> <span class=\"hljs-attr\">&quot;id&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;mem_001&quot;</span><span class=\"hljs-punctuation\">,</span> <span class=\"hljs-attr\">&quot;status&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;stored&quot;</span> <span class=\"hljs-punctuation\">}</span></code></pre><p>Fehlerantworten verwenden dieses Format:</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><div class=\"callout callout-note\">Das Feld `docs` verlinkt bei häufigen Fehlern auf die relevante Doku.</div><h2>HTTP-Statuscodes</h2>\n<table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Bedeutung</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>200</td>\n<td>Erfolg (GET, PUT)</td>\n</tr>\n<tr>\n<td>201</td>\n<td>Erstellt (POST)</td>\n</tr>\n<tr>\n<td>204</td>\n<td>Kein Inhalt (DELETE)</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad Request (Validierungsfehler)</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Unauthorized (fehlender/ungültiger Token)</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Forbidden (falscher Token-Typ)</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Not Found (Pfad existiert nicht)</td>\n</tr>\n<tr>\n<td>409</td>\n<td>Conflict (Duplikat)</td>\n</tr>\n<tr>\n<td>429</td>\n<td>Too Many Requests (Rate Limit)</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Serverfehler</td>\n</tr>\n</tbody></table>\n<h2>Discoverability-Endpunkte</h2>\n<table>\n<thead>\n<tr>\n<th>Endpunkt</th>\n<th>Zweck</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>GET /</code></td>\n<td>Landing-Page (LLM-optimiert)</td>\n</tr>\n<tr>\n<td><code>GET /endpoints</code></td>\n<td>Maschinenlesbare Liste aller Endpunkte</td>\n</tr>\n<tr>\n<td><code>GET /endpoints?format=text</code></td>\n<td>Endpunkt-Liste als Klartext</td>\n</tr>\n<tr>\n<td><code>GET /openapi.json</code></td>\n<td>OpenAPI-3.0-Spezifikation</td>\n</tr>\n<tr>\n<td><code>GET /help</code></td>\n<td>Vollständige API-Doku (HTML)</td>\n</tr>\n<tr>\n<td><code>GET /help?format=json</code></td>\n<td>API-Doku als JSON</td>\n</tr>\n<tr>\n<td><code>GET /docs</code></td>\n<td>Dokumentationssystem (HTML)</td>\n</tr>\n<tr>\n<td><code>GET /docs?format=json</code></td>\n<td>Doku-Index (JSON)</td>\n</tr>\n<tr>\n<td><code>GET /docs?format=text&amp;scope=all</code></td>\n<td>Alle Docs als ein Textblock</td>\n</tr>\n<tr>\n<td><code>GET /playground</code></td>\n<td>Interaktives API-Playground</td>\n</tr>\n</tbody></table>\n<h2>Rate Limits</h2>\n<table>\n<thead>\n<tr>\n<th>Auth-Methode</th>\n<th>Limit</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Mind Key (Header)</td>\n<td>Keins</td>\n</tr>\n<tr>\n<td>Mind Key (?key=)</td>\n<td>60/min pro IP</td>\n</tr>\n<tr>\n<td>JWT (Header)</td>\n<td>Keins</td>\n</tr>\n<tr>\n<td>Öffentliche Endpunkte</td>\n<td>Keins</td>\n</tr>\n</tbody></table>\n<p>Rate-limitierte Antworten enthalten:</p>\n<pre><code class=\"hljs language-plaintext\">X-RateLimit-Limit: 60\nX-RateLimit-Remaining: 42\nRetry-After: 30  (nur bei 429)</code></pre><h2>Paginierung</h2>\n<p>Listen-Endpunkte unterstützen <code>?limit=</code> und <code>?offset=</code>:</p>\n<pre><code class=\"hljs language-plaintext\">GET /memory?limit=50&amp;offset=100\nGET /mind/tasks?status=pending</code></pre><p>Standard-Limit: 100. Max. Limit: 500.</p>\n<h2>CORS</h2>\n<p>Alle Endpunkte unterstützen CORS für browserbasierte Clients:</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, Mcp-Session-Id, Mcp-Tool-Profile</code></pre><h2>SDKs &amp; Clients</h2>\n<ul>\n<li><strong>Node.js SDK</strong>: <code>npm install synapse-memory-sdk</code> (<a href=\"https://gitlab.com/schaefer-services/synapse-sdk-js\">Repo</a>)</li>\n<li><strong>MCP Server</strong>: <code>npx -y synapse-mcp-api@latest</code> (<a href=\"https://gitlab.com/schaefer-services/synapse-mcp\">Repo</a>)</li>\n<li><strong>HTTP-Client</strong>: jede HTTP-Bibliothek (curl, fetch, axios, etc.)</li>\n</ul>\n<h2>Nächste Schritte</h2>\n<ul>\n<li><a href=\"/docs/api/memory\">Memory-API</a> — die wichtigsten Endpunkte</li>\n<li><a href=\"/docs/api/chat\">Chat-API</a> — asynchrone Mensch-Agent-Kommunikation</li>\n<li><a href=\"/docs/api/errors\">Errors &amp; Fehlerbehandlung</a></li>\n</ul>\n","urls":{"html":"/docs/api/overview","text":"/docs/api/overview?format=text","json":"/docs/api/overview?format=json","llm":"/docs/api/overview?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}