Where did you hear about us?
1 of 6
Stores

Stores - create, list, delete.

A store is the user_id you read and write under - one isolated memory space per end-user, agent, or topic. Stores are explicit: create one before you store into or recall from it, or the call returns 404. Every account starts with a default store, so you can begin without a create call.

How isolation nests. An account owns workspaces; each workspace isolates its own memory, API keys, and usage (billing is shared at the account). A store lives inside a workspace: keys in the same workspace share its stores, and different workspaces never see each other's memory. account → workspace → store (user_id) → memories.
mem.create_store("alice")        # create (idempotent)
mem.list_stores()              # [{"user_id","created_at","canonical_id"?}, ...]
mem.delete_store("alice")        # delete the store + all its memories
await mem.createStore("alice");
await mem.listStores();          // [{ user_id, created_at }, ...]
await mem.deleteStore("alice");     // store + all its memories
mem.create_store("alice").await?;
let stores = mem.list_stores().await?;
mem.delete_store("alice").await?;
# create
curl -X POST https://api.wontopos.com/api/v1/memory/collection \
  -H "X-API-Key: $WOS_API_KEY" -H "Content-Type: application/json" -d '{"user_id":"alice"}'
# list
curl https://api.wontopos.com/api/v1/memory/collections -H "X-API-Key: $WOS_API_KEY"
# delete (store + all its memories)
curl -X DELETE https://api.wontopos.com/api/v1/memory/collection \
  -H "X-API-Key: $WOS_API_KEY" -H "Content-Type: application/json" -d '{"user_id":"alice"}'
Actual response - create
{ "user_id": "alice", "status": "created" }   // "exists" if it already did
// "canonical_id" and "note" appear when the id is stored in a normalized form
Actual response - list
{ "collections": [
  { "user_id": "default", "created_at": "2026-06-26T02:23:14Z" },
  { "user_id": "alice",   "created_at": "2026-06-26T02:24:01Z" }
], "count": 2 }
Recall on a store that doesn't exist
{ "error": { "type": "not_found_error",
  "message": "Store 'ghost' does not exist in this API key's workspace. …",
  "store": "ghost" } }
Use one store per end-user ("alice", "user_42") to keep each person's memory separate, or a single default store for a personal agent. You can also create and browse stores in the console (Memory ids → Issue) without writing code. Deleting a store is permanent - it drops every memory under it. A store id is 1 to 64 ASCII letters, digits, ., _ and -, starting with a letter or digit. Any other id, such as an email address or a name in another script, is refused on create with 400, so key the store on an internal id instead. Ids that differ only by case name one store: Alice.Smith and alice.smith are the same. Ids that differ only in ., _ or - cannot both exist: once alice.smith exists, creating alice-smith is refused with 409 and using it answers 404. When an id is stored in a normalized form, create and list responses add canonical_id. Keep using the id you created the store with.

List and delete stores

mem.list_stores()                # [{"user_id","created_at","canonical_id"?}, …]
mem.delete_store("alice")      # the store and every memory in it
await mem.listStores();
await mem.deleteStore("alice");
let stores = mem.list_stores().await?;
mem.delete_store("alice").await?;
curl           .../api/v1/memory/collections
curl -X DELETE .../api/v1/memory/collection  -d '{"user_id":"alice"}'