MemorySync
API Reference

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.

Memory

The data plane. Authenticated with an API key, and user-scoped through X-End-User-ID where the operation documents it.

OperationMethod and pathReference
Add a memoryPOST /memory/addAdd
Add many at oncePOST /memory/bulk-addBulk Add
Ingest a filePOST /memory/uploadUpload File
Read one memoryGET /memory/{memory_id}Get
Change one memoryPATCH /memory/{memory_id}Update
Change many at oncePOST /memory/batch-updateBatch Update
Summarize a setPOST /memory/summarizeSummarize
Relate two memoriesPOST /memory/relationsCreate Relation
Export memoriesGET /memory/exportExport
Forget a memoryDELETE /memory/forgetForget
Remove an end userDELETE /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.

OperationMethod and pathReference
Search with filters and scoringPOST /memory/queryQuery
Retrieve for a promptPOST /memory/retrieveRetrieve
Search with routingPOST /memory/searchRouted Search
Answer from memoriesPOST /memory/synthesizeSynthesize
Build a promptPOST /memory/composeCompose
Rebuild embeddingsPOST /memory/refreshRefresh Embeddings

Intelligence

Derived views over what is already stored. These read; they do not create memories.

OperationMethod and pathReference
Entity and relation graphGET /memory/graphMemory Graph
Thematic clustersGET /memory/clustersMemory Clusters
Conflicting statementsGET /memory/decisionsDecision Panel
Record a resolutionPOST /memory/decision/{decision_id}/resolveResolve Decision
Combined reportGET /memory/intelligenceIntelligence Report
Knowledge totalsGET /memory/knowledge/statsKnowledge Stats

Entities, tuning and audit

The vocabulary memories are classified against, the record of how one changed, and the signal that moves retrieval ranking.

OperationMethod and pathReference
Read or replace the ontologyGET and PUT /memory/ontologyOrganization Ontology
History of one memoryGET /memory/{memory_id}/historyMemory History
Rate a retrieval resultPOST /memory/{memory_id}/feedbackSubmit 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.

OperationMethod and pathReference
Store a conversation turnPOST /v1/memory/add_turnAdd Conversation Turn
Recall contextPOST /v1/memory/recallRecall Context
Health and countsGET /v1/memory/statusMemory Status
List stored memoriesGET /v1/memory/memoriesList 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.

AreaWhat it coversReference
Connection lifecycleCreate, read, update, repair, purge and remove — identical for every provider.Connection Lifecycle
Providers and OAuthThe provider catalog and the browser consent flow.Providers & OAuth
Sync and jobsTrigger a sync, watch the job, cancel it.Sync & Jobs
Synced objectsWhat a sync produced, and why an object yielded nothing.Synced Objects
Connector insightsTotals across connections, and the audit trail.Connector Insights
SlackChannel selection, noise filtering, identity mapping.Slack
Google DriveFile and folder selection through the Google Picker.Google Drive
Amazon S3Bucket prefix approval and key exclusion.Amazon S3
GranolaFolder selection, visibility, participant mapping, transcripts.Granola
Web crawlerCrawl a public site, then choose what becomes a memory.Web Crawler
Legacy integrationsThe v1 catalog and its two administrative operations.Legacy Integrations
Integrations REST APIThe 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.

OperationMethod and pathReference
Sign inPOST /auth/loginAccount Authentication
Create an organizationPOST /organizationsCreate Organization
List organizationsGET /organizationsList Organizations
Manage project lifecycleGET, POST, PATCH, and DELETE /org/projectsProject Lifecycle
List active sessionsGET /auth/sessionsList Active Sessions
Revoke a sessionPOST /auth/sessions/{session_id}/revokeRevoke Active Session
Test an API keyPOST /org/api-keys/{key_id}/testTest API Key
Revoke API keys in bulkPOST /org/api-keys/bulk-revokeBulk Revoke API Keys

Data operations

Long-running work over project data belongs to the operations plane rather than the organization-resource hierarchy.

OperationMethod and pathReference
Create and manage exportsPOST /exports and five management operationsMemory Exports

Webhooks

Receive events instead of polling for them. Endpoints can be paused, inspected, rotated and resumed; deliveries are recorded, retryable and replayable.

Operation familyWhat it coversReference
CreateRegister an endpoint and capture its one-time signing secret.Create Webhook
ListList endpoints in the active organization and project scope.List Webhooks
Update and deleteChange an endpoint or remove it.Update Webhook · Delete Webhook
Manage lifecycleGet one endpoint, list event types, read health, pause, resume and rotate the secret.Manage Webhooks
Test and replaySend a test event or replay eligible failed deliveries.Test Webhook · Replay Deliveries
Inspect deliveriesList, 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.

OperationMethod and pathReference
Current planGET /org/billing/current-planBilling 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

Memory request contract

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

ClientAuthenticationScope
Python ControlPlaneClientaccess_token for protected methods; omitted for loginAuthenticated account, organization, and optional project context.
Node.js ControlPlaneClientaccessToken for protected methods; omitted for loginAuthenticated account, organization, and optional project context.
cURLAuthorization: Bearer for protected endpoints; no bearer header for loginThe same endpoint-specific permission and scope contract.

Make a first request

import os
from memorysync import MemorySyncClient
client = 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

First-request result paths
201
Memory created

Use the returned Memory object and retain its integer id for later operations.

200
Candidate skipped

Read status and reason; no new memory was created.

4xx
Correct the request

Check credentials, scope, fields, and referenced IDs before trying again.

429 / 5xx
Preserve a recoverable state

Read the response metadata and avoid assuming an uncertain write succeeded or failed.

201-response.json
{"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

Client choices

Python SDK

Best for Python services and scripts.

  • MemorySyncClient and ControlPlaneClient.
  • Synchronous and asynchronous clients.
  • Snake-case method arguments and properties.

Node.js SDK

Best for TypeScript and Node.js services.

  • MemorySyncClient and ControlPlaneClient.
  • 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

PatternOperationsWhat your code must do
Memory resultAdd created, Get, Summarize, UpdateRead the integer id and the fields needed by the task.
Alternative successAdd skippedBranch on status; a successful response does not always create a record.
Per-item outcomesBulk addInspect totals and every results entry.
Query responseQueryRead memories; an empty array is a valid result.
Export bundleExportRead principal, generated time, and the possibly empty memories array.
Deleted ID arrayForgetCompare the returned top-level integer array with requested IDs.
Specialized objectCompose, Create relationUse 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 4xx responses 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.
Was this page helpful?