Python SDK: Environments, memory and more
The supporting resources agents use.
from syntic import Syntic
client = Syntic() # reads SYNTIC_API_KEY| Method | Endpoint | Returns |
|---|---|---|
environments.create | POST /v1/environments | Environment |
environments.rebuild | POST /v1/environments/{environment_id}/rebuild | Environment |
memory_stores.memories.search | POST /v1/memory_stores/{store_id}/memories/search | list[Memory] |
memory_stores.consolidations.create | POST /v1/memory_stores/{store_id}/consolidations | MemoryConsolidation |
vaults.secrets.set | PUT /v1/vaults/{vault_id}/secrets/{name} | VaultSecret (metadata only) |
deployments.runs.list | GET /v1/deployments/{deployment_id}/runs | SyncPage[DeploymentRun] |
skills.versions.create | POST /v1/skills/{skill_id}/versions | SkillVersion |
user_profiles.create | POST /v1/user_profiles | UserProfile |
tunnels.create | POST /v1/tunnels | Tunnel |
Methods
environments.create
Define a sandbox image. Maps to POST /v1/environments.
result = client.environments.create(
name="data-analysis",
base_image="syntic/python:3.12",
packages={"pip": ["pandas==2.2.3"]},
)environments.rebuild
Build the image again. Maps to POST /v1/environments/{environment_id}/rebuild.
result = client.environments.rebuild('env_01JC5B2D4F6H8K0M2P4R')memory_stores.memories.search
Semantic search within a scope. Maps to POST /v1/memory_stores/{store_id}/memories/search.
result = client.memory_stores.memories.search(
'mem_01JC1A3C5E7G9J1L3N5Q',
query="account manager",
scope="customer:4821",
)memory_stores.consolidations.create
Start a consolidation job. Maps to POST /v1/memory_stores/{store_id}/consolidations.
result = client.memory_stores.consolidations.create(
'mem_01JC1A3C5E7G9J1L3N5Q',
strategies=["merge_duplicates"],
dry_run=True,
)vaults.secrets.set
Write a secret (write-only). Maps to PUT /v1/vaults/{vault_id}/secrets/{name}.
result = client.vaults.secrets.set(
'vlt_01JC2B4D6F8H0K2M4P6R',
'crm-token',
value="…",
allowed_destinations=["mcp.example.com"],
)deployments.runs.list
Recent runs of a deployment. Maps to GET /v1/deployments/{deployment_id}/runs.
for item in client.deployments.runs.list('dep_01JC6C8E0G2J4L6N8Q0S'):
print(item.id if hasattr(item, 'id') else item)skills.versions.create
Upload a new skill version from a directory; the SDK zips it. Maps to POST /v1/skills/{skill_id}/versions.
result = client.skills.versions.create('skill_01JBXM4', directory="./skills/invoice-reconciler")user_profiles.create
Create an end-user profile. Maps to POST /v1/user_profiles.
result = client.user_profiles.create(external_id="cust-4821", locale="en-GB")tunnels.create
Create an MCP tunnel. Maps to POST /v1/tunnels.
result = client.tunnels.create(
name="erp-onprem",
allowed_targets=["http://erp-mcp.internal:8080/mcp"],
)Conventions
Every method accepts extra_headers, extra_query, extra_body and timeout keyword arguments, and has an async twin on AsyncSyntic. List methods return pages that iterate across all pages automatically.
See the Python SDK overview for installation, errors and retries.