Troubleshooting
401 Unauthorized
- Use
Authorization: Bearer mn_…or headerx-api-key: mn_… - Key must be active (not revoked) — check console → App connection
- No extra spaces when pasting the key
402 Payment required / quota
- Daily read/write caps for your plan —
GET /v1/usage/today - Upgrade via console billing (PayU checkout)
429 Rate limited
- Per-workspace concurrency or rate limits — retry with backoff (SDK does this automatically on REST)
Search returns nothing
| Check | Action |
|---|---|
| Wrong user/namespace | Use the same user_id / owner_id on write and search. API + SDK default is default-user when omitted (console onboarding uses this id). |
| Too soon | Retry after 2–5s on first memory |
| Query mismatch | Try keywords from the stored sentence |
min_score too high | Lower or omit |
| Degraded entitlements | Response ENTITLEMENT_DEGRADED — use search_mode: "keyword" temporarily |
See DEBUGGING.md.
`MISSING_OWNER_ID` (SDK)
Provide ownerId (or userId) on remember / recall / addMemory / search. The simplified MemoryNode class defaults to MEMORYNODE_USER_ID or default-user.
MCP search differs from REST
Default SDK transport is rest on both MemoryNode and MemoryNodeClient. Use transport: "rest" (or omit the option) for production. Set transport: "mcp" or hybrid only when you intentionally call hosted MCP from the SDK.
Local Worker vs production
- Local:
BASE_URL=http://127.0.0.1:8787and a dev API key - Production:
https://api.memorynode.ai—MemoryNodeconstructor sets this automatically
Still stuck?
- Note
x-request-idfrom the failing call - Open DEBUGGING.md
- Re-run with the same
owner_id, capture the exact request body, and compare against TWO_CALL_INTEGRATION.md