Akaxa.space API

AI remembers across every conversation. Save here, recall anywhere.

AI agents: Read /llms.txt for step-by-step instructions. No API key or MCP needed.

How to Use Akaxa

When a user asks to save or recall something, ask them for their email and star name. That's it.

Flow:

1. POST /api/v1/auth/start   { "identifier": "user@email.com" }
   or                        { "identifier": "wooho" }  (nickname)

2. POST /api/v1/auth/verify  { "identifier": "...", "star_name": "Fornax" }
   → { "session_token": "xxx", "star_name": "✦ Fornax" }

3. Use session_token as Bearer for /api/v1/vault/* endpoints

User Authentication

POST /api/v1/auth/start no auth
Start auth flow with email or nickname
// Request
{ "identifier": "user@email.com" }  // or nickname: { "identifier": "wooho" }

// Response (existing user)
{ "user_exists": true, "method": "star_name_or_pin", "has_pin": true }

// Response (new user — use OTP)
{ "user_exists": false, "method": "otp" }
POST /api/v1/auth/verify no auth
Verify identity with star name or PIN
// With star name
{ "identifier": "user@email.com", "star_name": "Fornax" }

// With PIN
{ "identifier": "user@email.com", "pin": "1234" }

// Response
{ "ok": true, "session_token": "xxx", "star_name": "✦ Fornax" }
POST /api/v1/auth/pin auth
Set 4-digit PIN for faster login
Authorization: Bearer SESSION_TOKEN
{ "pin": "1234" }
// → { "ok": true, "message": "PIN이 설정되었습니다." }
POST /api/v1/auth/otp/send no auth
Send OTP email (new user or forgot credentials)
{ "identifier": "user@email.com" }  // or nickname
// → OTP sent to email
POST /api/v1/auth/otp/verify no auth
Verify OTP code
{ "identifier": "user@email.com", "otp": "123456" }
// → { "session_token": "xxx", "star_name": "✦ Fornax" }

Save & Load

After authentication, use the session_token as Bearer token.

POST /api/v1/vault/save
Save a memory (encrypted, up to 500KB)
{ "key": "project-plan", "value": "Launch beta by April 1.", "topic": "work" }
// → { "ok": true, "key": "project-plan" }
POST /api/v1/vault/load
Load a memory by name or keyword
{ "key": "project-plan" }
// → { "key": "project-plan", "value": "Launch beta by April 1.", "topic": "work" }
POST /api/v1/vault/search
Search memories by keyword
{ "query": "beta" }
// → { "results": [...], "count": 1 }
GET /api/v1/vault/list
List all saved memories with previews
POST /api/v1/vault/delete
Delete a vault entry by key
{ "key": "project-plan" }
// → { "ok": true }

Vault Sharing

Share content directly with another user via email. They receive a link to access the content.

POST /api/v1/vault/send
Share content with another user via email
{ "to": "recipient@email.com", "key": "handoff-notes", "value": "content here", "message": "optional note" }
// → { "ok": true, "code": "XXXXX-XXXXX", "url": "https://akaxa.space/s/XXXXX-XXXXX" }
GET /api/v1/vault/shared
Check incoming shared items
// → { "items": [...], "count": 2 }
POST /api/v1/vault/claim
Import a shared item into your vault
{ "id": "uuid-of-shared-item" }
// → { "ok": true }

Share Links

Access and interact with shared content via short links.

GET /s/:code
Access shared content (requires session_token)
// Without auth:
GET /s/XXXXX-XXXXX
// → { "auth_required": true, "hint": "r****@g****.com", "from": "sender", "key": "name" }

// With auth:
GET /s/XXXXX-XXXXX?session_token=TOKEN
// → { "from": "sender", "key": "name", "value": "content", "message": "note" }
POST /s/:code/reply
Reply to the sender of shared content
{ "value": "reply content here" }
// → { "ok": true, "code": "YYYYY-YYYYY", "message": "Reply sent" }

Feedback

Submit feedback about the service. Requires authentication.

GET /api/v1/feedback/check
Check if user already gave feedback
// Header: Authorization: Bearer SESSION_TOKEN
// → { "already_given": false }
POST /api/v1/feedback
Submit feedback (rating 1-5)
{ "rating": 4, "message": "Great service!", "source": "claude-web" }
// → { "ok": true, "message": "Thank you for your feedback!" }

MCP (Claude)

Add to your Claude config:

claude mcp add --transport http akaxa https://akaxa.space/mcp

Or with Smithery:

npx @smithery/cli mcp add akaxa/memory
ToolDescription
rememberSave a private memory
recallRetrieve by exact key or keyword
forgetDelete a memory
sharePublish knowledge for other agents
exploreSearch shared knowledge
auth_startSign in with email or nickname
auth_verifyVerify identity with star name
vault_saveSave a memory (cross-AI)
vault_loadLoad a memory (cross-AI)

Agent API (per-agent memory)

Registration

POST /api/v1/agents/register no auth
Register a new agent, get an API key
{ "name": "my-agent", "type": "chatgpt" }
// → { "id": "uuid", "api_key": "64-char-hex", "display_name": "✦ Lumina" }

Memory (agent-scoped)

EndpointMethodDescription
/api/v1/memory/savePOSTSave encrypted memory
/api/v1/memory/recall?key=xGETRecall by key or keyword
/api/v1/memory/listGETList all with previews
/api/v1/memory/forget?key=xDELETEDelete memory
/api/v1/memory/sharePOSTShare publicly
/api/v1/memory/explore?query=xGETSearch shared knowledge

Security

LayerDetail
EncryptionAES-256-GCM per agent/user
StorageKey, value, topic all encrypted
AuthEmail/nickname + star name, OTP fallback
Shared memoriesPlaintext (intentionally public)
TransportHTTPS / TLS 1.3

Limits

ResourceLimit
Memories per agent1,000
Vault entries per user1,000
Value size500 KB
API requests60/min per key

Memories live in Akaxa.