{"title":"FAQ API","slug":"api-faq","category":"faq","summary":"Domande comuni sull'API — auth, rate limit, gestione errori, scoperta endpoint.","audience":["human","llm"],"tags":["faq","api","troubleshooting"],"difficulty":"beginner","updated":"2026-06-27","word_count":389,"read_minutes":2,"lang":"it","translated":true,"requested_lang":"it","content_markdown":"\n# FAQ API\n\nDomande comuni sull'API di Synapse.\n\n## Come mi autentico?\n\nDue metodi:\n\n1. **Mind Key** (per endpoint dati): `Authorization: Bearer mk_...`\n2. **JWT** (per endpoint account): `Authorization: Bearer eyJ...`\n\nOppure tramite parametro query (limite 60 req/min): `?key=mk_...`\n\nVeda [Autenticazione](/docs/getting-started/authentication).\n\n## Qual è la differenza tra Mind Key e JWT?\n\n- **Mind Key**: scope tenant, non scade mai, per dati memory/chat/tasks\n- **JWT**: scope utente, scadenza 7 giorni, per gestione account/menti\n\nVeda [Mind Key vs JWT](/docs/getting-started/mind-key-vs-jwt).\n\n## Perché ricevo 401 Unauthorized?\n\nCause comuni:\n\n1. Header `Authorization` mancante\n2. Mind Key non valida (verifichi che inizi con `mk_`)\n3. Uso di un JWT dove è richiesta una Mind Key (o viceversa)\n4. La Mind Key è stata revocata\n\n**Soluzione:** Verifichi il suo token. Veda [Autenticazione](/docs/getting-started/authentication).\n\n## Perché ricevo 404 Not Found?\n\nHa usato un percorso endpoint errato. Synapse ha solo i percorsi elencati in\n`GET /endpoints`.\n\n**Soluzione:** Chiami `GET /endpoints` per vedere tutti i percorsi validi. Non\nindovini.\n\n## Perché ricevo 429 Too Many Requests?\n\nSta usando l'autenticazione tramite parametro query `?key=`, che è limitata a\n60/min.\n\n**Soluzione:** Passi all'header `Authorization: Bearer` (nessun rate limit).\n\nVeda [Limiti di traffico](/docs/api/rate-limits).\n\n## Come elenco tutti gli endpoint?\n\n```bash\ncurl https://synapse.schaefer.zone/endpoints\ncurl https://synapse.schaefer.zone/endpoints?format=text\n```\n\n## Come trovo l'endpoint giusto?\n\n1. Verifichi `GET /endpoints` per la lista machine-readable\n2. Verifichi `GET /help` per la documentazione API completa\n3. Navigi `GET /docs` per il sistema di documentazione\n4. Usi `GET /openapi.json` per la specifica OpenAPI 3.0\n\n## Posso usare GET invece di POST?\n\nAlcuni endpoint POST hanno equivalenti GET per strumenti solo-URL:\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\nVerifichi `GET /endpoints` per le varianti GET disponibili.\n\n## Come gestisco gli errori?\n\nTutti gli errori restituiscono 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\nVeda [Errori e gestione degli errori](/docs/api/errors).\n\n## Qual è il limite del corpo della richiesta?\n\n10 MB. Per payload più grandi (es. caricamento file), usi gli endpoint\nmultipart.\n\n## L'API supporta CORS?\n\nSì. Tutti gli endpoint restituiscono:\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## C'è un SDK?\n\nSì:\n\n- **Node.js**: `npm install synapse-memory-sdk`\n- **MCP**: `npx -y synapse-mcp-api@latest`\n\nVeda [Panoramica API](/docs/api/overview) per i dettagli.\n\n## Come faccio la paginazione?\n\nUsi `?limit=` e `?offset=`:\n\n```bash\ncurl \".../memory?limit=50&offset=100\"\n```\n\nLimite predefinito: 100. Massimo: 500.\n\n## Posso filtrare le memorie per categoria o tag?\n\nSì:\n\n```bash\ncurl \".../memory?category=project\"\ncurl \".../memory?tag=docker\"\ncurl \".../memory/by-tag?tag=production\"\n```\n\n## Come cerco nelle memorie?\n\nIn due modi:\n\n1. **Ricerca per parola chiave FTS5**: `GET /memory/search?q=docker+swarm`\n2. **Ricerca semantica**: `GET /memory/semantic-search?q=container+orchestration`\n\nVeda [Ricerca FTS5](/docs/concepts/fts5-search) e [Ricerca semantica](/docs/concepts/semantic-search).\n\n## Come aggiorno una memoria?\n\nPOST `/memory` con la stessa `category` + `key` — la memoria esistente viene\naggiornata, non duplicata.\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## Come elimino una memoria?\n\n```bash\ncurl -X DELETE -H \"Authorization: Bearer $KEY\" \\\n     https://synapse.schaefer.zone/memory/mem_001\n```\n\n## Posso fare eliminazione bulk?\n\nSì:\n\n```bash\ncurl -X POST .../memory/bulk-delete \\\n  -d '{\"ids\": [\"mem_001\", \"mem_002\", \"mem_003\"]}'\n```\n\n## Prossimi passi\n\n- [Panoramica API](/docs/api/overview)\n- [Errori e gestione degli errori](/docs/api/errors)\n- [Autenticazione](/docs/getting-started/authentication)\n","content_html":"<h1>FAQ API</h1>\n<p>Domande comuni sull&#39;API di Synapse.</p>\n<h2>Come mi autentico?</h2>\n<p>Due metodi:</p>\n<ol>\n<li><strong>Mind Key</strong> (per endpoint dati): <code>Authorization: Bearer mk_...</code></li>\n<li><strong>JWT</strong> (per endpoint account): <code>Authorization: Bearer eyJ...</code></li>\n</ol>\n<p>Oppure tramite parametro query (limite 60 req/min): <code>?key=mk_...</code></p>\n<p>Veda <a href=\"/docs/getting-started/authentication\">Autenticazione</a>.</p>\n<h2>Qual è la differenza tra Mind Key e JWT?</h2>\n<ul>\n<li><strong>Mind Key</strong>: scope tenant, non scade mai, per dati memory/chat/tasks</li>\n<li><strong>JWT</strong>: scope utente, scadenza 7 giorni, per gestione account/menti</li>\n</ul>\n<p>Veda <a href=\"/docs/getting-started/mind-key-vs-jwt\">Mind Key vs JWT</a>.</p>\n<h2>Perché ricevo 401 Unauthorized?</h2>\n<p>Cause comuni:</p>\n<ol>\n<li>Header <code>Authorization</code> mancante</li>\n<li>Mind Key non valida (verifichi che inizi con <code>mk_</code>)</li>\n<li>Uso di un JWT dove è richiesta una Mind Key (o viceversa)</li>\n<li>La Mind Key è stata revocata</li>\n</ol>\n<p><strong>Soluzione:</strong> Verifichi il suo token. Veda <a href=\"/docs/getting-started/authentication\">Autenticazione</a>.</p>\n<h2>Perché ricevo 404 Not Found?</h2>\n<p>Ha usato un percorso endpoint errato. Synapse ha solo i percorsi elencati in\n<code>GET /endpoints</code>.</p>\n<p><strong>Soluzione:</strong> Chiami <code>GET /endpoints</code> per vedere tutti i percorsi validi. Non\nindovini.</p>\n<h2>Perché ricevo 429 Too Many Requests?</h2>\n<p>Sta usando l&#39;autenticazione tramite parametro query <code>?key=</code>, che è limitata a\n60/min.</p>\n<p><strong>Soluzione:</strong> Passi all&#39;header <code>Authorization: Bearer</code> (nessun rate limit).</p>\n<p>Veda <a href=\"/docs/api/rate-limits\">Limiti di traffico</a>.</p>\n<h2>Come elenco tutti gli endpoint?</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>Come trovo l&#39;endpoint giusto?</h2>\n<ol>\n<li>Verifichi <code>GET /endpoints</code> per la lista machine-readable</li>\n<li>Verifichi <code>GET /help</code> per la documentazione API completa</li>\n<li>Navigi <code>GET /docs</code> per il sistema di documentazione</li>\n<li>Usi <code>GET /openapi.json</code> per la specifica OpenAPI 3.0</li>\n</ol>\n<h2>Posso usare GET invece di POST?</h2>\n<p>Alcuni endpoint POST hanno equivalenti GET per strumenti solo-URL:</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>Verifichi <code>GET /endpoints</code> per le varianti GET disponibili.</p>\n<h2>Come gestisco gli errori?</h2>\n<p>Tutti gli errori restituiscono 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>Veda <a href=\"/docs/api/errors\">Errori e gestione degli errori</a>.</p>\n<h2>Qual è il limite del corpo della richiesta?</h2>\n<p>10 MB. Per payload più grandi (es. caricamento file), usi gli endpoint\nmultipart.</p>\n<h2>L&#39;API supporta CORS?</h2>\n<p>Sì. Tutti gli endpoint restituiscono:</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>C&#39;è un SDK?</h2>\n<p>Sì:</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>Veda <a href=\"/docs/api/overview\">Panoramica API</a> per i dettagli.</p>\n<h2>Come faccio la paginazione?</h2>\n<p>Usi <code>?limit=</code> e <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 predefinito: 100. Massimo: 500.</p>\n<h2>Posso filtrare le memorie per categoria o tag?</h2>\n<p>Sì:</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>Come cerco nelle memorie?</h2>\n<p>In due modi:</p>\n<ol>\n<li><strong>Ricerca per parola chiave FTS5</strong>: <code>GET /memory/search?q=docker+swarm</code></li>\n<li><strong>Ricerca semantica</strong>: <code>GET /memory/semantic-search?q=container+orchestration</code></li>\n</ol>\n<p>Veda <a href=\"/docs/concepts/fts5-search\">Ricerca FTS5</a> e <a href=\"/docs/concepts/semantic-search\">Ricerca semantica</a>.</p>\n<h2>Come aggiorno una memoria?</h2>\n<p>POST <code>/memory</code> con la stessa <code>category</code> + <code>key</code> — la memoria esistente viene\naggiornata, non duplicata.</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>Come elimino una memoria?</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>Posso fare eliminazione bulk?</h2>\n<p>Sì:</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>Prossimi passi</h2>\n<ul>\n<li><a href=\"/docs/api/overview\">Panoramica API</a></li>\n<li><a href=\"/docs/api/errors\">Errori e gestione degli errori</a></li>\n<li><a href=\"/docs/getting-started/authentication\">Autenticazione</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"]}