Skip to content

Memory (looms)

29 calls. Every request needs the Authorization header: see the overview.

PUT /looms

Creates a loom.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Request body: LoomCreateRequest

FieldTypeRequiredDescription
namestringyesThe loom’s name, unique within its namespace.
namespaceIduuidyesThe namespace to create it in.
descriptionstring | nullWhat the loom is for, in your own words.
settingsLoomSettingsInput| nullNight weaving, quiet period and weaver model. Absent: the defaults.

Response: Loom (200)

curl -X PUT "https://api.maitento.com/looms" \
-H "Authorization: $MAITENTO_AUTH" \
-H "Content-Type: application/json" \
-d '{"name":"...","namespaceId":"..."}'
DELETE /looms/by-id/{id}

Unravels (erases) a loom and everything in it (Tenant.Admin).

Who can call it: Tenant admins only, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Response: no body (204)

curl -X DELETE "https://api.maitento.com/looms/by-id/<id>" \
-H "Authorization: $MAITENTO_AUTH"
GET /looms/by-id/{id}

The loom with this id. Throws NotFoundError when there is none.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Response: Loom (200)

curl -X GET "https://api.maitento.com/looms/by-id/<id>" \
-H "Authorization: $MAITENTO_AUTH"
PATCH /looms/by-id/{id}

Changes a loom’s name, description or settings (absent fields are unchanged).

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Request body: LoomUpdateRequest

FieldTypeRequiredDescription
namestring | nullAbsent keeps the current name, as does the loom’s own name sent back unchanged.
descriptionstring | nullAbsent keeps the current description; an empty string clears it.
settingsLoomSettingsInput| nullAbsent keeps the current settings.

Response: Loom (200)

curl -X PATCH "https://api.maitento.com/looms/by-id/<id>" \
-H "Authorization: $MAITENTO_AUTH" \
-H "Content-Type: application/json" \
-d '{"name":"...","description":"...","settings":{}}'
GET /looms/by-id/{id}/inspect

Counts and health of a loom.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Response: LoomInspection (200)

curl -X GET "https://api.maitento.com/looms/by-id/<id>/inspect" \
-H "Authorization: $MAITENTO_AUTH"
PUT /looms/by-id/{id}/night-weave

Asks for a night weave now (it runs in the background). Never retried.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Response: no body (202)

curl -X PUT "https://api.maitento.com/looms/by-id/<id>/night-weave" \
-H "Authorization: $MAITENTO_AUTH"
GET /looms/by-id/{id}/night-weavings

The loom’s recent night weavings.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Query parameters

NameTypeRequiredDescription
limitinteger

Response: NightWeaving[] (200)

curl -X GET "https://api.maitento.com/looms/by-id/<id>/night-weavings" \
-H "Authorization: $MAITENTO_AUTH"
GET /looms/by-id/{id}/panels

The tapestry panels shown to agents.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Query parameters

NameTypeRequiredDescription
limitinteger

Response: TapestryPanel[] (200)

curl -X GET "https://api.maitento.com/looms/by-id/<id>/panels" \
-H "Authorization: $MAITENTO_AUTH"
GET /looms/by-id/{id}/patterns

The codebase patterns the loom has learnt.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Query parameters

NameTypeRequiredDescription
limitinteger

Response: LoomPattern[] (200)

curl -X GET "https://api.maitento.com/looms/by-id/<id>/patterns" \
-H "Authorization: $MAITENTO_AUTH"
DELETE /looms/by-id/{id}/patterns/by-name/{codebase}

Erases a codebase’s pattern (Tenant.Admin).

Who can call it: Tenant admins only, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes
codebasestringyes

Response: no body (204)

curl -X DELETE "https://api.maitento.com/looms/by-id/<id>/patterns/by-name/<codebase>" \
-H "Authorization: $MAITENTO_AUTH"
GET /looms/by-id/{id}/patterns/by-name/{codebase}

One codebase’s pattern. Throws NotFoundError when there is none.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes
codebasestringyes

Response: LoomPattern (200)

curl -X GET "https://api.maitento.com/looms/by-id/<id>/patterns/by-name/<codebase>" \
-H "Authorization: $MAITENTO_AUTH"
PUT /looms/by-id/{id}/patterns/by-name/{codebase}

Changes a codebase’s pattern (adds or removes heuristics, key files, conventions).

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes
codebasestringyes

Request body: PatternChange

FieldTypeRequiredDescription
architecturestring | nullReplaces how the codebase is built, in a few sentences; an empty string clears it. Null leaves it as it is.
addHeuristicsstring[]Heuristics to add: how to find your way around the codebase.
addKeyFilesstring[]Key files to add: entry points and the files that explain the rest.
addConventionsstring[]Conventions to add: style, patterns, rules.
removestring[]Items to drop, matched case-insensitively against the start of an item’s text.

Response: LoomPattern (200)

curl -X PUT "https://api.maitento.com/looms/by-id/<id>/patterns/by-name/<codebase>" \
-H "Authorization: $MAITENTO_AUTH" \
-H "Content-Type: application/json" \
-d '{"architecture":"...","addHeuristics":[],"addKeyFiles":[],"addConventions":[],"remove":[]}'
PUT /looms/by-id/{id}/reflect

Reflects on a topic across the loom’s threads (runs a model). Never retried.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Request body: LoomReflectRequest

FieldTypeRequiredDescription
topicstringyesThe topic: a subject, a person or a question.

Response: LoomReflection (200)

curl -X PUT "https://api.maitento.com/looms/by-id/<id>/reflect" \
-H "Authorization: $MAITENTO_AUTH" \
-H "Content-Type: application/json" \
-d '{"topic":"..."}'
PUT /looms/by-id/{id}/seed

Seeds this loom from another (fromLoomId, or fromLoom by name).

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Request body: LoomSeedRequest

FieldTypeRequiredDescription
fromLoomIduuid | nullThe source loom’s id.
fromLoomstring | nullThe source loom’s name, looked up in this loom’s namespace, or name@namespace for a loom in another namespace (named by its id or its name).
limitinteger | nullAt most this many threads, strongest first. Absent: the most a seeding copies (200).

Response: LoomSeeding (200)

curl -X PUT "https://api.maitento.com/looms/by-id/<id>/seed" \
-H "Authorization: $MAITENTO_AUTH" \
-H "Content-Type: application/json" \
-d '{"fromLoomId":"...","fromLoom":"...","limit":0}'
GET /looms/by-id/{id}/sessions

The sessions that wove into the loom.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Query parameters

NameTypeRequiredDescription
limitinteger

Response: LoomSession[] (200)

curl -X GET "https://api.maitento.com/looms/by-id/<id>/sessions" \
-H "Authorization: $MAITENTO_AUTH"
GET /looms/by-id/{id}/tapestry

What an agent would be shown from the loom (a preview of its tapestry).

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Query parameters

NameTypeRequiredDescription
subjectsstring[]
agentNamestring
tokensinteger

Response: TapestryPreview (200)

curl -X GET "https://api.maitento.com/looms/by-id/<id>/tapestry" \
-H "Authorization: $MAITENTO_AUTH"
GET /looms/by-id/{id}/tensions

Contradictions between threads.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Query parameters

NameTypeRequiredDescription
openboolean
limitinteger

Response: LoomTensionView[] (200)

curl -X GET "https://api.maitento.com/looms/by-id/<id>/tensions" \
-H "Authorization: $MAITENTO_AUTH"
PUT /looms/by-id/{id}/tensions/by-id/{tensionId}/resolve

Resolves a tension.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes
tensionIduuidyes

Request body: TensionResolveRequest

FieldTypeRequiredDescription
resolutionstringyesHow the tension was settled, in your own words.

Response: LoomTensionView (200)

curl -X PUT "https://api.maitento.com/looms/by-id/<id>/tensions/by-id/<tensionId>/resolve" \
-H "Authorization: $MAITENTO_AUTH" \
-H "Content-Type: application/json" \
-d '{"resolution":"..."}'
GET /looms/by-id/{id}/threads

Threads, filtered and sorted.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Query parameters

NameTypeRequiredDescription
kindThreadKind[]
strandThreadStrand
knotsThreadKnotFilter
pinnedboolean
subjectstring
tagstring
visibilityThreadVisibility
sortThreadListOrder
skipinteger
limitinteger

Response: LoomThread[] (200)

curl -X GET "https://api.maitento.com/looms/by-id/<id>/threads" \
-H "Authorization: $MAITENTO_AUTH"
PUT /looms/by-id/{id}/threads

Weaves a thread in (or reinforces one it matches).

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Request body: ThreadWeaveRequest

FieldTypeRequiredDescription
contentstringyesThe thread’s words: what to remember.
kindThreadKind| nullWhat kind of memory it is. Absent: Semantic (a fact).
weightnumber | nullHow much it matters, 0 to 1. Absent: 0.6.
foundationalboolean | nullTrue makes it warp (never frays); false forces weft. Absent: warp only for relational threads.
decayRateDecayRate| nullHow quickly it frays when unused. Absent: the default for its kind and strand.
subjectsstring[]Who or what it is about, as named in conversation.
tagsstring[]Free-form tags.
privatebooleanTrue makes it a private note, offered only to the agent that wove it; one woven through the API is offered to no agent.
pinnedbooleanTrue holds it close: always part of what an agent wakes up knowing.
cuesstring[] | nullWords (up to three each, at most 8) that bring the thread back when someone says them.
replacesuuid | nullA thread this one corrects or replaces: it is let go once this is woven, keeping what it said.
untildatetime | nullWhen it stops holding (a deadline, a plan’s day, a reminder that stops mattering); must be in the future. A bare day ("2026-10-30") holds until that day is over, as it does for an agent’s LoomWeave tool; a time with no zone is UTC.
basisThreadBasis| nullWhat it rests on: Said (default), Impression (a reading nobody said) or Read (from a document or tool).

Response: WeaveResult (200)

curl -X PUT "https://api.maitento.com/looms/by-id/<id>/threads" \
-H "Authorization: $MAITENTO_AUTH" \
-H "Content-Type: application/json" \
-d '{"content":"..."}'
DELETE /looms/by-id/{id}/threads/by-id/{threadId}

Erases one thread (Tenant.Admin).

Who can call it: Tenant admins only, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes
threadIduuidyes

Response: no body (204)

curl -X DELETE "https://api.maitento.com/looms/by-id/<id>/threads/by-id/<threadId>" \
-H "Authorization: $MAITENTO_AUTH"
GET /looms/by-id/{id}/threads/by-id/{threadId}

One thread. Throws NotFoundError when there is none.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes
threadIduuidyes

Response: LoomThread (200)

curl -X GET "https://api.maitento.com/looms/by-id/<id>/threads/by-id/<threadId>" \
-H "Authorization: $MAITENTO_AUTH"
PUT /looms/by-id/{id}/threads/by-id/{threadId}/cut

Cuts a thread (it is let go, leaving its essence).

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes
threadIduuidyes

Request body: ThreadCutRequest

FieldTypeRequiredDescription
acknowledgmentstringyesWhy the thread is let go. The knot keeps it.
essencestring | nullWhat remains after release. Optional: some things are let go entirely.

Response: LoomThread (200)

curl -X PUT "https://api.maitento.com/looms/by-id/<id>/threads/by-id/<threadId>/cut" \
-H "Authorization: $MAITENTO_AUTH" \
-H "Content-Type: application/json" \
-d '{"acknowledgment":"..."}'
PUT /looms/by-id/{id}/threads/by-id/{threadId}/give

Gives a thread to another loom (toLoomId, or toLoom: "name" or "name@namespace").

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes
threadIduuidyes

Request body: ThreadGiveRequest

FieldTypeRequiredDescription
toLoomIduuid | nullThe receiving loom’s id.
toLoomstring | nullThe receiving loom’s name, looked up in the giving loom’s namespace, or name@namespace for a loom in another namespace (named by its id or its name).
notestring | nullWhat the giver says with it (at most 500 characters, never a credential). Kept on the arrival’s provenance.

Response: WeaveResult (200)

curl -X PUT "https://api.maitento.com/looms/by-id/<id>/threads/by-id/<threadId>/give" \
-H "Authorization: $MAITENTO_AUTH" \
-H "Content-Type: application/json" \
-d '{"toLoomId":"...","toLoom":"...","note":"..."}'
PUT /looms/by-id/{id}/threads/by-id/{threadId}/pin

Pins or unpins a thread.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes
threadIduuidyes

Request body: ThreadPinRequest

FieldTypeRequiredDescription
pinnedboolean | nullyesTrue holds the thread in every future tapestry; false releases it.

Response: LoomThread (200)

curl -X PUT "https://api.maitento.com/looms/by-id/<id>/threads/by-id/<threadId>/pin" \
-H "Authorization: $MAITENTO_AUTH" \
-H "Content-Type: application/json" \
-d '{"pinned":false}'
PUT /looms/by-id/{id}/threads/by-id/{threadId}/reframe

Rewrites a thread, with the reason.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes
threadIduuidyes

Request body: ThreadReframeRequest

FieldTypeRequiredDescription
contentstring | nullThe thread’s new words. Absent keeps them.
weightnumber | nullThe thread’s new weight, 0 to 1. Absent keeps it.
foundationalboolean | nullTrue makes it warp (never frays); false makes it weft. Absent keeps its strand.
reasonstringyesWhy it changed. Kept on the seam the reframe leaves.
acknowledgmentstring | nullRequired to revise a warp thread or to make a thread warp: the explicit acknowledgment that a foundation is changing.
cuesstring[] | nullReplaces the words the thread waits for; empty clears them; absent leaves them as they are.

Response: LoomThread (200)

curl -X PUT "https://api.maitento.com/looms/by-id/<id>/threads/by-id/<threadId>/reframe" \
-H "Authorization: $MAITENTO_AUTH" \
-H "Content-Type: application/json" \
-d '{"reason":"..."}'
PUT /looms/by-id/{id}/threads/recall

The threads most relevant to a query.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
iduuidyes

Request body: ThreadRecallRequest

FieldTypeRequiredDescription
querystringyesWhat to look for.
kindsThreadKind[] | nullOnly threads of these kinds. Absent: every kind.
limitintegerThe most threads to return, 1 to 50. Defaults to 8.
subjectsstring[] | nullThe people present: threads about them rank higher.
recencyBiasnumber | null0 = salience only; 1 = strongly favour recently used threads. Absent: the loom’s default.

Response: ThreadRecollection[] (200)

curl -X PUT "https://api.maitento.com/looms/by-id/<id>/threads/recall" \
-H "Authorization: $MAITENTO_AUTH" \
-H "Content-Type: application/json" \
-d '{"query":"..."}'
GET /looms/by-namespace/{namespaceId}

The looms of a namespace. Give namespaceId, or a namespace NAME (namespace, else the client default), which is looked up first.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Path parameters

NameTypeRequiredDescription
namespaceIduuidyes

Response: Loom[] (200)

curl -X GET "https://api.maitento.com/looms/by-namespace/<namespaceId>" \
-H "Authorization: $MAITENTO_AUTH"
GET /looms/night-weavings

Night weavings of every loom since an instant.

Who can call it: Admins and members, with an API key or a portal session. Try it in the API playground.

Query parameters

NameTypeRequiredDescription
sincedatetime
limitinteger

Response: NightWeaving[] (200)

curl -X GET "https://api.maitento.com/looms/night-weavings" \
-H "Authorization: $MAITENTO_AUTH"