{"title":"ภาพรวม API และ Base URL","slug":"overview","category":"api","summary":"endpoint ทั้งหมดของ Synapse API, base URL, รูปแบบการยืนยันตัวตน และรูปแบบการตอบกลับในภาพรวม","audience":["human","llm"],"tags":["api","overview","endpoints"],"difficulty":"beginner","updated":"2026-06-27","word_count":489,"read_minutes":2,"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":"th","translated":true,"requested_lang":"th","content_markdown":"\n# ภาพรวม API และ Base URL\n\nSynapse API เป็น RESTful HTTP API ทุก endpoint ส่งกลับเป็น JSON (ยกเว้นในกรณีที่ระบุไว้เป็นอย่างอื่น) เอกสารหน้านี้ครอบคลุมสิ่งสำคัญที่คุณต้องรู้ก่อนเจาะลึก endpoint เฉพาะทาง\n\n## Base URL\n\n```\nhttps://synapse.schaefer.zone\n```\n\nพาธทั้งหมดในเอกสารนี้เป็นแบบ relative ต่อ base URL นี้ สำหรับ instance ที่ self-hosted ให้แทนที่ด้วย URL ของคุณเอง\n\n## การยืนยันตัวตน\n\nมีสองวิธี ทั้งคู่ส่งผ่าน `Authorization` header:\n\n```\nAuthorization: Bearer YOUR_MIND_KEY    # สำหรับ endpoint ข้อมูล\nAuthorization: Bearer YOUR_JWT          # สำหรับ endpoint บัญชี\n```\n\nหรือผ่าน query parameter (จำกัดอัตรา 60 ครั้ง/นาที):\n\n```\n?key=YOUR_MIND_KEY\n```\n\nดูรายละเอียดที่ [Authentication](/docs/getting-started/authentication)\n\n## กลุ่มของ Endpoint\n\n| กลุ่ม | Auth | คำอธิบาย |\n|-------|------|-------------|\n| Public | None | Landing page, health, OpenAPI, docs |\n| Memory | Mind Key | CRUD, search, sync, embeddings |\n| Chat | Mind Key / JWT | การส่งข้อความแบบ asynchronous ระหว่าง human และ agent |\n| Tasks | Mind Key | การจัดการ task |\n| Scripts | Mind Key / JWT | ที่เก็บ script แบบถาวร |\n| Scheduler | Mind Key | Cron jobs + variables |\n| Webhooks | Mind Key | HTTP callback บน event |\n| Computers | Mind Key / JWT | ควบคุม computer ระยะไกล |\n| User/Minds | JWT | บัญชี + การจัดการ mind |\n| Sharing | JWT | การแชร์ mind ระหว่างผู้ใช้ |\n| Push | JWT | Web Push subscriptions |\n| Tools | None | Time, calc, random (public utilities) |\n\n## รูปแบบการตอบกลับ\n\n- **JSON** (ค่าเริ่มต้น): `{ \"key\": \"value\", ... }`\n- **Plain text**: `/memory/recall` ส่งกลับเป็น text ที่ปรับให้เหมาะกับ LLM\n- **HTML**: `/`, `/docs`, `/human`, `/support`, `/playground`\n\n## Standard Response Envelope\n\nResponse สำเร็จส่งข้อมูลกลับมาโดยตรง:\n\n```json\n{ \"id\": \"mem_001\", \"status\": \"stored\" }\n```\n\nResponse ผิดพลาดใช้รูปแบบนี้:\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> ฟิลด์ `docs` เชื่อมโยงไปยังเอกสารที่เกี่ยวข้องสำหรับ error ทั่วไป\n\n## HTTP Status Codes\n\n| Code | ความหมาย |\n|------|---------|\n| 200 | Success (GET, PUT) |\n| 201 | Created (POST) |\n| 204 | No content (DELETE) |\n| 400 | Bad request (validation error) |\n| 401 | Unauthorized (missing/invalid token) |\n| 403 | Forbidden (wrong token type) |\n| 404 | Not found (path doesn't exist) |\n| 409 | Conflict (duplicate) |\n| 429 | Too many requests (rate limit) |\n| 500 | Server error |\n\n## Discoverability Endpoints\n\n| Endpoint | วัตถุประสงค์ |\n|----------|---------|\n| `GET /` | Landing page (LLM-optimized) |\n| `GET /endpoints` | รายการ machine-readable ของ endpoint ทั้งหมด |\n| `GET /endpoints?format=text` | รายการ endpoint ในรูปแบบ plain-text |\n| `GET /openapi.json` | OpenAPI 3.0 specification |\n| `GET /help` | เอกสาร API แบบเต็ม (HTML) |\n| `GET /help?format=json` | เอกสาร API ในรูปแบบ JSON |\n| `GET /docs` | ระบบเอกสาร (HTML) |\n| `GET /docs?format=json` | ดัชนีเอกสาร (JSON) |\n| `GET /docs?format=text&scope=all` | เอกสารทั้งหมดในรูปแบบ text block เดียว |\n| `GET /playground` | Interactive API playground |\n\n## Rate Limits\n\n| วิธี Auth | Limit |\n|-------------|-------|\n| Mind Key (header) | None |\n| Mind Key (?key=) | 60/min per IP |\n| JWT (header) | None |\n| Public endpoints | None |\n\nResponse ที่ถูกจำกัดอัตราจะมี:\n\n```\nX-RateLimit-Limit: 60\nX-RateLimit-Remaining: 42\nRetry-After: 30  (only when 429)\n```\n\n## Pagination\n\nEndpoint แบบ list รองรับ `?limit=` และ `?offset=`:\n\n```\nGET /memory?limit=50&offset=100\nGET /mind/tasks?status=pending\n```\n\nLimit เริ่มต้น: 100 สูงสุด: 500\n\n## CORS\n\nทุก endpoint รองรับ CORS สำหรับ client ที่เป็น 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## SDKs & Clients\n\n- **Node.js SDK**: `npm install synapse-memory-sdk` ([repo](https://gitlab.com/schaefer-services/synapse-sdk-js))\n- **MCP Server**: `npx -y synapse-mcp-api@latest` ([repo](https://gitlab.com/schaefer-services/synapse-mcp))\n- **HTTP client**: ไลบรารี HTTP ใดก็ได้ (curl, fetch, axios, etc.)\n\n## ขั้นตอนถัดไป\n\n- [Memory API](/docs/api/memory) — endpoint ที่สำคัญที่สุด\n- [Chat API](/docs/api/chat) — การสื่อสารระหว่าง human-agent แบบ asynchronous\n- [Errors & Error Handling](/docs/api/errors)\n","content_html":"<h1>ภาพรวม API และ Base URL</h1>\n<p>Synapse API เป็น RESTful HTTP API ทุก endpoint ส่งกลับเป็น JSON (ยกเว้นในกรณีที่ระบุไว้เป็นอย่างอื่น) เอกสารหน้านี้ครอบคลุมสิ่งสำคัญที่คุณต้องรู้ก่อนเจาะลึก endpoint เฉพาะทาง</p>\n<h2>Base URL</h2>\n<pre><code class=\"hljs language-plaintext\">https://synapse.schaefer.zone</code></pre><p>พาธทั้งหมดในเอกสารนี้เป็นแบบ relative ต่อ base URL นี้ สำหรับ instance ที่ self-hosted ให้แทนที่ด้วย URL ของคุณเอง</p>\n<h2>การยืนยันตัวตน</h2>\n<p>มีสองวิธี ทั้งคู่ส่งผ่าน <code>Authorization</code> header:</p>\n<pre><code class=\"hljs language-plaintext\">Authorization: Bearer YOUR_MIND_KEY    # สำหรับ endpoint ข้อมูล\nAuthorization: Bearer YOUR_JWT          # สำหรับ endpoint บัญชี</code></pre><p>หรือผ่าน query parameter (จำกัดอัตรา 60 ครั้ง/นาที):</p>\n<pre><code class=\"hljs language-plaintext\">?key=YOUR_MIND_KEY</code></pre><p>ดูรายละเอียดที่ <a href=\"/docs/getting-started/authentication\">Authentication</a></p>\n<h2>กลุ่มของ Endpoint</h2>\n<table>\n<thead>\n<tr>\n<th>กลุ่ม</th>\n<th>Auth</th>\n<th>คำอธิบาย</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Public</td>\n<td>None</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, search, sync, embeddings</td>\n</tr>\n<tr>\n<td>Chat</td>\n<td>Mind Key / JWT</td>\n<td>การส่งข้อความแบบ asynchronous ระหว่าง human และ agent</td>\n</tr>\n<tr>\n<td>Tasks</td>\n<td>Mind Key</td>\n<td>การจัดการ task</td>\n</tr>\n<tr>\n<td>Scripts</td>\n<td>Mind Key / JWT</td>\n<td>ที่เก็บ script แบบถาวร</td>\n</tr>\n<tr>\n<td>Scheduler</td>\n<td>Mind Key</td>\n<td>Cron jobs + variables</td>\n</tr>\n<tr>\n<td>Webhooks</td>\n<td>Mind Key</td>\n<td>HTTP callback บน event</td>\n</tr>\n<tr>\n<td>Computers</td>\n<td>Mind Key / JWT</td>\n<td>ควบคุม computer ระยะไกล</td>\n</tr>\n<tr>\n<td>User/Minds</td>\n<td>JWT</td>\n<td>บัญชี + การจัดการ mind</td>\n</tr>\n<tr>\n<td>Sharing</td>\n<td>JWT</td>\n<td>การแชร์ mind ระหว่างผู้ใช้</td>\n</tr>\n<tr>\n<td>Push</td>\n<td>JWT</td>\n<td>Web Push subscriptions</td>\n</tr>\n<tr>\n<td>Tools</td>\n<td>None</td>\n<td>Time, calc, random (public utilities)</td>\n</tr>\n</tbody></table>\n<h2>รูปแบบการตอบกลับ</h2>\n<ul>\n<li><strong>JSON</strong> (ค่าเริ่มต้น): <code>{ &quot;key&quot;: &quot;value&quot;, ... }</code></li>\n<li><strong>Plain text</strong>: <code>/memory/recall</code> ส่งกลับเป็น text ที่ปรับให้เหมาะกับ 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>Standard Response Envelope</h2>\n<p>Response สำเร็จส่งข้อมูลกลับมาโดยตรง:</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>Response ผิดพลาดใช้รูปแบบนี้:</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\">ฟิลด์ `docs` เชื่อมโยงไปยังเอกสารที่เกี่ยวข้องสำหรับ error ทั่วไป</div><h2>HTTP Status Codes</h2>\n<table>\n<thead>\n<tr>\n<th>Code</th>\n<th>ความหมาย</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>200</td>\n<td>Success (GET, PUT)</td>\n</tr>\n<tr>\n<td>201</td>\n<td>Created (POST)</td>\n</tr>\n<tr>\n<td>204</td>\n<td>No content (DELETE)</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad request (validation error)</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Unauthorized (missing/invalid token)</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Forbidden (wrong token type)</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Not found (path doesn&#39;t exist)</td>\n</tr>\n<tr>\n<td>409</td>\n<td>Conflict (duplicate)</td>\n</tr>\n<tr>\n<td>429</td>\n<td>Too many requests (rate limit)</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Server error</td>\n</tr>\n</tbody></table>\n<h2>Discoverability Endpoints</h2>\n<table>\n<thead>\n<tr>\n<th>Endpoint</th>\n<th>วัตถุประสงค์</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>GET /</code></td>\n<td>Landing page (LLM-optimized)</td>\n</tr>\n<tr>\n<td><code>GET /endpoints</code></td>\n<td>รายการ machine-readable ของ endpoint ทั้งหมด</td>\n</tr>\n<tr>\n<td><code>GET /endpoints?format=text</code></td>\n<td>รายการ endpoint ในรูปแบบ plain-text</td>\n</tr>\n<tr>\n<td><code>GET /openapi.json</code></td>\n<td>OpenAPI 3.0 specification</td>\n</tr>\n<tr>\n<td><code>GET /help</code></td>\n<td>เอกสาร API แบบเต็ม (HTML)</td>\n</tr>\n<tr>\n<td><code>GET /help?format=json</code></td>\n<td>เอกสาร API ในรูปแบบ JSON</td>\n</tr>\n<tr>\n<td><code>GET /docs</code></td>\n<td>ระบบเอกสาร (HTML)</td>\n</tr>\n<tr>\n<td><code>GET /docs?format=json</code></td>\n<td>ดัชนีเอกสาร (JSON)</td>\n</tr>\n<tr>\n<td><code>GET /docs?format=text&amp;scope=all</code></td>\n<td>เอกสารทั้งหมดในรูปแบบ text block เดียว</td>\n</tr>\n<tr>\n<td><code>GET /playground</code></td>\n<td>Interactive API playground</td>\n</tr>\n</tbody></table>\n<h2>Rate Limits</h2>\n<table>\n<thead>\n<tr>\n<th>วิธี Auth</th>\n<th>Limit</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Mind Key (header)</td>\n<td>None</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>None</td>\n</tr>\n<tr>\n<td>Public endpoints</td>\n<td>None</td>\n</tr>\n</tbody></table>\n<p>Response ที่ถูกจำกัดอัตราจะมี:</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>Pagination</h2>\n<p>Endpoint แบบ list รองรับ <code>?limit=</code> และ <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>Limit เริ่มต้น: 100 สูงสุด: 500</p>\n<h2>CORS</h2>\n<p>ทุก endpoint รองรับ CORS สำหรับ client ที่เป็น 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>SDKs &amp; Clients</h2>\n<ul>\n<li><strong>Node.js SDK</strong>: <code>npm install synapse-memory-sdk</code> (<a href=\"https://gitlab.com/schaefer-services/synapse-sdk-js\">repo</a>)</li>\n<li><strong>MCP Server</strong>: <code>npx -y synapse-mcp-api@latest</code> (<a href=\"https://gitlab.com/schaefer-services/synapse-mcp\">repo</a>)</li>\n<li><strong>HTTP client</strong>: ไลบรารี HTTP ใดก็ได้ (curl, fetch, axios, etc.)</li>\n</ul>\n<h2>ขั้นตอนถัดไป</h2>\n<ul>\n<li><a href=\"/docs/api/memory\">Memory API</a> — endpoint ที่สำคัญที่สุด</li>\n<li><a href=\"/docs/api/chat\">Chat API</a> — การสื่อสารระหว่าง human-agent แบบ asynchronous</li>\n<li><a href=\"/docs/api/errors\">Errors &amp; Error Handling</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"]}