MemorySync
API Reference · Control-plane API

Project Lifecycle

List, create, rename, archive, restore, and delete organization projects from one compact lifecycle reference.

Shared access contract

ControlRequired contract
AuthenticationBearer access token for an active organization member.
Permissionprojects:read plus project-read access for list; projects:write plus project-write access for mutations.
Project selectionWhere supported, pass project_id in Python, { projectId } options in Node.js, or X-Project-ID over HTTPS.

List Projects

GET/org/projects
200 OK
FieldTypeContract
Request bodynoneNo body or project ID.
import os
from memorysync import ControlPlaneClient
client = ControlPlaneClient(
base_url="https://api.memorysync.io",
access_token=os.environ["MEMORYSYNC_ACCESS_TOKEN"],
)
projects = client.list_projects()
response.json
[{"id":"project_abc123","name":"default-project","is_default":true,"memory_count":120,"archived_at":null}]
  • Returns every project visible in the authenticated organization.
ConcernContract
ScopeOrganization resolved from the bearer token.
Errors401/403 for access failure; 5xx for an unavailable project service.

Create Project

POST/org/projects
201 Created
FieldTypeContract
namestring bodyRequired non-empty name, up to 200 characters.
import os
from memorysync import ControlPlaneClient
client = ControlPlaneClient(
base_url="https://api.memorysync.io",
access_token=os.environ["MEMORYSYNC_ACCESS_TOKEN"],
)
project = client.create_project("Research")
response.json
{"id":"project_research","name":"Research","is_default":false,"archived_at":null}
  • Persist the returned project ID, not a locally derived identifier.
ConcernContract
ScopeCreates a project in the authenticated organization.
Errors400/422 invalid name; 401/403 access failure; 409 conflicting project state.

Rename Project

PATCH/org/projects/{project_id}
200 OK
FieldTypeContract
project_idstring pathRequired project ID.
namestring bodyRequired replacement name, up to 200 characters.
import os
from memorysync import ControlPlaneClient
client = ControlPlaneClient(
base_url="https://api.memorysync.io",
access_token=os.environ["MEMORYSYNC_ACCESS_TOKEN"],
)
project = client.rename_project("project_research", "Applied Research")
response.json
{"id":"project_research","name":"Applied Research","is_default":false,"archived_at":null}
  • Use the returned object as current project state.
ConcernContract
ScopeProject must belong to the authenticated organization.
Errors400/422 invalid name; 401/403 access failure; 404 unavailable project; 409 conflict.

Archive Project

POST/org/projects/{project_id}/archive
200 OK
FieldTypeContract
project_idstring pathRequired active, non-default project ID.
Request bodynoneNo JSON body.
import os
from memorysync import ControlPlaneClient
client = ControlPlaneClient(
base_url="https://api.memorysync.io",
access_token=os.environ["MEMORYSYNC_ACCESS_TOKEN"],
)
project = client.archive_project("project_research")
response.json
{"id":"project_research","name":"Applied Research","archived_at":"2026-08-01T12:00:00Z"}
  • Archiving is reversible with unarchive.
ConcernContract
ScopeProject must belong to the authenticated organization.
Errors400 default project cannot be archived; 401/403 access failure; 404 unavailable project.

Unarchive Project

POST/org/projects/{project_id}/unarchive
200 OK
FieldTypeContract
project_idstring pathRequired archived project ID.
Request bodynoneNo JSON body.
import os
from memorysync import ControlPlaneClient
client = ControlPlaneClient(
base_url="https://api.memorysync.io",
access_token=os.environ["MEMORYSYNC_ACCESS_TOKEN"],
)
project = client.unarchive_project("project_research")
response.json
{"id":"project_research","name":"Applied Research","archived_at":null}
  • The returned project is active again.
ConcernContract
ScopeProject must belong to the authenticated organization.
Errors401/403 access failure; 404 unavailable project; unarchive is idempotent.

Delete Project

DELETE/org/projects/{project_id}
204 No Content
FieldTypeContract
project_idstring pathRequired deletable project ID.
Request bodynoneNo JSON body.
import os
from memorysync import ControlPlaneClient
client = ControlPlaneClient(
base_url="https://api.memorysync.io",
access_token=os.environ["MEMORYSYNC_ACCESS_TOKEN"],
)
client.delete_project("project_research")

Response body: none.

  • A successful delete returns no JSON body; reconcile uncertain outcomes before retrying.
ConcernContract
ScopeProject must belong to the authenticated organization.
Errors400 default project cannot be deleted; 401/403 access failure; 404 unavailable project.

Shared handling