Skip to main content

memorysync

Official Python client for the MemorySync API. Sync and async, no surprises.

pip install memorysync

Quick start

from memorysync import MemorySyncClient

ms = MemorySyncClient(
    api_key="...",
    base_url="https://api.memorysync.io",
    project_id="proj_xxxxxxxxxxxxxxxx",   # optional
    end_user_id="user_42",                 # optional
)

ms.add("User prefers dark mode.")

result = ms.query("ui preferences", k=5)
for m in result.memories:
    print(m.id, m.text)

Async usage

import asyncio
from memorysync import AsyncMemorySyncClient

async def main():
    async with AsyncMemorySyncClient(api_key="...", base_url="...") as ms:
        result = await ms.query("ui preferences", k=5)
        print(result.memories)

asyncio.run(main())

Use MemorySyncClient as a context manager when you want deterministic connection cleanup:

with MemorySyncClient(api_key="...", base_url="...") as ms:
    ms.add("...")

Configuration

Argument Required Description
api_key yes Sent as X-API-Key. Provision in your MemorySync dashboard.
base_url yes Deployment URL of your MemorySync instance.
project_id no Pin every request to a project (X-Project-ID). Format: proj_ + 16 hex chars.
end_user_id no Identify which of your users this client speaks for (X-End-User-ID).
timeout no Per-request timeout in seconds. Default 30.0.
transport no Inject a custom httpx transport (tests, retries, proxies).

end_user_id can also be passed per-call on add() to override the client default.

Methods

Every method maps 1:1 to a real HTTP route. The two clients share the same surface; only the call style differs (sync vs await).

Method Route
add(text, **opts) POST /memory/add
bulk_add(items, *, deduplicate=True) POST /memory/bulk-add
query(query, *, k=None, ...) POST /memory/query
get(memory_id) GET /memory/{id}
update(memory_id, **fields) PATCH /memory/{id}
forget(memory_ids, *, reason=None) DELETE /memory/forget
summarize(memory_ids, *, lossless=False) POST /memory/summarize
compose(prompt_template, *, recall_k=None) POST /memory/compose
export_all() GET /memory/export
create_relation(from_id, **opts) POST /memory/{id}/relations

add returns one of two shapes

add() runs through MemorySync's extraction pipeline, so input that carries no high-value content is intentionally skipped. Branch on the type of the result:

from memorysync import AddSkippedResponse, Memory

result = ms.add("User prefers dark mode.")
if isinstance(result, AddSkippedResponse):
    print("skipped:", result.reason)
else:
    assert isinstance(result, Memory)
    print(result.id, result.text)

Errors

Every non-2xx response raises a typed subclass of MemorySyncError:

Class When
AuthError 401 / 403 — bad key, missing scope.
ValidationError 400 / 409 / 422.
NotFoundError 404 — record not visible to the caller.
RateLimitError 429 — read err.retry_after_seconds.
ServerError 5xx.
MemorySyncError Network errors, timeouts, anything else.

Every error carries status_code, response, and the server-issued request_id (when present) for support escalation.

import time
from memorysync import RateLimitError

try:
    ms.add("...")
except RateLimitError as e:
    time.sleep(e.retry_after_seconds)

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

memorysync-1.0.1.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

memorysync-1.0.1-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file memorysync-1.0.1.tar.gz.

File metadata

  • Download URL: memorysync-1.0.1.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.5

File hashes

Hashes for memorysync-1.0.1.tar.gz
Algorithm Hash digest
SHA256 3950b13356c46d6ae33a5a540de44e6a382f9acf1889fcf8b4b412acc6e7f5df
MD5 e839847cbff9df7f0ed3a93c9bfc11a6
BLAKE2b-256 3c8c003cf5a061f5c71de5a696a65f31ee43d6f5bee883e465195a2b7d379042

See more details on using hashes here.

File details

Details for the file memorysync-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: memorysync-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.5

File hashes

Hashes for memorysync-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e3a82326f430cdcb246b4aa07a110724811ffa5ced918cf8118f902ed722c840
MD5 aa3d20b43f7d1a84f5ac0132cae17c8d
BLAKE2b-256 d47c9c2c4142362c7e46c2d38f582368702aeb6ebeeff8928a0b2a0cecda7817

See more details on using hashes here.

Release history Release notifications | RSS feed

1.9.2

2 files

1.9.1

2 files

1.9.0

2 files

1.8.0

2 files

1.7.3

2 files

1.7.2

2 files

1.7.1

2 files

1.7.0

2 files

1.6.0

2 files

1.5.0

2 files

1.4.0

2 files

1.3.0

2 files

1.2.0

2 files

1.1.1

2 files

1.1.0

2 files

This release

1.0.1 This release

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page