{"title":"API FAQ","slug":"api-faq","category":"faq","summary":"Поширені питання про API — автентифікація, обмеження частоти, обробка помилок, виявлення кінцевих точок.","audience":["human","llm"],"tags":["faq","api","troubleshooting"],"difficulty":"beginner","updated":"2026-06-27","word_count":367,"read_minutes":2,"lang":"uk","translated":true,"requested_lang":"uk","content_markdown":"\n# API FAQ\n\nПоширені запитання щодо API Synapse.\n\n## Як автентифікуватися?\n\nДва методи:\n\n1. **Mind Key** (для кінцевих точок даних): `Authorization: Bearer mk_...`\n2. **JWT** (для кінцевих точок облікового запису): `Authorization: Bearer eyJ...`\n\nАбо через параметр запиту (ліміт 60 запитів/хв): `?key=mk_...`\n\nДивіться [Автентифікацію](/docs/getting-started/authentication).\n\n## У чому різниця між Mind Key та JWT?\n\n- **Mind Key**: прив'язаний до mind-у, ніколи не закінчується, для даних memory/chat/tasks\n- **JWT**: прив'язаний до користувача, термін дії 7 днів, для керування обліковим записом/mind-ами\n\nДивіться [Mind Key проти JWT](/docs/getting-started/mind-key-vs-jwt).\n\n## Чому я отримую 401 Unauthorized?\n\nПоширені причини:\n\n1. Відсутній заголовок `Authorization`\n2. Недійсний Mind Key (перевірте, що починається з `mk_`)\n3. Використання JWT там, де потрібен Mind Key (або навпаки)\n4. Mind Key відкликано\n\n**Виправлення:** Перевірте ваш токен. Дивіться [Автентифікацію](/docs/getting-started/authentication).\n\n## Чому я отримую 404 Not Found?\n\nВи використали неправильний шлях кінцевої точки. У Synapse є лише шляхи зі списку\n`GET /endpoints`.\n\n**Виправлення:** Викличте `GET /endpoints`, щоб побачити всі дійсні шляхи. Не вгадуйте.\n\n## Чому я отримую 429 Too Many Requests?\n\nВи використовуєте автентифікацію через параметр запиту `?key=`, що обмежена до 60/хв.\n\n**Виправлення:** Перейдіть на заголовок `Authorization: Bearer` (без обмеження).\n\nДивіться [Обмеження частоти](/docs/api/rate-limits).\n\n## Як вивести список усіх кінцевих точок?\n\n```bash\ncurl https://synapse.schaefer.zone/endpoints\ncurl https://synapse.schaefer.zone/endpoints?format=text\n```\n\n## Як знайти потрібну кінцеву точку?\n\n1. Перевірте `GET /endpoints` для машиночитного списку\n2. Перевірте `GET /help` для повної документації API\n3. Перегляньте `GET /docs` для системи документації\n4. Використовуйте `GET /openapi.json` для специфікації OpenAPI 3.0\n\n## Чи можна використовувати GET замість POST?\n\nДеякі POST-кінцеві точки мають GET-аналоги для URL-only інструментів:\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\nПеревірте `GET /endpoints` для доступних GET-варіантів.\n\n## Як обробляти помилки?\n\nУсі помилки повертають 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\nДивіться [Помилки та обробка помилок](/docs/api/errors).\n\n## Який ліміт розміру тіла запиту?\n\n10 МБ. Для більших корисних навантажень (напр. завантаження файлів) використовуйте\nmultipart-кінцеві точки.\n\n## Чи підтримує API CORS?\n\nТак. Усі кінцеві точки повертають:\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## Чи є SDK?\n\nТак:\n\n- **Node.js**: `npm install synapse-memory-sdk`\n- **MCP**: `npx -y synapse-mcp-api@latest`\n\nДивіться [Огляд API](/docs/api/overview) для деталей.\n\n## Як робити пагінацію?\n\nВикористовуйте `?limit=` та `?offset=`:\n\n```bash\ncurl \".../memory?limit=50&offset=100\"\n```\n\nЛіміт за замовчуванням: 100. Макс: 500.\n\n## Чи можна фільтрувати спогади за категорією або тегом?\n\nТак:\n\n```bash\ncurl \".../memory?category=project\"\ncurl \".../memory?tag=docker\"\ncurl \".../memory/by-tag?tag=production\"\n```\n\n## Як шукати спогади?\n\nДвома способами:\n\n1. **Пошук ключових слів FTS5**: `GET /memory/search?q=docker+swarm`\n2. **Семантичний пошук**: `GET /memory/semantic-search?q=container+orchestration`\n\nДивіться [Пошук FTS5](/docs/concepts/fts5-search) та [Семантичний пошук](/docs/concepts/semantic-search).\n\n## Як оновити спогад?\n\nPOST `/memory` з тією ж `category` + `key` — наявний спогад оновлюється, а не\nдублюється.\n\n```bash\n# Початкове збереження\ncurl -X POST .../memory -d '{\"category\":\"fact\",\"key\":\"user_name\",\"content\":\"Michael\"}'\n\n# Оновлення (той самий ключ)\ncurl -X POST .../memory -d '{\"category\":\"fact\",\"key\":\"user_name\",\"content\":\"Michael Schäfer\"}'\n```\n\n## Як видалити спогад?\n\n```bash\ncurl -X DELETE -H \"Authorization: Bearer $KEY\" \\\n     https://synapse.schaefer.zone/memory/mem_001\n```\n\n## Чи можна масово видаляти?\n\nТак:\n\n```bash\ncurl -X POST .../memory/bulk-delete \\\n  -d '{\"ids\": [\"mem_001\", \"mem_002\", \"mem_003\"]}'\n```\n\n## Наступні кроки\n\n- [Огляд API](/docs/api/overview)\n- [Помилки та обробка помилок](/docs/api/errors)\n- [Автентифікація](/docs/getting-started/authentication)\n","content_html":"<h1>API FAQ</h1>\n<p>Поширені запитання щодо API Synapse.</p>\n<h2>Як автентифікуватися?</h2>\n<p>Два методи:</p>\n<ol>\n<li><strong>Mind Key</strong> (для кінцевих точок даних): <code>Authorization: Bearer mk_...</code></li>\n<li><strong>JWT</strong> (для кінцевих точок облікового запису): <code>Authorization: Bearer eyJ...</code></li>\n</ol>\n<p>Або через параметр запиту (ліміт 60 запитів/хв): <code>?key=mk_...</code></p>\n<p>Дивіться <a href=\"/docs/getting-started/authentication\">Автентифікацію</a>.</p>\n<h2>У чому різниця між Mind Key та JWT?</h2>\n<ul>\n<li><strong>Mind Key</strong>: прив&#39;язаний до mind-у, ніколи не закінчується, для даних memory/chat/tasks</li>\n<li><strong>JWT</strong>: прив&#39;язаний до користувача, термін дії 7 днів, для керування обліковим записом/mind-ами</li>\n</ul>\n<p>Дивіться <a href=\"/docs/getting-started/mind-key-vs-jwt\">Mind Key проти JWT</a>.</p>\n<h2>Чому я отримую 401 Unauthorized?</h2>\n<p>Поширені причини:</p>\n<ol>\n<li>Відсутній заголовок <code>Authorization</code></li>\n<li>Недійсний Mind Key (перевірте, що починається з <code>mk_</code>)</li>\n<li>Використання JWT там, де потрібен Mind Key (або навпаки)</li>\n<li>Mind Key відкликано</li>\n</ol>\n<p><strong>Виправлення:</strong> Перевірте ваш токен. Дивіться <a href=\"/docs/getting-started/authentication\">Автентифікацію</a>.</p>\n<h2>Чому я отримую 404 Not Found?</h2>\n<p>Ви використали неправильний шлях кінцевої точки. У Synapse є лише шляхи зі списку\n<code>GET /endpoints</code>.</p>\n<p><strong>Виправлення:</strong> Викличте <code>GET /endpoints</code>, щоб побачити всі дійсні шляхи. Не вгадуйте.</p>\n<h2>Чому я отримую 429 Too Many Requests?</h2>\n<p>Ви використовуєте автентифікацію через параметр запиту <code>?key=</code>, що обмежена до 60/хв.</p>\n<p><strong>Виправлення:</strong> Перейдіть на заголовок <code>Authorization: Bearer</code> (без обмеження).</p>\n<p>Дивіться <a href=\"/docs/api/rate-limits\">Обмеження частоти</a>.</p>\n<h2>Як вивести список усіх кінцевих точок?</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>Як знайти потрібну кінцеву точку?</h2>\n<ol>\n<li>Перевірте <code>GET /endpoints</code> для машиночитного списку</li>\n<li>Перевірте <code>GET /help</code> для повної документації API</li>\n<li>Перегляньте <code>GET /docs</code> для системи документації</li>\n<li>Використовуйте <code>GET /openapi.json</code> для специфікації OpenAPI 3.0</li>\n</ol>\n<h2>Чи можна використовувати GET замість POST?</h2>\n<p>Деякі POST-кінцеві точки мають GET-аналоги для URL-only інструментів:</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>Перевірте <code>GET /endpoints</code> для доступних GET-варіантів.</p>\n<h2>Як обробляти помилки?</h2>\n<p>Усі помилки повертають 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>Дивіться <a href=\"/docs/api/errors\">Помилки та обробка помилок</a>.</p>\n<h2>Який ліміт розміру тіла запиту?</h2>\n<p>10 МБ. Для більших корисних навантажень (напр. завантаження файлів) використовуйте\nmultipart-кінцеві точки.</p>\n<h2>Чи підтримує API CORS?</h2>\n<p>Так. Усі кінцеві точки повертають:</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>Чи є SDK?</h2>\n<p>Так:</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>Дивіться <a href=\"/docs/api/overview\">Огляд API</a> для деталей.</p>\n<h2>Як робити пагінацію?</h2>\n<p>Використовуйте <code>?limit=</code> та <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>Ліміт за замовчуванням: 100. Макс: 500.</p>\n<h2>Чи можна фільтрувати спогади за категорією або тегом?</h2>\n<p>Так:</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>Як шукати спогади?</h2>\n<p>Двома способами:</p>\n<ol>\n<li><strong>Пошук ключових слів FTS5</strong>: <code>GET /memory/search?q=docker+swarm</code></li>\n<li><strong>Семантичний пошук</strong>: <code>GET /memory/semantic-search?q=container+orchestration</code></li>\n</ol>\n<p>Дивіться <a href=\"/docs/concepts/fts5-search\">Пошук FTS5</a> та <a href=\"/docs/concepts/semantic-search\">Семантичний пошук</a>.</p>\n<h2>Як оновити спогад?</h2>\n<p>POST <code>/memory</code> з тією ж <code>category</code> + <code>key</code> — наявний спогад оновлюється, а не\nдублюється.</p>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># Початкове збереження</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\"># Оновлення (той самий ключ)</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>Як видалити спогад?</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>Чи можна масово видаляти?</h2>\n<p>Так:</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>Наступні кроки</h2>\n<ul>\n<li><a href=\"/docs/api/overview\">Огляд API</a></li>\n<li><a href=\"/docs/api/errors\">Помилки та обробка помилок</a></li>\n<li><a href=\"/docs/getting-started/authentication\">Автентифікація</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"]}