{"title":"Panoramica API e URL di base","slug":"overview","category":"api","summary":"Tutti gli endpoint dell'API Synapse, URL di base, modelli di autenticazione e formati di risposta a colpo d'occhio.","audience":["human","llm"],"tags":["api","overview","endpoints"],"difficulty":"beginner","updated":"2026-06-27","word_count":575,"read_minutes":3,"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":"it","translated":true,"requested_lang":"it","content_markdown":"\n# Panoramica API e URL di base\n\nL'API di Synapse è un'API HTTP RESTful. Tutti gli endpoint restituiscono JSON\n( salvo dove indicato). Questa pagina tratta gli elementi essenziali necessari\nprima di addentrarsi negli endpoint specifici.\n\n## URL di base\n\n```\nhttps://synapse.schaefer.zone\n```\n\nTutti i percorsi in questa documentazione sono relativi a questo URL di base.\nPer istanze self-hosted, sostituisca con il proprio URL.\n\n## Autenticazione\n\nDue metodi, entrambi inviati tramite header `Authorization`:\n\n```\nAuthorization: Bearer YOUR_MIND_KEY    # for data endpoints\nAuthorization: Bearer YOUR_JWT          # for account endpoints\n```\n\nOppure tramite parametro query (limitato a 60/min):\n\n```\n?key=YOUR_MIND_KEY\n```\n\nVeda [Autenticazione](/docs/getting-started/authentication) per i dettagli.\n\n## Gruppi di endpoint\n\n| Gruppo | Auth | Descrizione |\n|-------|------|-------------|\n| Pubblico | Nessuna | Landing page, health, OpenAPI, docs |\n| Memory | Mind Key | CRUD, ricerca, sync, embedding |\n| Chat | Mind Key / JWT | Messaggistica asincrona tra umano e agente |\n| Tasks | Mind Key | Gestione attività |\n| Scripts | Mind Key / JWT | Archivio script persistente |\n| Scheduler | Mind Key | Cron job + variabili |\n| Webhooks | Mind Key | Callback HTTP su eventi |\n| Computers | Mind Key / JWT | Controllo computer remoto |\n| User/Minds | JWT | Account + gestione mente |\n| Sharing | JWT | Condivisione menti tra utenti |\n| Push | JWT | Sottoscrizioni Web Push |\n| Tools | Nessuna | Time, calc, random (utility pubbliche) |\n\n## Formati di risposta\n\n- **JSON** (predefinito): `{ \"key\": \"value\", ... }`\n- **Testo semplice**: `/memory/recall` restituisce testo ottimizzato per LLM\n- **HTML**: `/`, `/docs`, `/human`, `/support`, `/playground`\n\n## Busta standard di risposta\n\nLe risposte di successo restituiscono direttamente i dati:\n\n```json\n{ \"id\": \"mem_001\", \"status\": \"stored\" }\n```\n\nLe risposte di errore usano questo formato:\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> Il campo `docs` linka alla documentazione pertinente per gli errori comuni.\n\n## Codici di stato HTTP\n\n| Codice | Significato |\n|------|---------|\n| 200 | Successo (GET, PUT) |\n| 201 | Creato (POST) |\n| 204 | Nessun contenuto (DELETE) |\n| 400 | Richiesta errata (errore di validazione) |\n| 401 | Non autorizzato (token mancante/non valido) |\n| 403 | Vietato (tipo di token errato) |\n| 404 | Non trovato (percorso inesistente) |\n| 409 | Conflitto (duplicato) |\n| 429 | Troppe richieste (rate limit) |\n| 500 | Errore del server |\n\n## Endpoint di scoperta\n\n| Endpoint | Scopo |\n|----------|---------|\n| `GET /` | Landing page (ottimizzata per LLM) |\n| `GET /endpoints` | Lista machine-readable di tutti gli endpoint |\n| `GET /endpoints?format=text` | Lista endpoint in testo semplice |\n| `GET /openapi.json` | Specifica OpenAPI 3.0 |\n| `GET /help` | Documentazione API completa (HTML) |\n| `GET /help?format=json` | Documentazione API come JSON |\n| `GET /docs` | Sistema di documentazione (HTML) |\n| `GET /docs?format=json` | Indice della documentazione (JSON) |\n| `GET /docs?format=text&scope=all` | Tutta la documentazione come blocco di testo |\n| `GET /playground` | Playground API interattivo |\n\n## Limiti di traffico\n\n| Metodo di auth | Limite |\n|-------------|-------|\n| Mind Key (header) | Nessuno |\n| Mind Key (?key=) | 60/min per IP |\n| JWT (header) | Nessuno |\n| Endpoint pubblici | Nessuno |\n\nLe risposte con limiti di traffico includono:\n\n```\nX-RateLimit-Limit: 60\nX-RateLimit-Remaining: 42\nRetry-After: 30  (only when 429)\n```\n\n## Paginazione\n\nGli endpoint di elenco supportano `?limit=` e `?offset=`:\n\n```\nGET /memory?limit=50&offset=100\nGET /mind/tasks?status=pending\n```\n\nLimite predefinito: 100. Limite massimo: 500.\n\n## CORS\n\nTutti gli endpoint supportano CORS per client basati su browser:\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## SDK e client\n\n- **SDK Node.js**: `npm install synapse-memory-sdk` ([repo](https://gitlab.com/schaefer-services/synapse-sdk-js))\n- **Server MCP**: `npx -y synapse-mcp-api@latest` ([repo](https://gitlab.com/schaefer-services/synapse-mcp))\n- **Client HTTP**: qualsiasi libreria HTTP (curl, fetch, axios, ecc.)\n\n## Prossimi passi\n\n- [Memory API](/docs/api/memory) — gli endpoint più importanti\n- [Chat API](/docs/api/chat) — comunicazione asincrona umano-agente\n- [Errori e gestione degli errori](/docs/api/errors)\n","content_html":"<h1>Panoramica API e URL di base</h1>\n<p>L&#39;API di Synapse è un&#39;API HTTP RESTful. Tutti gli endpoint restituiscono JSON\n( salvo dove indicato). Questa pagina tratta gli elementi essenziali necessari\nprima di addentrarsi negli endpoint specifici.</p>\n<h2>URL di base</h2>\n<pre><code class=\"hljs language-plaintext\">https://synapse.schaefer.zone</code></pre><p>Tutti i percorsi in questa documentazione sono relativi a questo URL di base.\nPer istanze self-hosted, sostituisca con il proprio URL.</p>\n<h2>Autenticazione</h2>\n<p>Due metodi, entrambi inviati tramite header <code>Authorization</code>:</p>\n<pre><code class=\"hljs language-plaintext\">Authorization: Bearer YOUR_MIND_KEY    # for data endpoints\nAuthorization: Bearer YOUR_JWT          # for account endpoints</code></pre><p>Oppure tramite parametro query (limitato a 60/min):</p>\n<pre><code class=\"hljs language-plaintext\">?key=YOUR_MIND_KEY</code></pre><p>Veda <a href=\"/docs/getting-started/authentication\">Autenticazione</a> per i dettagli.</p>\n<h2>Gruppi di endpoint</h2>\n<table>\n<thead>\n<tr>\n<th>Gruppo</th>\n<th>Auth</th>\n<th>Descrizione</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Pubblico</td>\n<td>Nessuna</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, ricerca, sync, embedding</td>\n</tr>\n<tr>\n<td>Chat</td>\n<td>Mind Key / JWT</td>\n<td>Messaggistica asincrona tra umano e agente</td>\n</tr>\n<tr>\n<td>Tasks</td>\n<td>Mind Key</td>\n<td>Gestione attività</td>\n</tr>\n<tr>\n<td>Scripts</td>\n<td>Mind Key / JWT</td>\n<td>Archivio script persistente</td>\n</tr>\n<tr>\n<td>Scheduler</td>\n<td>Mind Key</td>\n<td>Cron job + variabili</td>\n</tr>\n<tr>\n<td>Webhooks</td>\n<td>Mind Key</td>\n<td>Callback HTTP su eventi</td>\n</tr>\n<tr>\n<td>Computers</td>\n<td>Mind Key / JWT</td>\n<td>Controllo computer remoto</td>\n</tr>\n<tr>\n<td>User/Minds</td>\n<td>JWT</td>\n<td>Account + gestione mente</td>\n</tr>\n<tr>\n<td>Sharing</td>\n<td>JWT</td>\n<td>Condivisione menti tra utenti</td>\n</tr>\n<tr>\n<td>Push</td>\n<td>JWT</td>\n<td>Sottoscrizioni Web Push</td>\n</tr>\n<tr>\n<td>Tools</td>\n<td>Nessuna</td>\n<td>Time, calc, random (utility pubbliche)</td>\n</tr>\n</tbody></table>\n<h2>Formati di risposta</h2>\n<ul>\n<li><strong>JSON</strong> (predefinito): <code>{ &quot;key&quot;: &quot;value&quot;, ... }</code></li>\n<li><strong>Testo semplice</strong>: <code>/memory/recall</code> restituisce testo ottimizzato per LLM</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>Busta standard di risposta</h2>\n<p>Le risposte di successo restituiscono direttamente i dati:</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>Le risposte di errore usano questo formato:</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\">Il campo `docs` linka alla documentazione pertinente per gli errori comuni.</div><h2>Codici di stato HTTP</h2>\n<table>\n<thead>\n<tr>\n<th>Codice</th>\n<th>Significato</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>200</td>\n<td>Successo (GET, PUT)</td>\n</tr>\n<tr>\n<td>201</td>\n<td>Creato (POST)</td>\n</tr>\n<tr>\n<td>204</td>\n<td>Nessun contenuto (DELETE)</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Richiesta errata (errore di validazione)</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Non autorizzato (token mancante/non valido)</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Vietato (tipo di token errato)</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Non trovato (percorso inesistente)</td>\n</tr>\n<tr>\n<td>409</td>\n<td>Conflitto (duplicato)</td>\n</tr>\n<tr>\n<td>429</td>\n<td>Troppe richieste (rate limit)</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Errore del server</td>\n</tr>\n</tbody></table>\n<h2>Endpoint di scoperta</h2>\n<table>\n<thead>\n<tr>\n<th>Endpoint</th>\n<th>Scopo</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>GET /</code></td>\n<td>Landing page (ottimizzata per LLM)</td>\n</tr>\n<tr>\n<td><code>GET /endpoints</code></td>\n<td>Lista machine-readable di tutti gli endpoint</td>\n</tr>\n<tr>\n<td><code>GET /endpoints?format=text</code></td>\n<td>Lista endpoint in testo semplice</td>\n</tr>\n<tr>\n<td><code>GET /openapi.json</code></td>\n<td>Specifica OpenAPI 3.0</td>\n</tr>\n<tr>\n<td><code>GET /help</code></td>\n<td>Documentazione API completa (HTML)</td>\n</tr>\n<tr>\n<td><code>GET /help?format=json</code></td>\n<td>Documentazione API come JSON</td>\n</tr>\n<tr>\n<td><code>GET /docs</code></td>\n<td>Sistema di documentazione (HTML)</td>\n</tr>\n<tr>\n<td><code>GET /docs?format=json</code></td>\n<td>Indice della documentazione (JSON)</td>\n</tr>\n<tr>\n<td><code>GET /docs?format=text&amp;scope=all</code></td>\n<td>Tutta la documentazione come blocco di testo</td>\n</tr>\n<tr>\n<td><code>GET /playground</code></td>\n<td>Playground API interattivo</td>\n</tr>\n</tbody></table>\n<h2>Limiti di traffico</h2>\n<table>\n<thead>\n<tr>\n<th>Metodo di auth</th>\n<th>Limite</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Mind Key (header)</td>\n<td>Nessuno</td>\n</tr>\n<tr>\n<td>Mind Key (?key=)</td>\n<td>60/min per IP</td>\n</tr>\n<tr>\n<td>JWT (header)</td>\n<td>Nessuno</td>\n</tr>\n<tr>\n<td>Endpoint pubblici</td>\n<td>Nessuno</td>\n</tr>\n</tbody></table>\n<p>Le risposte con limiti di traffico includono:</p>\n<pre><code class=\"hljs language-plaintext\">X-RateLimit-Limit: 60\nX-RateLimit-Remaining: 42\nRetry-After: 30  (only when 429)</code></pre><h2>Paginazione</h2>\n<p>Gli endpoint di elenco supportano <code>?limit=</code> e <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>Limite predefinito: 100. Limite massimo: 500.</p>\n<h2>CORS</h2>\n<p>Tutti gli endpoint supportano CORS per client basati su browser:</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>SDK e client</h2>\n<ul>\n<li><strong>SDK Node.js</strong>: <code>npm install synapse-memory-sdk</code> (<a href=\"https://gitlab.com/schaefer-services/synapse-sdk-js\">repo</a>)</li>\n<li><strong>Server MCP</strong>: <code>npx -y synapse-mcp-api@latest</code> (<a href=\"https://gitlab.com/schaefer-services/synapse-mcp\">repo</a>)</li>\n<li><strong>Client HTTP</strong>: qualsiasi libreria HTTP (curl, fetch, axios, ecc.)</li>\n</ul>\n<h2>Prossimi passi</h2>\n<ul>\n<li><a href=\"/docs/api/memory\">Memory API</a> — gli endpoint più importanti</li>\n<li><a href=\"/docs/api/chat\">Chat API</a> — comunicazione asincrona umano-agente</li>\n<li><a href=\"/docs/api/errors\">Errori e gestione degli errori</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"]}