{"title":"FAQ de la API","slug":"api-faq","category":"faq","summary":"Preguntas comunes sobre la API — autenticación, límites de frecuencia, manejo de errores, descubrimiento de endpoints.","audience":["human","llm"],"tags":["faq","api","troubleshooting"],"difficulty":"beginner","updated":"2026-06-27","word_count":424,"read_minutes":2,"lang":"es","translated":true,"requested_lang":"es","content_markdown":"\n# FAQ de la API\n\nPreguntas comunes sobre la API de Synapse.\n\n## ¿Cómo me autentico?\n\nDos métodos:\n\n1. **Mind Key** (para endpoints de datos): `Authorization: Bearer mk_...`\n2. **JWT** (para endpoints de cuenta): `Authorization: Bearer eyJ...`\n\nO vía parámetro de consulta (límite de 60 req/min): `?key=mk_...`\n\nConsulte [Autenticación](/docs/getting-started/authentication).\n\n## ¿Cuál es la diferencia entre Mind Key y JWT?\n\n- **Mind Key**: ámbito de tenant, nunca expira, para datos de memoria/chat/tareas\n- **JWT**: ámbito de usuario, expira a los 7 días, para gestión de cuenta/mind\n\nConsulte [Mind Key vs JWT](/docs/getting-started/mind-key-vs-jwt).\n\n## ¿Por qué obtengo 401 Unauthorized?\n\nCausas comunes:\n\n1. Falta la cabecera `Authorization`\n2. Mind Key inválido (verifique que empieza por `mk_`)\n3. Uso de un JWT donde se requiere un Mind Key (o viceversa)\n4. El Mind Key ha sido revocado\n\n**Solución:** Verifique su token. Consulte [Autenticación](/docs/getting-started/authentication).\n\n## ¿Por qué obtengo 404 Not Found?\n\nUsó una ruta de endpoint incorrecta. Synapse solo tiene las rutas listadas en\n`GET /endpoints`.\n\n**Solución:** Llame a `GET /endpoints` para ver todas las rutas válidas. No\nadivine.\n\n## ¿Por qué obtengo 429 Too Many Requests?\n\nEstá usando autenticación por parámetro de consulta `?key=`, que está limitada a\n60/min.\n\n**Solución:** Cambie a la cabecera `Authorization: Bearer` (sin límite de\nfrecuencia).\n\nConsulte [Límites de frecuencia](/docs/api/rate-limits).\n\n## ¿Cómo listo todos los endpoints?\n\n```bash\ncurl https://synapse.schaefer.zone/endpoints\ncurl https://synapse.schaefer.zone/endpoints?format=text\n```\n\n## ¿Cómo encuentro el endpoint correcto?\n\n1. Consulte `GET /endpoints` para la lista legible por máquina\n2. Consulte `GET /help` para la documentación completa de la API\n3. Explore `GET /docs` para el sistema de documentación\n4. Use `GET /openapi.json` para la especificación OpenAPI 3.0\n\n## ¿Puedo usar GET en lugar de POST?\n\nAlgunos endpoints POST tienen equivalentes GET para herramientas que solo usan\nURL:\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\nConsulte `GET /endpoints` para ver las variantes GET disponibles.\n\n## ¿Cómo manejo los errores?\n\nTodos los errores devuelven 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\nConsulte [Errores y manejo de errores](/docs/api/errors).\n\n## ¿Cuál es el límite del cuerpo de la solicitud?\n\n10 MB. Para payloads más grandes (p. ej. subida de archivos), use los endpoints\nmultipart.\n\n## ¿La API admite CORS?\n\nSí. Todos los endpoints devuelven:\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## ¿Hay un SDK?\n\nSí:\n\n- **Node.js**: `npm install synapse-memory-sdk`\n- **MCP**: `npx -y synapse-mcp-api@latest`\n\nConsulte [Resumen de la API](/docs/api/overview) para más detalles.\n\n## ¿Cómo pagino?\n\nUse `?limit=` y `?offset=`:\n\n```bash\ncurl \".../memory?limit=50&offset=100\"\n```\n\nLímite predeterminado: 100. Máximo: 500.\n\n## ¿Puedo filtrar memorias por categoría o etiqueta?\n\nSí:\n\n```bash\ncurl \".../memory?category=project\"\ncurl \".../memory?tag=docker\"\ncurl \".../memory/by-tag?tag=production\"\n```\n\n## ¿Cómo busco memorias?\n\nDe dos formas:\n\n1. **Búsqueda por palabra clave FTS5**: `GET /memory/search?q=docker+swarm`\n2. **Búsqueda semántica**: `GET /memory/semantic-search?q=container+orchestration`\n\nConsulte [Búsqueda FTS5](/docs/concepts/fts5-search) y [Búsqueda semántica](/docs/concepts/semantic-search).\n\n## ¿Cómo actualizo una memoria?\n\nPOST `/memory` con la misma `category` + `key` — la memoria existente se\nactualiza, no se duplica.\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## ¿Cómo elimino una memoria?\n\n```bash\ncurl -X DELETE -H \"Authorization: Bearer $KEY\" \\\n     https://synapse.schaefer.zone/memory/mem_001\n```\n\n## ¿Puedo eliminar en lote?\n\nSí:\n\n```bash\ncurl -X POST .../memory/bulk-delete \\\n  -d '{\"ids\": [\"mem_001\", \"mem_002\", \"mem_003\"]}'\n```\n\n## Próximos pasos\n\n- [Resumen de la API](/docs/api/overview)\n- [Errores y manejo de errores](/docs/api/errors)\n- [Autenticación](/docs/getting-started/authentication)\n","content_html":"<h1>FAQ de la API</h1>\n<p>Preguntas comunes sobre la API de Synapse.</p>\n<h2>¿Cómo me autentico?</h2>\n<p>Dos métodos:</p>\n<ol>\n<li><strong>Mind Key</strong> (para endpoints de datos): <code>Authorization: Bearer mk_...</code></li>\n<li><strong>JWT</strong> (para endpoints de cuenta): <code>Authorization: Bearer eyJ...</code></li>\n</ol>\n<p>O vía parámetro de consulta (límite de 60 req/min): <code>?key=mk_...</code></p>\n<p>Consulte <a href=\"/docs/getting-started/authentication\">Autenticación</a>.</p>\n<h2>¿Cuál es la diferencia entre Mind Key y JWT?</h2>\n<ul>\n<li><strong>Mind Key</strong>: ámbito de tenant, nunca expira, para datos de memoria/chat/tareas</li>\n<li><strong>JWT</strong>: ámbito de usuario, expira a los 7 días, para gestión de cuenta/mind</li>\n</ul>\n<p>Consulte <a href=\"/docs/getting-started/mind-key-vs-jwt\">Mind Key vs JWT</a>.</p>\n<h2>¿Por qué obtengo 401 Unauthorized?</h2>\n<p>Causas comunes:</p>\n<ol>\n<li>Falta la cabecera <code>Authorization</code></li>\n<li>Mind Key inválido (verifique que empieza por <code>mk_</code>)</li>\n<li>Uso de un JWT donde se requiere un Mind Key (o viceversa)</li>\n<li>El Mind Key ha sido revocado</li>\n</ol>\n<p><strong>Solución:</strong> Verifique su token. Consulte <a href=\"/docs/getting-started/authentication\">Autenticación</a>.</p>\n<h2>¿Por qué obtengo 404 Not Found?</h2>\n<p>Usó una ruta de endpoint incorrecta. Synapse solo tiene las rutas listadas en\n<code>GET /endpoints</code>.</p>\n<p><strong>Solución:</strong> Llame a <code>GET /endpoints</code> para ver todas las rutas válidas. No\nadivine.</p>\n<h2>¿Por qué obtengo 429 Too Many Requests?</h2>\n<p>Está usando autenticación por parámetro de consulta <code>?key=</code>, que está limitada a\n60/min.</p>\n<p><strong>Solución:</strong> Cambie a la cabecera <code>Authorization: Bearer</code> (sin límite de\nfrecuencia).</p>\n<p>Consulte <a href=\"/docs/api/rate-limits\">Límites de frecuencia</a>.</p>\n<h2>¿Cómo listo todos los endpoints?</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>¿Cómo encuentro el endpoint correcto?</h2>\n<ol>\n<li>Consulte <code>GET /endpoints</code> para la lista legible por máquina</li>\n<li>Consulte <code>GET /help</code> para la documentación completa de la API</li>\n<li>Explore <code>GET /docs</code> para el sistema de documentación</li>\n<li>Use <code>GET /openapi.json</code> para la especificación OpenAPI 3.0</li>\n</ol>\n<h2>¿Puedo usar GET en lugar de POST?</h2>\n<p>Algunos endpoints POST tienen equivalentes GET para herramientas que solo usan\nURL:</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>Consulte <code>GET /endpoints</code> para ver las variantes GET disponibles.</p>\n<h2>¿Cómo manejo los errores?</h2>\n<p>Todos los errores devuelven 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>Consulte <a href=\"/docs/api/errors\">Errores y manejo de errores</a>.</p>\n<h2>¿Cuál es el límite del cuerpo de la solicitud?</h2>\n<p>10 MB. Para payloads más grandes (p. ej. subida de archivos), use los endpoints\nmultipart.</p>\n<h2>¿La API admite CORS?</h2>\n<p>Sí. Todos los endpoints devuelven:</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>¿Hay un SDK?</h2>\n<p>Sí:</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>Consulte <a href=\"/docs/api/overview\">Resumen de la API</a> para más detalles.</p>\n<h2>¿Cómo pagino?</h2>\n<p>Use <code>?limit=</code> y <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>Límite predeterminado: 100. Máximo: 500.</p>\n<h2>¿Puedo filtrar memorias por categoría o etiqueta?</h2>\n<p>Sí:</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>¿Cómo busco memorias?</h2>\n<p>De dos formas:</p>\n<ol>\n<li><strong>Búsqueda por palabra clave FTS5</strong>: <code>GET /memory/search?q=docker+swarm</code></li>\n<li><strong>Búsqueda semántica</strong>: <code>GET /memory/semantic-search?q=container+orchestration</code></li>\n</ol>\n<p>Consulte <a href=\"/docs/concepts/fts5-search\">Búsqueda FTS5</a> y <a href=\"/docs/concepts/semantic-search\">Búsqueda semántica</a>.</p>\n<h2>¿Cómo actualizo una memoria?</h2>\n<p>POST <code>/memory</code> con la misma <code>category</code> + <code>key</code> — la memoria existente se\nactualiza, no se duplica.</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>¿Cómo elimino una memoria?</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>¿Puedo eliminar en lote?</h2>\n<p>Sí:</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>Próximos pasos</h2>\n<ul>\n<li><a href=\"/docs/api/overview\">Resumen de la API</a></li>\n<li><a href=\"/docs/api/errors\">Errores y manejo de errores</a></li>\n<li><a href=\"/docs/getting-started/authentication\">Autenticación</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"]}