{"title":"FAQ API","slug":"api-faq","category":"faq","summary":"Câu hỏi API phổ biến — xác thực, giới hạn tốc độ, xử lý lỗi, khám phá endpoint.","audience":["human","llm"],"tags":["faq","api","troubleshooting"],"difficulty":"beginner","updated":"2026-06-27","word_count":511,"read_minutes":3,"lang":"vi","translated":true,"requested_lang":"vi","content_markdown":"\n# FAQ API\n\nCác câu hỏi phổ biến về Synapse API.\n\n## Làm thế nào để xác thực?\n\nHai phương thức:\n\n1. **Mind Key** (cho endpoint dữ liệu): `Authorization: Bearer mk_...`\n2. **JWT** (cho endpoint tài khoản): `Authorization: Bearer eyJ...`\n\nHoặc qua tham số query (giới hạn 60 yêu cầu/phút): `?key=mk_...`\n\nXem [Xác thực](/docs/getting-started/authentication).\n\n## Sự khác biệt giữa Mind Key và JWT là gì?\n\n- **Mind Key**: phạm vi tenant, không bao giờ hết hạn, cho dữ liệu memory/chat/tasks\n- **JWT**: phạm vi người dùng, hết hạn sau 7 ngày, cho quản lý tài khoản/mind\n\nXem [Mind Key vs JWT](/docs/getting-started/mind-key-vs-jwt).\n\n## Tại sao tôi nhận 401 Unauthorized?\n\nNguyên nhân phổ biến:\n\n1. Thiếu header `Authorization`\n2. Mind Key không hợp lệ (xác minh nó bắt đầu bằng `mk_`)\n3. Sử dụng JWT nơi yêu cầu Mind Key (hoặc ngược lại)\n4. Mind Key đã bị thu hồi\n\n**Khắc phục:** Xác minh token của bạn. Xem [Xác thực](/docs/getting-started/authentication).\n\n## Tại sao tôi nhận 404 Not Found?\n\nBạn đã dùng sai đường dẫn endpoint. Synapse chỉ có các đường dẫn liệt kê trong\n`GET /endpoints`.\n\n**Khắc phục:** Gọi `GET /endpoints` để xem tất cả đường dẫn hợp lệ. Không đoán.\n\n## Tại sao tôi nhận 429 Too Many Requests?\n\nBạn đang sử dụng xác thực tham số query `?key=`, bị giới hạn 60/phút.\n\n**Khắc phục:** Chuyển sang header `Authorization: Bearer` (không giới hạn tốc độ).\n\nXem [Giới hạn tốc độ](/docs/api/rate-limits).\n\n## Làm thế nào để liệt kê tất cả endpoint?\n\n```bash\ncurl https://synapse.schaefer.zone/endpoints\ncurl https://synapse.schaefer.zone/endpoints?format=text\n```\n\n## Làm thế nào để tìm đúng endpoint?\n\n1. Kiểm tra `GET /endpoints` cho danh sách đọc bằng máy\n2. Kiểm tra `GET /help` cho tài liệu API đầy đủ\n3. Duyệt `GET /docs` cho hệ thống tài liệu\n4. Sử dụng `GET /openapi.json` cho đặc tả OpenAPI 3.0\n\n## Tôi có thể dùng GET thay vì POST không?\n\nMột số endpoint POST có phiên bản GET tương đương cho công cụ chỉ dùng 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\nKiểm tra `GET /endpoints` cho các biến thể GET khả dụng.\n\n## Làm thế nào để xử lý lỗi?\n\nTất cả lỗi trả về 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\nXem [Lỗi & Xử lý lỗi](/docs/api/errors).\n\n## Giới hạn body yêu cầu là bao nhiêu?\n\n10 MB. Cho payload lớn hơn (ví dụ tải tệp lên), sử dụng các endpoint multipart.\n\n## API có hỗ trợ CORS không?\n\nCó. Tất cả endpoint trả về:\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ó SDK không?\n\nCó:\n\n- **Node.js**: `npm install synapse-memory-sdk`\n- **MCP**: `npx -y synapse-mcp-api@latest`\n\nXem [Tổng quan API](/docs/api/overview) để biết chi tiết.\n\n## Làm thế nào để phân trang?\n\nSử dụng `?limit=` và `?offset=`:\n\n```bash\ncurl \".../memory?limit=50&offset=100\"\n```\n\nGiới hạn mặc định: 100. Tối đa: 500.\n\n## Tôi có thể lọc bộ nhớ theo danh mục hoặc tag không?\n\nCó:\n\n```bash\ncurl \".../memory?category=project\"\ncurl \".../memory?tag=docker\"\ncurl \".../memory/by-tag?tag=production\"\n```\n\n## Làm thế nào để tìm kiếm bộ nhớ?\n\nHai cách:\n\n1. **Tìm kiếm từ khóa FTS5**: `GET /memory/search?q=docker+swarm`\n2. **Tìm kiếm ngữ nghĩa**: `GET /memory/semantic-search?q=container+orchestration`\n\nXem [Tìm kiếm FTS5](/docs/concepts/fts5-search) và [Tìm kiếm ngữ nghĩa](/docs/concepts/semantic-search).\n\n## Làm thế nào để cập nhật bộ nhớ?\n\nPOST `/memory` với cùng `category` + `key` — bộ nhớ hiện có được cập nhật, không\ntrùng lặp.\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## Làm thế nào để xóa bộ nhớ?\n\n```bash\ncurl -X DELETE -H \"Authorization: Bearer $KEY\" \\\n     https://synapse.schaefer.zone/memory/mem_001\n```\n\n## Tôi có thể xóa hàng loạt không?\n\nCó:\n\n```bash\ncurl -X POST .../memory/bulk-delete \\\n  -d '{\"ids\": [\"mem_001\", \"mem_002\", \"mem_003\"]}'\n```\n\n## Bước tiếp theo\n\n- [Tổng quan API](/docs/api/overview)\n- [Lỗi & Xử lý lỗi](/docs/api/errors)\n- [Xác thực](/docs/getting-started/authentication)\n","content_html":"<h1>FAQ API</h1>\n<p>Các câu hỏi phổ biến về Synapse API.</p>\n<h2>Làm thế nào để xác thực?</h2>\n<p>Hai phương thức:</p>\n<ol>\n<li><strong>Mind Key</strong> (cho endpoint dữ liệu): <code>Authorization: Bearer mk_...</code></li>\n<li><strong>JWT</strong> (cho endpoint tài khoản): <code>Authorization: Bearer eyJ...</code></li>\n</ol>\n<p>Hoặc qua tham số query (giới hạn 60 yêu cầu/phút): <code>?key=mk_...</code></p>\n<p>Xem <a href=\"/docs/getting-started/authentication\">Xác thực</a>.</p>\n<h2>Sự khác biệt giữa Mind Key và JWT là gì?</h2>\n<ul>\n<li><strong>Mind Key</strong>: phạm vi tenant, không bao giờ hết hạn, cho dữ liệu memory/chat/tasks</li>\n<li><strong>JWT</strong>: phạm vi người dùng, hết hạn sau 7 ngày, cho quản lý tài khoản/mind</li>\n</ul>\n<p>Xem <a href=\"/docs/getting-started/mind-key-vs-jwt\">Mind Key vs JWT</a>.</p>\n<h2>Tại sao tôi nhận 401 Unauthorized?</h2>\n<p>Nguyên nhân phổ biến:</p>\n<ol>\n<li>Thiếu header <code>Authorization</code></li>\n<li>Mind Key không hợp lệ (xác minh nó bắt đầu bằng <code>mk_</code>)</li>\n<li>Sử dụng JWT nơi yêu cầu Mind Key (hoặc ngược lại)</li>\n<li>Mind Key đã bị thu hồi</li>\n</ol>\n<p><strong>Khắc phục:</strong> Xác minh token của bạn. Xem <a href=\"/docs/getting-started/authentication\">Xác thực</a>.</p>\n<h2>Tại sao tôi nhận 404 Not Found?</h2>\n<p>Bạn đã dùng sai đường dẫn endpoint. Synapse chỉ có các đường dẫn liệt kê trong\n<code>GET /endpoints</code>.</p>\n<p><strong>Khắc phục:</strong> Gọi <code>GET /endpoints</code> để xem tất cả đường dẫn hợp lệ. Không đoán.</p>\n<h2>Tại sao tôi nhận 429 Too Many Requests?</h2>\n<p>Bạn đang sử dụng xác thực tham số query <code>?key=</code>, bị giới hạn 60/phút.</p>\n<p><strong>Khắc phục:</strong> Chuyển sang header <code>Authorization: Bearer</code> (không giới hạn tốc độ).</p>\n<p>Xem <a href=\"/docs/api/rate-limits\">Giới hạn tốc độ</a>.</p>\n<h2>Làm thế nào để liệt kê tất cả 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>Làm thế nào để tìm đúng endpoint?</h2>\n<ol>\n<li>Kiểm tra <code>GET /endpoints</code> cho danh sách đọc bằng máy</li>\n<li>Kiểm tra <code>GET /help</code> cho tài liệu API đầy đủ</li>\n<li>Duyệt <code>GET /docs</code> cho hệ thống tài liệu</li>\n<li>Sử dụng <code>GET /openapi.json</code> cho đặc tả OpenAPI 3.0</li>\n</ol>\n<h2>Tôi có thể dùng GET thay vì POST không?</h2>\n<p>Một số endpoint POST có phiên bản GET tương đương cho công cụ chỉ dùng 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>Kiểm tra <code>GET /endpoints</code> cho các biến thể GET khả dụng.</p>\n<h2>Làm thế nào để xử lý lỗi?</h2>\n<p>Tất cả lỗi trả về 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>Xem <a href=\"/docs/api/errors\">Lỗi &amp; Xử lý lỗi</a>.</p>\n<h2>Giới hạn body yêu cầu là bao nhiêu?</h2>\n<p>10 MB. Cho payload lớn hơn (ví dụ tải tệp lên), sử dụng các endpoint multipart.</p>\n<h2>API có hỗ trợ CORS không?</h2>\n<p>Có. Tất cả endpoint trả về:</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ó SDK không?</h2>\n<p>Có:</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>Xem <a href=\"/docs/api/overview\">Tổng quan API</a> để biết chi tiết.</p>\n<h2>Làm thế nào để phân trang?</h2>\n<p>Sử dụng <code>?limit=</code> và <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>Giới hạn mặc định: 100. Tối đa: 500.</p>\n<h2>Tôi có thể lọc bộ nhớ theo danh mục hoặc tag không?</h2>\n<p>Có:</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>Làm thế nào để tìm kiếm bộ nhớ?</h2>\n<p>Hai cách:</p>\n<ol>\n<li><strong>Tìm kiếm từ khóa FTS5</strong>: <code>GET /memory/search?q=docker+swarm</code></li>\n<li><strong>Tìm kiếm ngữ nghĩa</strong>: <code>GET /memory/semantic-search?q=container+orchestration</code></li>\n</ol>\n<p>Xem <a href=\"/docs/concepts/fts5-search\">Tìm kiếm FTS5</a> và <a href=\"/docs/concepts/semantic-search\">Tìm kiếm ngữ nghĩa</a>.</p>\n<h2>Làm thế nào để cập nhật bộ nhớ?</h2>\n<p>POST <code>/memory</code> với cùng <code>category</code> + <code>key</code> — bộ nhớ hiện có được cập nhật, không\ntrùng lặp.</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>Làm thế nào để xóa bộ nhớ?</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>Tôi có thể xóa hàng loạt không?</h2>\n<p>Có:</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>Bước tiếp theo</h2>\n<ul>\n<li><a href=\"/docs/api/overview\">Tổng quan API</a></li>\n<li><a href=\"/docs/api/errors\">Lỗi &amp; Xử lý lỗi</a></li>\n<li><a href=\"/docs/getting-started/authentication\">Xác thực</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"]}