API Overview
Every operation MemorySync publishes, in one place. Use MemorySyncClient for the API-key-authenticated memory data plane and ControlPlaneClient for the bearer-authenticated account, organization, billing, integration, session, project, export, and webhook control plane. Both published Python and Node.js SDKs expose named methods for every surface below.
Everything you can do
Each row links to a reference page carrying the Python, Node.js and cURL form of the call, its request and response fields, its errors, and its scoping rules. Nothing is listed here that is not documented.
Store, read, change and remove memories.
Query, retrieve, route, synthesize and compose.
Graph, clusters, decisions and reports.
Slack, Drive, S3, Granola and the crawler.
Accounts, projects and access.
Create and download scoped background exports.
Subscribe to events and inspect deliveries.
Read the current plan and allowance.
Memory
The data plane. Authenticated with an API key, and user-scoped through X-End-User-ID where the operation documents it.
| Operation | Method and path | Reference |
|---|---|---|
| Add a memory | POST /memory/add | Add |
| Add many at once | POST /memory/bulk-add | Bulk Add |
| Ingest a file | POST /memory/upload | Upload File |
| Read one memory | GET /memory/{memory_id} | Get |
| Change one memory | PATCH /memory/{memory_id} | Update |
| Change many at once | POST /memory/batch-update | Batch Update |
| Summarize a set | POST /memory/summarize | Summarize |
| Relate two memories | POST /memory/relations | Create Relation |
| Export memories | GET /memory/export | Export |
| Forget a memory | DELETE /memory/forget | Forget |
| Remove an end user | DELETE /memory/user/{end_user_id} | Purge End User |
Start at the Memory API overview if you are choosing between them.
Retrieval
Five ways to get memories back, and one to rebuild the vectors behind them. They differ in how much work the server does before answering.
| Operation | Method and path | Reference |
|---|---|---|
| Search with filters and scoring | POST /memory/query | Query |
| Retrieve for a prompt | POST /memory/retrieve | Retrieve |
| Search with routing | POST /memory/search | Routed Search |
| Answer from memories | POST /memory/synthesize | Synthesize |
| Build a prompt | POST /memory/compose | Compose |
| Rebuild embeddings | POST /memory/refresh | Refresh Embeddings |
Intelligence
Derived views over what is already stored. These read; they do not create memories.
| Operation | Method and path | Reference |
|---|---|---|
| Entity and relation graph | GET /memory/graph | Memory Graph |
| Thematic clusters | GET /memory/clusters | Memory Clusters |
| Conflicting statements | GET /memory/decisions | Decision Panel |
| Record a resolution | POST /memory/decision/{decision_id}/resolve | Resolve Decision |
| Combined report | GET /memory/intelligence | Intelligence Report |
| Knowledge totals | GET /memory/knowledge/stats | Knowledge Stats |
Entities, tuning and audit
The vocabulary memories are classified against, the record of how one changed, and the signal that moves retrieval ranking.
| Operation | Method and path | Reference |
|---|---|---|
| Read or replace the ontology | GET and PUT /memory/ontology | Organization Ontology |
| History of one memory | GET /memory/{memory_id}/history | Memory History |
| Rate a retrieval result | POST /memory/{memory_id}/feedback | Submit Feedback |
Tenant data plane
A separate /v1 surface for multi-tenant applications that hold their own users. Episodic ingestion and recall live here rather than on the operations above.
| Operation | Method and path | Reference |
|---|---|---|
| Store a conversation turn | POST /v1/memory/add_turn | Add Conversation Turn |
| Recall context | POST /v1/memory/recall | Recall Context |
| Health and counts | GET /v1/memory/status | Memory Status |
| List stored memories | GET /v1/memory/memories | List Memories |
Connectors
Bring content in from an external source. The five shared pages cover any provider; the per-provider pages cover what only that provider has. Every connector page walks the same sequence: create the connection, authorise it, configure what to read, sync, then inspect what arrived.
| Area | What it covers | Reference |
|---|---|---|
| Connection lifecycle | Create, read, update, repair, purge and remove — identical for every provider. | Connection Lifecycle |
| Providers and OAuth | The provider catalog and the browser consent flow. | Providers & OAuth |
| Sync and jobs | Trigger a sync, watch the job, cancel it. | Sync & Jobs |
| Synced objects | What a sync produced, and why an object yielded nothing. | Synced Objects |
| Connector insights | Totals across connections, and the audit trail. | Connector Insights |
| Slack | Channel selection, noise filtering, identity mapping. | Slack |
| Google Drive | File and folder selection through the Google Picker. | Google Drive |
| Amazon S3 | Bucket prefix approval and key exclusion. | Amazon S3 |
| Granola | Folder selection, visibility, participant mapping, transcripts. | Granola |
| Web crawler | Crawl a public site, then choose what becomes a memory. | Web Crawler |
| Legacy integrations | The v1 catalog and its two administrative operations. | Legacy Integrations |
| Integrations REST API | The aggregate integration surface. | Integrations |
Organizations, projects and access
The control plane. Authenticated with a bearer access token rather than an API key, and governed by capabilities as well as scopes.
| Operation | Method and path | Reference |
|---|---|---|
| Sign in | POST /auth/login | Account Authentication |
| Create an organization | POST /organizations | Create Organization |
| List organizations | GET /organizations | List Organizations |
| Manage project lifecycle | GET, POST, PATCH, and DELETE /org/projects | Project Lifecycle |
| List active sessions | GET /auth/sessions | List Active Sessions |
| Revoke a session | POST /auth/sessions/{session_id}/revoke | Revoke Active Session |
| Test an API key | POST /org/api-keys/{key_id}/test | Test API Key |
| Revoke API keys in bulk | POST /org/api-keys/bulk-revoke | Bulk Revoke API Keys |
Data operations
Long-running work over project data belongs to the operations plane rather than the organization-resource hierarchy.
| Operation | Method and path | Reference |
|---|---|---|
| Create and manage exports | POST /exports and five management operations | Memory Exports |
Webhooks
Receive events instead of polling for them. Endpoints can be paused, inspected, rotated and resumed; deliveries are recorded, retryable and replayable.
| Operation family | What it covers | Reference |
|---|---|---|
| Create | Register an endpoint and capture its one-time signing secret. | Create Webhook |
| List | List endpoints in the active organization and project scope. | List Webhooks |
| Update and delete | Change an endpoint or remove it. | Update Webhook · Delete Webhook |
| Manage lifecycle | Get one endpoint, list event types, read health, pause, resume and rotate the secret. | Manage Webhooks |
| Test and replay | Send a test event or replay eligible failed deliveries. | Test Webhook · Replay Deliveries |
| Inspect deliveries | List, get, and retry scoped delivery records. | Webhook Deliveries |
Billing
The public billing contract is intentionally read-only. Read the current plan and allowance; subscription-provider workflows and deployment financial administration are not public SDK operations.
| Operation | Method and path | Reference |
|---|---|---|
| Current plan | GET /org/billing/current-plan | Billing REST API |
What is not here
Two things developers ask for that MemorySync does not currently publish, stated plainly so nobody goes looking:
- There is no MCP server. The API carries everything one would wrap, but no MCP surface is published, so none is documented.
- There is no CLI. Use the Python or Node.js SDK, or cURL.
Request anatomy
A memory request combines server credentials, optional project scope, operation scope, and operation-specific fields.
The caller establishes trusted context before sending operation-specific inputs.
- Base URL
- https://api.memorysync.io
Send requests over HTTPS.
- Authentication
- X-API-Key
Load the key from a server-side secret.
- Project
- X-Project-ID
Include it when your application selects a project.
- End user
- X-End-User-ID
Required for API-key calls to user-scoped operations. Compose and Export use the authenticated principal scope instead.
- Body
- application/json
Required for operations with a JSON body.
Control-plane client contract
| Client | Authentication | Scope |
|---|---|---|
Python ControlPlaneClient | access_token for protected methods; omitted for login | Authenticated account, organization, and optional project context. |
Node.js ControlPlaneClient | accessToken for protected methods; omitted for login | Authenticated account, organization, and optional project context. |
| cURL | Authorization: Bearer for protected endpoints; no bearer header for login | The same endpoint-specific permission and scope contract. |
Make a first request
import osfrom memorysync import MemorySyncClientclient = MemorySyncClient(api_key=os.environ["MEMORYSYNC_API_KEY"],base_url="https://api.memorysync.io",project_id=os.environ["MEMORYSYNC_PROJECT_ID"],end_user_id="usr_7f3a9c2e",)result = client.add("The user prefers concise answers.",tags=["preference"],)print(result)
Read the result
Use the returned Memory object and retain its integer id for later operations.
Read status and reason; no new memory was created.
Check credentials, scope, fields, and referenced IDs before trying again.
Read the response metadata and avoid assuming an uncertain write succeeded or failed.
{"id":101,"text":"The user prefers concise answers.","tags":["preference"],"is_summary":false,"created_at":"2026-05-04T12:30:11Z"}
Use the API safely
Choose the right client
Python SDK
Best for Python services and scripts.
MemorySyncClientandControlPlaneClient.- Synchronous and asynchronous clients.
- Snake-case method arguments and properties.
Node.js SDK
Best for TypeScript and Node.js services.
MemorySyncClientandControlPlaneClient.- Promise-based methods.
- Camel-case application properties.
Direct HTTPS
Best for unsupported languages or protocol-level integration.
- JSON over HTTPS.
- Snake-case wire fields.
- Explicit header and status handling.
Understand successful responses
| Pattern | Operations | What your code must do |
|---|---|---|
| Memory result | Add created, Get, Summarize, Update | Read the integer id and the fields needed by the task. |
| Alternative success | Add skipped | Branch on status; a successful response does not always create a record. |
| Per-item outcomes | Bulk add | Inspect totals and every results entry. |
| Query response | Query | Read memories; an empty array is a valid result. |
| Export bundle | Export | Read principal, generated time, and the possibly empty memories array. |
| Deleted ID array | Forget | Compare the returned top-level integer array with requested IDs. |
| Specialized object | Compose, Create relation | Use the documented operation-specific fields. |
Production integration checklist
- Create the client once in trusted server code and load credentials from a secret manager.
- Derive project and end-user scope from authenticated application state.
- Validate operation inputs before sending them and branch on the documented success variants.
- Treat
4xxresponses as requests to correct; treat uncertain write failures as outcomes to reconcile. - Log safe request identifiers and status information without logging API keys or sensitive memory text.
- Keep SDKs and generated types updated, while tolerating additive response fields.