MemoryIntelligence API
Memory without meaning is just storage.
This API turns raw content (text, conversations, images) into structured meaning. Searchable, explainable, provenance-tracked. No black box. No hallucinations.
For Python backends: FastAPI, Django, Flask, Lambda, Cloud Functions.
What's new in 0.1.2
ask()andlist()are fixed. They previously returned empty results (hit.summary/hit.idasNone,list()as[]) because the client read the wrong response shape. Upgrade withpip install -U memoryintelligence.- Now Apache-2.0 licensed (was a custom MIT-with-restrictions).
Full history in CHANGELOG.md.
Installation
pip install memoryintelligence
Get your API key: memoryintelligence.io/beta
Quick Start
from memoryintelligence import MemoryIntelligence
mi = MemoryIntelligence.from_env() # reads MI_API_KEY
# Turn content into a structured, verifiable memory
note = mi.capture(
"Discussed pricing with ACME. They prefer quarterly billing.",
source="sales_call",
)
# Ask by meaning, not keywords
for hit in mi.ask("what did ACME say about billing?"):
print(f"{hit.score:.2f} {hit.summary}")
# Every memory has a receipt
if mi.verify(note.id):
print("intact")
Upgrading from
MemoryClient? The flatMemoryIntelligenceclient above is the recommended surface. The olderMemoryClient(themi.umo.*namespace, with multi-tenantuser_ulid) still works for advanced use, andEdgeClientstill serves regulated on-premise deployments, butMemoryClientis deprecated and will be removed in a future major. See Core Operations for the full eight-verb surface.
What It Does
- Processes → Extracts entities, topics, relationships, sentiment
- Searches → Returns ranked results with explainability
- Matches → Compares memories for relevance/similarity
- Explains → Shows why results matched (semantic, temporal, graph)
- Deletes → GDPR-compliant data removal with audit trail
No vector database setup. No chunking strategies. No embedding models to manage.
Security: API Keys Are Server-Only
Your API key grants full account access. Keep it server-side.
✅ Backend (environment variable):
mi = MemoryIntelligence.from_env() # reads MI_API_KEY
❌ Never hardcoded:
# Don't - visible in logs/code
mi = MemoryIntelligence(api_key='mi_sk_beta_...')
For web apps: Use your API key in the backend, build your own endpoints with your auth, let your frontend call those.
What Makes This Different
| Others | MemoryIntelligence |
|---|---|
| Store text, embed, hope | Extract meaning first |
| "Here are similar chunks" | "Here's why this matched" |
| No audit trail | Cryptographic provenance |
| Your data = their model training | We never train on your data |
Setting the standard for memory.
Core Operations
Eight verbs, mapped one-to-one onto the public API:
note = mi.capture(content, source="notes") # POST /v1/process
hits = mi.ask(query, limit=5) # POST /v1/memories/query
note = mi.get(umo_id) # GET /v1/memories/{id}
notes = mi.list(limit=20) # GET /v1/memories
proof = mi.verify(umo_id) # GET /v1/memories/{id}/proof
why = mi.explain(umo_id) # GET /v1/memories/{id}/explain
receipt = mi.forget(umo_id) # DELETE /v1/memories/{id}
notes = mi.batch(["note one", "note two"]) # POST /v1/batch
note = mi.upload("meeting.mp3") # POST /v1/upload
Results come back as small typed objects (Memory, Match, Proof, Receipt),
each with a .raw escape hatch and item access, so note.id when it is clean and
note["quality_score"] when you need a field we did not surface.
Async Support
An async twin of the flat client (AsyncMemoryIntelligence) is on the roadmap.
Until then, the async surface is the older AsyncMemoryClient (the mi.umo.*
namespace, deprecated alongside MemoryClient):
from memoryintelligence import AsyncMemoryClient
async with AsyncMemoryClient.from_env() as mi:
results = await mi.umo.search(query, user_ulid="01ABC...")
Error Handling
from memoryintelligence import (
MIError, AuthenticationError, NotFoundError, RateLimitError, ValidationError,
)
try:
hits = mi.ask(query)
except AuthenticationError:
... # API key invalid or expired
except NotFoundError:
... # no memory with that id
except RateLimitError:
... # the client already retried with backoff
except ValidationError as e:
... # request shape was wrong
except MIError as e:
print(e.status, e) # any API error carries its status
Typed Everywhere
Full Pydantic models. Type hints on every method. No dict soup.
from memoryintelligence import Memory, Match, Proof
Examples & Docs
- Getting Started Guide — Full walkthrough
- FastAPI Integration — Complete example
- Advanced Usage — Batch processing, retry logic, custom configs
Support
- Docs: memoryintelligence.io/docs
- Issues: github.com/memoryintelligence/memoryintelligence-python-sdk/issues
- Beta: memoryintelligence.io/beta
MemoryIntelligence™ — Setting the standard for memory.
Built by somewhere
Metadata
Release files for memoryintelligence 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| memoryintelligence-0.1.2.tar.gz | 22.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| memoryintelligence-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.1 kB
Release files / memoryintelligence-0.1.2.tar.gz
| Download URL | memoryintelligence-0.1.2.tar.gz |
|---|---|
| Size | 22.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dfbf475a46205c7d6fda832a88d0809a3e448324b024338c012452a8da12b895
|
|
BLAKE2b-256 checksum How to use checksums |
78f790dc85d8b3ca89e922bf4419fc0b493ea926808443be291765767ca9e435
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / memoryintelligence-0.1.2-py3-none-any.whl
| Download URL | memoryintelligence-0.1.2-py3-none-any.whl |
|---|---|
| Size | 21.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
081af339f00e6a75b6bf2ac55c167b1e6c6be57de60aef2ef85fd37d6390cc10
|
|
BLAKE2b-256 checksum How to use checksums |
812ca3d79f730856c7494cb74c203a799ddbfd91c045c8a0113bc661709451b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|