{"title":"FAQ API","slug":"api-faq","category":"faq","summary":"Pertanyaan API umum — autentikasi, rate limits, penanganan error, penemuan endpoint.","audience":["human","llm"],"tags":["faq","api","troubleshooting"],"difficulty":"beginner","updated":"2026-06-27","word_count":378,"read_minutes":2,"lang":"id","translated":true,"requested_lang":"id","content_markdown":"\n# FAQ API\n\nPertanyaan umum tentang API Synapse.\n\n## Bagaimana cara saya melakukan autentikasi?\n\nDua metode:\n\n1. **Mind Key** (untuk endpoint data): `Authorization: Bearer mk_...`\n2. **JWT** (untuk endpoint akun): `Authorization: Bearer eyJ...`\n\nAtau melalui parameter query (batas 60 req/menit): `?key=mk_...`\n\nLihat [Autentikasi](/docs/getting-started/authentication).\n\n## Apa perbedaan antara Mind Key dan JWT?\n\n- **Mind Key**: cakupan tenant, tidak pernah kedaluwarsa, untuk data memori/chat/tugas\n- **JWT**: cakupan pengguna, kedaluwarsa 7 hari, untuk manajemen akun/mind\n\nLihat [Mind Key vs JWT](/docs/getting-started/mind-key-vs-jwt).\n\n## Mengapa saya mendapat 401 Unauthorized?\n\nPenyebab umum:\n\n1. Header `Authorization` tidak ada\n2. Mind Key tidak valid (verifikasi dimulai dengan `mk_`)\n3. Menggunakan JWT di mana Mind Key diperlukan (atau sebaliknya)\n4. Mind Key telah dicabut\n\n**Perbaikan:** Verifikasi token Anda. Lihat [Autentikasi](/docs/getting-started/authentication).\n\n## Mengapa saya mendapat 404 Not Found?\n\nAnda menggunakan path endpoint yang salah. Synapse hanya memiliki path yang\ntercantum di `GET /endpoints`.\n\n**Perbaikan:** Panggil `GET /endpoints` untuk melihat semua path yang valid. Jangan menebak.\n\n## Mengapa saya mendapat 429 Too Many Requests?\n\nAnda menggunakan autentikasi parameter query `?key=`, yang di-rate-limit ke 60/menit.\n\n**Perbaikan:** Beralih ke header `Authorization: Bearer` (tanpa rate limit).\n\nLihat [Rate Limits](/docs/api/rate-limits).\n\n## Bagaimana cara mendaftar semua endpoint?\n\n```bash\ncurl https://synapse.schaefer.zone/endpoints\ncurl https://synapse.schaefer.zone/endpoints?format=text\n```\n\n## Bagaimana cara menemukan endpoint yang tepat?\n\n1. Periksa `GET /endpoints` untuk daftar yang dapat dibaca mesin\n2. Periksa `GET /help` untuk dokumentasi API lengkap\n3. Telusuri `GET /docs` untuk sistem dokumentasi\n4. Gunakan `GET /openapi.json` untuk spesifikasi OpenAPI 3.0\n\n## Bisakah saya menggunakan GET alih-alih POST?\n\nBeberapa endpoint POST memiliki padanan GET untuk alat yang hanya menggunakan 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\nPeriksa `GET /endpoints` untuk varian GET yang tersedia.\n\n## Bagaimana cara saya menangani error?\n\nSemua error mengembalikan 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\nLihat [Errors & Error Handling](/docs/api/errors).\n\n## Berapa batas body permintaan?\n\n10 MB. Untuk payload yang lebih besar (mis. unggahan file), gunakan endpoint multipart.\n\n## Apakah API mendukung CORS?\n\nYa. Semua endpoint mengembalikan:\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## Apakah ada SDK?\n\nYa:\n\n- **Node.js**: `npm install synapse-memory-sdk`\n- **MCP**: `npx -y synapse-mcp-api@latest`\n\nLihat [Ikhtisar API](/docs/api/overview) untuk detail.\n\n## Bagaimana cara melakukan paginasi?\n\nGunakan `?limit=` dan `?offset=`:\n\n```bash\ncurl \".../memory?limit=50&offset=100\"\n```\n\nLimit default: 100. Maksimum: 500.\n\n## Bisakah saya memfilter memori berdasarkan kategori atau tag?\n\nYa:\n\n```bash\ncurl \".../memory?category=project\"\ncurl \".../memory?tag=docker\"\ncurl \".../memory/by-tag?tag=production\"\n```\n\n## Bagaimana cara mencari memori?\n\nDua cara:\n\n1. **Pencarian kata kunci FTS5**: `GET /memory/search?q=docker+swarm`\n2. **Pencarian semantik**: `GET /memory/semantic-search?q=container+orchestration`\n\nLihat [Pencarian FTS5](/docs/concepts/fts5-search) dan [Pencarian Semantik](/docs/concepts/semantic-search).\n\n## Bagaimana cara memperbarui memori?\n\nPOST `/memory` dengan `category` + `key` yang sama — memori yang ada\ndiperbarui, tidak diduplikasi.\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## Bagaimana cara menghapus memori?\n\n```bash\ncurl -X DELETE -H \"Authorization: Bearer $KEY\" \\\n     https://synapse.schaefer.zone/memory/mem_001\n```\n\n## Bisakah saya menghapus secara massal?\n\nYa:\n\n```bash\ncurl -X POST .../memory/bulk-delete \\\n  -d '{\"ids\": [\"mem_001\", \"mem_002\", \"mem_003\"]}'\n```\n\n## Langkah Berikutnya\n\n- [Ikhtisar API](/docs/api/overview)\n- [Errors & Error Handling](/docs/api/errors)\n- [Autentikasi](/docs/getting-started/authentication)\n","content_html":"<h1>FAQ API</h1>\n<p>Pertanyaan umum tentang API Synapse.</p>\n<h2>Bagaimana cara saya melakukan autentikasi?</h2>\n<p>Dua metode:</p>\n<ol>\n<li><strong>Mind Key</strong> (untuk endpoint data): <code>Authorization: Bearer mk_...</code></li>\n<li><strong>JWT</strong> (untuk endpoint akun): <code>Authorization: Bearer eyJ...</code></li>\n</ol>\n<p>Atau melalui parameter query (batas 60 req/menit): <code>?key=mk_...</code></p>\n<p>Lihat <a href=\"/docs/getting-started/authentication\">Autentikasi</a>.</p>\n<h2>Apa perbedaan antara Mind Key dan JWT?</h2>\n<ul>\n<li><strong>Mind Key</strong>: cakupan tenant, tidak pernah kedaluwarsa, untuk data memori/chat/tugas</li>\n<li><strong>JWT</strong>: cakupan pengguna, kedaluwarsa 7 hari, untuk manajemen akun/mind</li>\n</ul>\n<p>Lihat <a href=\"/docs/getting-started/mind-key-vs-jwt\">Mind Key vs JWT</a>.</p>\n<h2>Mengapa saya mendapat 401 Unauthorized?</h2>\n<p>Penyebab umum:</p>\n<ol>\n<li>Header <code>Authorization</code> tidak ada</li>\n<li>Mind Key tidak valid (verifikasi dimulai dengan <code>mk_</code>)</li>\n<li>Menggunakan JWT di mana Mind Key diperlukan (atau sebaliknya)</li>\n<li>Mind Key telah dicabut</li>\n</ol>\n<p><strong>Perbaikan:</strong> Verifikasi token Anda. Lihat <a href=\"/docs/getting-started/authentication\">Autentikasi</a>.</p>\n<h2>Mengapa saya mendapat 404 Not Found?</h2>\n<p>Anda menggunakan path endpoint yang salah. Synapse hanya memiliki path yang\ntercantum di <code>GET /endpoints</code>.</p>\n<p><strong>Perbaikan:</strong> Panggil <code>GET /endpoints</code> untuk melihat semua path yang valid. Jangan menebak.</p>\n<h2>Mengapa saya mendapat 429 Too Many Requests?</h2>\n<p>Anda menggunakan autentikasi parameter query <code>?key=</code>, yang di-rate-limit ke 60/menit.</p>\n<p><strong>Perbaikan:</strong> Beralih ke header <code>Authorization: Bearer</code> (tanpa rate limit).</p>\n<p>Lihat <a href=\"/docs/api/rate-limits\">Rate Limits</a>.</p>\n<h2>Bagaimana cara mendaftar semua 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>Bagaimana cara menemukan endpoint yang tepat?</h2>\n<ol>\n<li>Periksa <code>GET /endpoints</code> untuk daftar yang dapat dibaca mesin</li>\n<li>Periksa <code>GET /help</code> untuk dokumentasi API lengkap</li>\n<li>Telusuri <code>GET /docs</code> untuk sistem dokumentasi</li>\n<li>Gunakan <code>GET /openapi.json</code> untuk spesifikasi OpenAPI 3.0</li>\n</ol>\n<h2>Bisakah saya menggunakan GET alih-alih POST?</h2>\n<p>Beberapa endpoint POST memiliki padanan GET untuk alat yang hanya menggunakan 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>Periksa <code>GET /endpoints</code> untuk varian GET yang tersedia.</p>\n<h2>Bagaimana cara saya menangani error?</h2>\n<p>Semua error mengembalikan 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>Lihat <a href=\"/docs/api/errors\">Errors &amp; Error Handling</a>.</p>\n<h2>Berapa batas body permintaan?</h2>\n<p>10 MB. Untuk payload yang lebih besar (mis. unggahan file), gunakan endpoint multipart.</p>\n<h2>Apakah API mendukung CORS?</h2>\n<p>Ya. Semua endpoint mengembalikan:</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>Apakah ada SDK?</h2>\n<p>Ya:</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>Lihat <a href=\"/docs/api/overview\">Ikhtisar API</a> untuk detail.</p>\n<h2>Bagaimana cara melakukan paginasi?</h2>\n<p>Gunakan <code>?limit=</code> dan <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>Limit default: 100. Maksimum: 500.</p>\n<h2>Bisakah saya memfilter memori berdasarkan kategori atau tag?</h2>\n<p>Ya:</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>Bagaimana cara mencari memori?</h2>\n<p>Dua cara:</p>\n<ol>\n<li><strong>Pencarian kata kunci FTS5</strong>: <code>GET /memory/search?q=docker+swarm</code></li>\n<li><strong>Pencarian semantik</strong>: <code>GET /memory/semantic-search?q=container+orchestration</code></li>\n</ol>\n<p>Lihat <a href=\"/docs/concepts/fts5-search\">Pencarian FTS5</a> dan <a href=\"/docs/concepts/semantic-search\">Pencarian Semantik</a>.</p>\n<h2>Bagaimana cara memperbarui memori?</h2>\n<p>POST <code>/memory</code> dengan <code>category</code> + <code>key</code> yang sama — memori yang ada\ndiperbarui, tidak diduplikasi.</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>Bagaimana cara menghapus memori?</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>Bisakah saya menghapus secara massal?</h2>\n<p>Ya:</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>Langkah Berikutnya</h2>\n<ul>\n<li><a href=\"/docs/api/overview\">Ikhtisar API</a></li>\n<li><a href=\"/docs/api/errors\">Errors &amp; Error Handling</a></li>\n<li><a href=\"/docs/getting-started/authentication\">Autentikasi</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"]}