{"title":"प्रमाणीकरण और Mind Keys","slug":"authentication","category":"getting-started","summary":"Synapse प्रमाणीकरण कैसे काम करता है: एजेंट्स के लिए Mind Keys, मानवों के लिए JWTs, URL-केवल टूल्स के लिए ?key=।","audience":["human","llm"],"tags":["auth","mind-key","jwt","security"],"difficulty":"beginner","updated":"2026-06-27","word_count":537,"read_minutes":3,"llm_context":"Two auth methods: Mind Key (token-scoped, never expires) and JWT (user-scoped, 7-day expiry).\nMind Key: Authorization: Bearer mk_xxx OR ?key=mk_xxx (60 req/min limit on query)\nJWT: Authorization: Bearer eyJ... (no rate limit, used for /register, /login, /minds, /sharing)\nMind Key is shown only once at creation. Store it permanently.\nEach mind has exactly one Mind Key. Multiple minds = multiple keys.\n","lang":"hi","translated":true,"requested_lang":"hi","content_markdown":"\n# प्रमाणीकरण और Mind Keys\n\nSynapse दो प्रमाणीकरण विधियों का उपयोग करता है, प्रत्येक अलग उपयोग के मामले के लिए अनुकूलित। विश्वसनीय इंटीग्रेशन बनाने के लिए अंतर को समझना आवश्यक है।\n\n## दो प्रमाणीकरण विधियाँ\n\n| विधि | उपयोग का मामला | रेट लिमिट | समाप्ति |\n|--------|----------|------------|--------|\n| **Mind Key** | LLM एजेंट्स, स्वचालित टूल्स | कोई नहीं (हेडर) / 60 मिनट (क्वेरी) | कभी नहीं |\n| **JWT** | मानव-सामने UI, खाता ऑप्स | कोई नहीं | 7 दिन |\n\n## Mind Key (एजेंट्स के लिए)\n\nMind Key एक टैनेंट-स्कोप्ड API टोकन है। यह एकल mind के डेटा (मेमोरीज़, कार्य, चैट, स्क्रिप्ट्स, आदि) को प्रमाणित करता है। इसका उपयोग करें:\n\n- API कॉल करने वाले LLM एजेंट्स\n- बैकग्राउंड ऑटोमेशन स्क्रिप्ट्स\n- MCP server कॉन्फ़िगरेशन\n- कोई भी दीर्घ-जीवित इंटीग्रेशन\n\n### हेडर प्रमाणीकरण (अनुशंसित)\n\n```bash\ncurl -H \"Authorization: Bearer mk_yourMindKeyHere\" \\\n     https://synapse.schaefer.zone/memory/recall\n```\n\n### क्वेरी पैरामीटर (URL-केवल टूल्स के लिए)\n\n```bash\ncurl https://synapse.schaefer.zone/memory/recall?key=mk_yourMindKeyHere\n```\n\n> [!WARNING]\n> `?key=` क्वेरी पैरामीटर **60 requests per minute** तक सीमित है।\n> Bearer हेडर की कोई रेट लिमिट नहीं है। जब भी आपका क्लाइंट कस्टम हेडर का समर्थन करता है हेडर का उपयोग करें।\n\n### Mind Key बनाना\n\n```bash\ncurl -X POST https://synapse.schaefer.zone/minds \\\n  -H \"Authorization: Bearer YOUR_JWT\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"Work Mind\", \"description\": \"Project memories\"}'\n```\n\nप्रतिक्रिया में `mind_key` शामिल है — **इसे तुरंत सहेजें**, यह केवल एक बार दिखाई जाती है।\n\n### अपने minds की सूची बनाना\n\n```bash\ncurl -H \"Authorization: Bearer YOUR_JWT\" \\\n     https://synapse.schaefer.zone/minds\n```\n\n### Mind हटाना (अपरिवर्तनीय!)\n\n```bash\ncurl -X DELETE -H \"Authorization: Bearer YOUR_JWT\" \\\n     https://synapse.schaefer.zone/minds/m_xyz789\n```\n\n## JWT (मानवों के लिए)\n\nJWT विशिष्ट mind नहीं, बल्कि **उपयोगकर्ता खाते** को प्रमाणित करते हैं। इनका उपयोग करें:\n\n- खाता पंजीकरण और लॉगिन\n- Minds बनाने / सूचीबद्ध करने / हटाने\n- अन्य उपयोगकर्ताओं के साथ minds साझा करने\n- Web Push सब्सक्रिप्शन प्रबंधन\n\n### पंजीकरण\n\n```bash\ncurl -X POST https://synapse.schaefer.zone/register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"email\": \"you@example.com\", \"password\": \"secret\"}'\n```\n\nलौटाता है: `{ \"jwt\": \"eyJ...\", \"user\": {...} }`\n\n### लॉगिन\n\n```bash\ncurl -X POST https://synapse.schaefer.zone/login \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"email\": \"you@example.com\", \"password\": \"secret\"}'\n```\n\nलौटाता है: `{ \"jwt\": \"eyJ...\", \"user\": {...} }`\n\n### JWT समाप्ति\n\nJWT **7 दिनों** के बाद समाप्त होते हैं। JWT समाप्त होने पर, नया प्राप्त करने के लिए बस `/login` फिर से कॉल करें। Mind Key कभी समाप्त नहीं होती, इसलिए मौजूदा एजेंट इंटीग्रेशन काम करते रहते हैं।\n\n## सुरक्षा सर्वोत्तम प्रथाएँ\n\n> [!CRITICAL]\n> - **Mind Keys कभी git में कमिट न करें।** पर्यावरण वेरिएबल्स का उपयोग करें।\n> - **Mind Keys कभी लॉग न करें।** लॉग में उन्हें मास्क करें (`mk_***...***xyz`)।\n> - **लीक के संदेह होने पर keys रोटेट करें** (mind हटाएँ, नया बनाएँ)।\n> - **प्रति परियोजना एक mind का उपयोग करें** ताकि लीक होने पर प्रभाव सीमित रहे।\n\n### पर्यावरण वेरिएबल पैटर्न\n\n```bash\n# .env (NEVER commit this file)\nSYNAPSE_MIND_KEY=mk_yourMindKeyHere\nSYNAPSE_URL=https://synapse.schaefer.zone\n```\n\n```typescript\n// Node.js\nconst mindKey = process.env.SYNAPSE_MIND_KEY;\nconst url = process.env.SYNAPSE_URL;\nawait fetch(`${url}/memory/recall`, {\n  headers: { Authorization: `Bearer ${mindKey}` },\n});\n```\n\n### MCP server config\n\n```json\n{\n  \"mcpServers\": {\n    \"synapse\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"synapse-mcp-api@latest\"],\n      \"env\": {\n        \"SYNAPSE_MIND_KEY\": \"mk_yourMindKeyHere\",\n        \"SYNAPSE_URL\": \"https://synapse.schaefer.zone\"\n      }\n    }\n  }\n}\n```\n\n## मल्टी-Mind पैटर्न\n\nप्रत्येक उपयोगकर्ता के पास कई minds हो सकते हैं। सामान्य पैटर्न:\n\n| Mind नाम | उद्देश्य |\n|-----------|---------|\n| `work` | कार्य-संबंधी मेमोरीज़ |\n| `personal` | व्यक्तिगत प्राथमिकताएँ, परिवार |\n| `project-synapse` | विशिष्ट परियोजना संदर्भ |\n| `learning-german` | सीखने की प्रगति |\n| `assistant-default` | सामान्य-उद्देश्य fallback |\n\nसंदर्भ अलग रखने के लिए विभिन्न LLM सत्रों के लिए विभिन्न Mind Keys का उपयोग करें।\n\n## रेट लिमिट\n\n| प्रमाणीकरण विधि | सीमा | दायरा |\n|-------------|-------|-------|\n| Mind Key (हेडर) | कोई नहीं | प्रति-mind |\n| Mind Key (?key=) | 60/min | प्रति-IP |\n| JWT (हेडर) | कोई नहीं | प्रति-उपयोगकर्ता |\n| सार्वजनिक एंडपॉइंट्स | कोई नहीं | वैश्विक |\n\nरेट लिमिट हेडर (`X-RateLimit-Limit`, `X-RateLimit-Remaining`, `Retry-After`) जब लागू हो तब प्रतिक्रियाओं में शामिल होते हैं।\n\n## अगले कदम\n\n- [Mind Key vs JWT](/docs/getting-started/mind-key-vs-jwt) — कब क्या उपयोग करें\n- [Memory API](/docs/api/memory) — Mind Key से आप क्या कर सकते हैं\n- [User API](/docs/api/user) — JWTs के साथ खाता प्रबंधन\n","content_html":"<h1>प्रमाणीकरण और Mind Keys</h1>\n<p>Synapse दो प्रमाणीकरण विधियों का उपयोग करता है, प्रत्येक अलग उपयोग के मामले के लिए अनुकूलित। विश्वसनीय इंटीग्रेशन बनाने के लिए अंतर को समझना आवश्यक है।</p>\n<h2>दो प्रमाणीकरण विधियाँ</h2>\n<table>\n<thead>\n<tr>\n<th>विधि</th>\n<th>उपयोग का मामला</th>\n<th>रेट लिमिट</th>\n<th>समाप्ति</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><strong>Mind Key</strong></td>\n<td>LLM एजेंट्स, स्वचालित टूल्स</td>\n<td>कोई नहीं (हेडर) / 60 मिनट (क्वेरी)</td>\n<td>कभी नहीं</td>\n</tr>\n<tr>\n<td><strong>JWT</strong></td>\n<td>मानव-सामने UI, खाता ऑप्स</td>\n<td>कोई नहीं</td>\n<td>7 दिन</td>\n</tr>\n</tbody></table>\n<h2>Mind Key (एजेंट्स के लिए)</h2>\n<p>Mind Key एक टैनेंट-स्कोप्ड API टोकन है। यह एकल mind के डेटा (मेमोरीज़, कार्य, चैट, स्क्रिप्ट्स, आदि) को प्रमाणित करता है। इसका उपयोग करें:</p>\n<ul>\n<li>API कॉल करने वाले LLM एजेंट्स</li>\n<li>बैकग्राउंड ऑटोमेशन स्क्रिप्ट्स</li>\n<li>MCP server कॉन्फ़िगरेशन</li>\n<li>कोई भी दीर्घ-जीवित इंटीग्रेशन</li>\n</ul>\n<h3>हेडर प्रमाणीकरण (अनुशंसित)</h3>\n<pre><code class=\"hljs language-bash\">curl -H <span class=\"hljs-string\">&quot;Authorization: Bearer mk_yourMindKeyHere&quot;</span> \\\n     https://synapse.schaefer.zone/memory/recall</code></pre><h3>क्वेरी पैरामीटर (URL-केवल टूल्स के लिए)</h3>\n<pre><code class=\"hljs language-bash\">curl https://synapse.schaefer.zone/memory/recall?key=mk_yourMindKeyHere</code></pre><div class=\"callout callout-warn\">`?key=` क्वेरी पैरामीटर **60 requests per minute** तक सीमित है।\nBearer हेडर की कोई रेट लिमिट नहीं है। जब भी आपका क्लाइंट कस्टम हेडर का समर्थन करता है हेडर का उपयोग करें।</div><h3>Mind Key बनाना</h3>\n<pre><code class=\"hljs language-bash\">curl -X POST https://synapse.schaefer.zone/minds \\\n  -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_JWT&quot;</span> \\\n  -H <span class=\"hljs-string\">&quot;Content-Type: application/json&quot;</span> \\\n  -d <span class=\"hljs-string\">&#x27;{&quot;name&quot;: &quot;Work Mind&quot;, &quot;description&quot;: &quot;Project memories&quot;}&#x27;</span></code></pre><p>प्रतिक्रिया में <code>mind_key</code> शामिल है — <strong>इसे तुरंत सहेजें</strong>, यह केवल एक बार दिखाई जाती है।</p>\n<h3>अपने minds की सूची बनाना</h3>\n<pre><code class=\"hljs language-bash\">curl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_JWT&quot;</span> \\\n     https://synapse.schaefer.zone/minds</code></pre><h3>Mind हटाना (अपरिवर्तनीय!)</h3>\n<pre><code class=\"hljs language-bash\">curl -X DELETE -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_JWT&quot;</span> \\\n     https://synapse.schaefer.zone/minds/m_xyz789</code></pre><h2>JWT (मानवों के लिए)</h2>\n<p>JWT विशिष्ट mind नहीं, बल्कि <strong>उपयोगकर्ता खाते</strong> को प्रमाणित करते हैं। इनका उपयोग करें:</p>\n<ul>\n<li>खाता पंजीकरण और लॉगिन</li>\n<li>Minds बनाने / सूचीबद्ध करने / हटाने</li>\n<li>अन्य उपयोगकर्ताओं के साथ minds साझा करने</li>\n<li>Web Push सब्सक्रिप्शन प्रबंधन</li>\n</ul>\n<h3>पंजीकरण</h3>\n<pre><code class=\"hljs language-bash\">curl -X POST https://synapse.schaefer.zone/register \\\n  -H <span class=\"hljs-string\">&quot;Content-Type: application/json&quot;</span> \\\n  -d <span class=\"hljs-string\">&#x27;{&quot;email&quot;: &quot;you@example.com&quot;, &quot;password&quot;: &quot;secret&quot;}&#x27;</span></code></pre><p>लौटाता है: <code>{ &quot;jwt&quot;: &quot;eyJ...&quot;, &quot;user&quot;: {...} }</code></p>\n<h3>लॉगिन</h3>\n<pre><code class=\"hljs language-bash\">curl -X POST https://synapse.schaefer.zone/login \\\n  -H <span class=\"hljs-string\">&quot;Content-Type: application/json&quot;</span> \\\n  -d <span class=\"hljs-string\">&#x27;{&quot;email&quot;: &quot;you@example.com&quot;, &quot;password&quot;: &quot;secret&quot;}&#x27;</span></code></pre><p>लौटाता है: <code>{ &quot;jwt&quot;: &quot;eyJ...&quot;, &quot;user&quot;: {...} }</code></p>\n<h3>JWT समाप्ति</h3>\n<p>JWT <strong>7 दिनों</strong> के बाद समाप्त होते हैं। JWT समाप्त होने पर, नया प्राप्त करने के लिए बस <code>/login</code> फिर से कॉल करें। Mind Key कभी समाप्त नहीं होती, इसलिए मौजूदा एजेंट इंटीग्रेशन काम करते रहते हैं।</p>\n<h2>सुरक्षा सर्वोत्तम प्रथाएँ</h2>\n<div class=\"callout callout-critical\"></div><h3>पर्यावरण वेरिएबल पैटर्न</h3>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># .env (NEVER commit this file)</span>\nSYNAPSE_MIND_KEY=mk_yourMindKeyHere\nSYNAPSE_URL=https://synapse.schaefer.zone</code></pre><pre><code class=\"hljs language-typescript\"><span class=\"hljs-comment\">// Node.js</span>\n<span class=\"hljs-keyword\">const</span> mindKey = process.<span class=\"hljs-property\">env</span>.<span class=\"hljs-property\">SYNAPSE_MIND_KEY</span>;\n<span class=\"hljs-keyword\">const</span> url = process.<span class=\"hljs-property\">env</span>.<span class=\"hljs-property\">SYNAPSE_URL</span>;\n<span class=\"hljs-keyword\">await</span> <span class=\"hljs-title function_\">fetch</span>(<span class=\"hljs-string\">`<span class=\"hljs-subst\">${url}</span>/memory/recall`</span>, {\n  <span class=\"hljs-attr\">headers</span>: { <span class=\"hljs-title class_\">Authorization</span>: <span class=\"hljs-string\">`Bearer <span class=\"hljs-subst\">${mindKey}</span>`</span> },\n});</code></pre><h3>MCP server config</h3>\n<pre><code class=\"hljs language-json\"><span class=\"hljs-punctuation\">{</span>\n  <span class=\"hljs-attr\">&quot;mcpServers&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-punctuation\">{</span>\n    <span class=\"hljs-attr\">&quot;synapse&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-punctuation\">{</span>\n      <span class=\"hljs-attr\">&quot;command&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;npx&quot;</span><span class=\"hljs-punctuation\">,</span>\n      <span class=\"hljs-attr\">&quot;args&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-punctuation\">[</span><span class=\"hljs-string\">&quot;-y&quot;</span><span class=\"hljs-punctuation\">,</span> <span class=\"hljs-string\">&quot;synapse-mcp-api@latest&quot;</span><span class=\"hljs-punctuation\">]</span><span class=\"hljs-punctuation\">,</span>\n      <span class=\"hljs-attr\">&quot;env&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-punctuation\">{</span>\n        <span class=\"hljs-attr\">&quot;SYNAPSE_MIND_KEY&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;mk_yourMindKeyHere&quot;</span><span class=\"hljs-punctuation\">,</span>\n        <span class=\"hljs-attr\">&quot;SYNAPSE_URL&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone&quot;</span>\n      <span class=\"hljs-punctuation\">}</span>\n    <span class=\"hljs-punctuation\">}</span>\n  <span class=\"hljs-punctuation\">}</span>\n<span class=\"hljs-punctuation\">}</span></code></pre><h2>मल्टी-Mind पैटर्न</h2>\n<p>प्रत्येक उपयोगकर्ता के पास कई minds हो सकते हैं। सामान्य पैटर्न:</p>\n<table>\n<thead>\n<tr>\n<th>Mind नाम</th>\n<th>उद्देश्य</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>work</code></td>\n<td>कार्य-संबंधी मेमोरीज़</td>\n</tr>\n<tr>\n<td><code>personal</code></td>\n<td>व्यक्तिगत प्राथमिकताएँ, परिवार</td>\n</tr>\n<tr>\n<td><code>project-synapse</code></td>\n<td>विशिष्ट परियोजना संदर्भ</td>\n</tr>\n<tr>\n<td><code>learning-german</code></td>\n<td>सीखने की प्रगति</td>\n</tr>\n<tr>\n<td><code>assistant-default</code></td>\n<td>सामान्य-उद्देश्य fallback</td>\n</tr>\n</tbody></table>\n<p>संदर्भ अलग रखने के लिए विभिन्न LLM सत्रों के लिए विभिन्न Mind Keys का उपयोग करें।</p>\n<h2>रेट लिमिट</h2>\n<table>\n<thead>\n<tr>\n<th>प्रमाणीकरण विधि</th>\n<th>सीमा</th>\n<th>दायरा</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Mind Key (हेडर)</td>\n<td>कोई नहीं</td>\n<td>प्रति-mind</td>\n</tr>\n<tr>\n<td>Mind Key (?key=)</td>\n<td>60/min</td>\n<td>प्रति-IP</td>\n</tr>\n<tr>\n<td>JWT (हेडर)</td>\n<td>कोई नहीं</td>\n<td>प्रति-उपयोगकर्ता</td>\n</tr>\n<tr>\n<td>सार्वजनिक एंडपॉइंट्स</td>\n<td>कोई नहीं</td>\n<td>वैश्विक</td>\n</tr>\n</tbody></table>\n<p>रेट लिमिट हेडर (<code>X-RateLimit-Limit</code>, <code>X-RateLimit-Remaining</code>, <code>Retry-After</code>) जब लागू हो तब प्रतिक्रियाओं में शामिल होते हैं।</p>\n<h2>अगले कदम</h2>\n<ul>\n<li><a href=\"/docs/getting-started/mind-key-vs-jwt\">Mind Key vs JWT</a> — कब क्या उपयोग करें</li>\n<li><a href=\"/docs/api/memory\">Memory API</a> — Mind Key से आप क्या कर सकते हैं</li>\n<li><a href=\"/docs/api/user\">User API</a> — JWTs के साथ खाता प्रबंधन</li>\n</ul>\n","urls":{"html":"/docs/getting-started/authentication","text":"/docs/getting-started/authentication?format=text","json":"/docs/getting-started/authentication?format=json","llm":"/docs/getting-started/authentication?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}