record or retrieve calls in your code.
Already using the Responses API or the Anthropic SDK? Both work the same way:
/v1/responses and /v1/messages speak those shapes with the identical memory
wrapper. Streaming is supported on all three.Get set up
1
Create an account and a key
Sign up at the Anona Memory dashboard with your
organization name, email, and a password of 8 or more characters.Verify your email before your first sign-in. Signing up does not create a key: go to
API keys → New key, pick an environment, and copy it. The full key is shown once,
at the moment you create it, and never again.
2
Create a memory space
Every memory lives inside a space: one per app, per tenant, or per end user, whichever
boundary you want memories isolated along. Create one from Spaces → New space in the
dashboard, or over the API:The name you chose is the
space_id. Nothing is generated for you. Pass it as
X-Anona-Space-Id (or space_id in the body) on every proxied call.3
Tune what gets injected (optional)
Each knob has a header form, so a stock client sets them once in Serving many end users from one space? Add See Scoping.The same knobs can be stored on the space itself
(
default_headers and
never touches the request body.Set
X-Anona-Space-Id even for a quick test. Leave it out and the turn is
recalled from and stored into a space literally named default, created on the
first proxied call, so a space you never created shows up in your space list
and counts against your plan’s space limit.X-Anona-User-Id and each user gets
their own memory, with no space per user and no leakage between them:PUT /v1/spaces/{space_id}/chat-settings, or the Chat defaults tab in the
dashboard), so they apply to every call without touching your code. A request
that sets a field still wins over the stored default.See Chat for the full endpoint reference.Or call memory directly
The proxy is memory with the wiring done for you. When you want the memory layer on its own (ingesting documents, storing facts your model never said, searching without generating), use the memory API directly.The
record call above is synchronous, and synchronous writes are slow: the text is
analyzed by a language model and its facts extracted before the call returns. Measured
against production, that is 12-17 seconds, against 1-3 seconds for the same
write queued.It is written that way here only so the retrieve on the next line finds the memory.
In real code, pass "async": true (background=True in the Python SDK,
background: true in TypeScript) and poll the returned job: same work, same cost, a
tenth of the wait. See
Memories.Where to go next
Chat
Streaming, tunables, and the full proxy reference.
Core concepts
Spaces, memory types, and tenant isolation.
Retrieve API
Filters, latency modes, and relevance scoring.
Framework adapters
Already on LangChain, CrewAI, LlamaIndex, ADK, Agent Framework or Strands?
Wire memory in without calling record and retrieve yourself.
Examples
A complete runnable script for every adapter.
MCP
Connect Claude Code and other MCP clients.