atteq API
  • Guides
  • Recipes
  • Cookbook
  • API Reference
Information
agents
    List AgentsgetCreate AgentpostDocument AttachmentsgetGet VersiongetEdit DraftpatchReplace Draft GraphputPublish VersionpostGet AgentgetDelete AgentdeleteCopy AgentpostGet DraftgetGet Agent MapgetPending ChangesgetList PlacementsgetRestore VersionpostList VersionsgetGet Mapget
voice_agent
    Open Browser CallpostEnd Browser CalldeleteGet Agent Test LinkgetGet Bridge CeilinggetSet Bridge Ceilingpatch
ai_profiles
    Get Ai Profile CapabilitiesgetList Live SettingsgetCreate Live SettingspostDelete Live SettingsdeleteUpdate Live SettingspatchList Llm SettingsgetCreate Llm SettingspostDelete Llm SettingsdeleteUpdate Llm SettingspatchList ProfilesgetCreate ProfilepostGet ProfilegetDelete ProfiledeleteUpdate ProfilepatchCopy ProfilepostSet Text SectionputSet Voice SectionputList Stt SettingsgetCreate Stt SettingspostDelete Stt SettingsdeleteUpdate Stt SettingspatchList Tts SettingsgetCreate Tts SettingspostDelete Tts SettingsdeleteUpdate Tts SettingspatchList Vad SettingsgetCreate Vad SettingspostDelete Vad SettingsdeleteUpdate Vad Settingspatch
analyst
    List Agent FindingsgetCall Back FindingpostDismiss FindingpostUndo Finding DismissaldeleteTeach FindingpostWatch FindingpostList Question ChartsgetList Tracked QuestionsgetCreate Tracked QuestionpostGet Question Search CostgetSearch For Tracked QuestionpostPropose Tracked QuestionpostDelete Tracked QuestiondeleteUpdate Tracked QuestionpatchGet Reading SwitchgetSet Reading SwitchputGet Agent Summaryget
analytics
    List ChartsgetCreate ChartpostPreview ChartpostGet ChartgetDelete ChartdeleteUpdate ChartpatchRun ChartpostList DatasetsgetList BoardsgetCreate BoardpostGet TraversalgetGet BoardgetDelete BoarddeleteUpdate Boardpatch
authentication
    List InvitationsgetInvite MemberpostRevoke InvitationdeleteResend InvitationpostList MembersgetRemove MemberdeleteGet Member Conversation AccessgetSet Member Conversation AccesspatchSet Member FlagspatchSet Member RolepatchGet OrganizationgetUpdate OrganizationpatchGet Role FlagsgetSet Role Flagspatch
automations
    List AutomationsgetCreate AutomationpostGet AutomationgetDelete AutomationdeleteUpdate AutomationpatchSet Automation EnabledputGet Automation MapgetRun AutomationpostList Automation RunsgetGet Automation Runget
billable-metrics
    List MetricsgetUsage SummarygetGet Metricget
outbound_calls
    Place CallpostList CampaignsgetCreate CampaignpostGet CampaigngetDelete CampaigndeleteUpdate CampaignpatchActivate CampaignpostLink CollectionpostAdd ContactspostAdd Contacts From CollectionpostRemove Contacts From CollectionpostSet Campaign HoursputPreview Campaign HourspostPause CampaignpostGet Campaign SummarygetExclude ContactpostInclude Contactpost
channels
    List ChannelsgetCreate ChannelpostList Thread SubjectsgetClose Channel ThreadpostList Thread DecisionsgetGet Thread Contact FilegetHand Thread To AgentpostList Thread MailgetGet Prepared ReplygetAsk Again For Prepared ReplypostDiscard Prepared ReplypostSend Prepared ReplypostReply On Channel ThreadpostGet ChannelgetDelete ChanneldeleteUpdate ChannelpatchSend On ChannelpostList Channel ThreadsgetList RostergetCreate Roster EntrypostGet Own Roster EntrygetGet Roster EntrygetDelete Roster EntrydeleteUpdate Roster EntrypatchAdd Roster AddresspostChange Roster AddressputRemove Roster Addressdelete
custom-data
    List CollectionsgetCreate CollectionpostList Collection NamesgetGet CollectiongetDelete CollectiondeleteUpdate CollectionpatchAdd FieldpostDelete FielddeleteUpdate FieldpatchImport RecordspostPlan ImportpostPropose ImportpostGet ImportgetList RecordsgetCreate RecordpostBulk Delete RecordspostBulk Set FieldpostCount RecordsgetList Records Of ContactgetDelete Records Of ContactdeleteGet RecordgetDelete RecorddeleteUpdate Recordpatch
connections
    List ConnectionsgetCreate ConnectionpostCreate Forwarded AddresspostCreate Mail ServerpostDiscover Mail ServerpostAuthorize Microsoft MailboxpostList ProvidersgetGet ConnectiongetDelete ConnectiondeleteUpdate ConnectionpatchGet Forwarded AddressgetCheck Forwarded AddresspostList Person GrantsgetSet Person GrantputRemove Person GrantdeleteGet Mail ServergetUpdate Mail ServerpatchList Mail Server FoldersgetEnter Mail Server PasswordputChange Mail Server ServersputTest Mail Server AgainpostGet Microsoft MailboxgetUpdate Microsoft MailboxpatchList Microsoft Mailbox FoldersgetConsent To Microsoft Mailbox WritespostWithdraw Microsoft Mailbox Writesdelete
custom-tools
    List Custom ToolsgetCreate Custom ToolpostGet Custom ToolgetDelete Custom TooldeleteGet Custom Tool DraftgetEdit Custom Tool DraftpatchPublish Custom ToolpostRestore Custom Tool VersionpostTry Custom ToolpostList Custom Tool Versionsget
rag
    List DocumentsgetUpload DocumentpostSearch DocumentspostGet DocumentgetDelete DocumentdeleteDownload DocumentgetReingest Documentpost
flows
    List FlowsgetCreate FlowpostGet FlowgetDelete FlowdeleteRename FlowpatchAdd Flow EdgepostDelete Flow EdgedeleteSet Entry SteppatchAdd SteppostDelete StepdeleteUpdate SteppatchTest FlowpostList Flow Testsget
dynamic_context
    Create GraphpostGet GraphgetDelete GraphdeleteAdd EdgepostDelete EdgedeleteAdd NodepostDelete NodedeleteUpdate NodepatchSet Rootput
inbox
    Get Inbox Open CountgetSet Inbox PreferencespatchGet Inbox RailgetCreate Inbox ViewpostDelete Inbox ViewdeleteUpdate Inbox Viewpatch
handoff
    Assign Threadpost
interactions
    List InteractionsgetCount InteractionsgetGet InteractiongetSet Conversation LabelspostGet TracegetGet TranscriptgetList LabelsgetCreate LabelpostDelete LabeldeleteUpdate Labelpatch
legal
    Agree To Processing AgreementpostAgree To TermspostLegal BoxesgetList Legal DocumentsgetRead Legal DocumentgetList Legal VersionsgetRead Legal VersiongetDownload Legal VersiongetOrganization Legal HistorygetOwn Legal HistorygetObject To SubprocessorspostWithdraw ObjectionpostLegal Pendingget
not-a-tool
    Agree To Processing AgreementpostAgree To TermspostObject To SubprocessorspostWithdraw Objectionpost
memory
    List MemoriesgetList Memory LinesgetCreate Memory LinepostDelete Memory LinedeleteUpdate Memory LinepatchList Memory PeoplegetGet Memory PersongetForget PersondeleteGet Memory SwitchgetSet Memory SwitchputWipe ContactdeleteGet Conversation MemorygetRecall MemoriespostGet MemorygetDelete MemorydeletePatch Memorypatch
notifications
    List InboxgetGet Unread CountgetMark ReadpostMark Unreaddelete
recipes
    List RecipesgetList Installed RecipesgetGet Installed RecipegetUninstall RecipedeleteSet Recipe EnabledputUpdate Recipe ParameterspatchUpdate RecipepostInstall Recipepost
data-retention
    Get RetentiongetSet Retentionpatch
text
    Open ConversationpostClose ConversationpostAnswer ConfirmationpostGet Sent FilegetSend MessagepostSet Modepatch
tools
    List ToolsgetCreate ToolpostList BuiltinsgetImport Mcp ServerpostImport OpenapipostPreview Openapi ImportpostSuggest Tool ExamplespostGet ToolgetDelete TooldeleteUpdate ToolpatchTest ToolpostList Tool Testsget
trunks
    List Transfer DirectorygetCreate Transfer Directory EntrypostGet Transfer Directory EntrygetDelete Transfer Directory EntrydeleteUpdate Transfer Directory EntrypatchList TrunksgetCreate TrunkpostGet TrunkgetDelete TrunkdeleteUpdate TrunkpatchList Forward Recordsget
Schemas
powered by Zudoku
attek API
attek API

memory


List Memories

GET
/api/v1/memory

List the notes this organization's agents have made, newest first, filtered by agent, scope, the person (contact_key, read the way a person types it) or the line that produced them (line_id, which opens a line's notes). Use when showing what an agent remembers, before correcting or deleting a note. Changes nothing.

A person's note is listed only to someone who may read the conversation it was learned in; the business notes are listed to whoever reaches memory.

List Memories › query Parameters

agent_id
​
scope
​
contact_key
​
line_id
​
limit
​integer · min: 1 · max: 200
Default: 50
offset
​integer · min: 0
Default: 0

List Memories › Responses

Successful Response

​MemoryOut[]
A stored memory as the management surface sees it. `org_id` is the tenant that owns it — never the person who happened to create it (principle 6). `interaction_id` names the conversation this fact was **first** learned in (`None` for a memory no interaction produced — a seed, a test, an explicit write with none to name); `revise` never moves it, because a correction does not change where a fact was first learned. `support_count` is how many conversations support it — see `service.consolidate`. `pinned` is editable only where the fact is: agent-global, from `PATCH /memory/{id}`. `looks_personal` is `schemas.looks_personal(content)`, computed fresh on every read — a mark, never a gate; see `DECISIONS.md`.
MemoryOut
agent_id
​string · uuid · required
​required
content
​string · required
created_at
​string · date-time · required
id
​string · uuid · required
​required
​required
​required
looks_personal
​boolean · required
org_id
​string · uuid · required
pinned
​boolean · required
redacted
​integer · required
scope
​Scope · enum · required

Which layer a memory lives in. The retrieval side pulls the relevant layer(s) into context; the write side must respect the PII boundary.

Enum values:
agent_global
per_contact
per_session
​required
support_count
​integer · required
updated_at
​string · date-time · required
GET/api/v1/memory
curl /api/v1/memory \ --header 'Authorization: Bearer <token>'
Example Responses
[ { "agent_id": "00000000-0000-0000-0000-000000000000", "contact_key": "string", "content": "content", "created_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "interaction_id": "00000000-0000-0000-0000-000000000000", "line_id": "00000000-0000-0000-0000-000000000000", "line_words": "string", "looks_personal": true, "org_id": "00000000-0000-0000-0000-000000000000", "pinned": true, "redacted": 0, "scope": "agent_global", "session_key": "string", "support_count": 0, "updated_at": "2024-08-25T15:00:00Z" } ]
json
application/json

List Memory Lines

GET
/api/v1/memory/agents/{agent_id}/lines

List what this agent's memory is told to notice: its lines, oldest first, each saying whether it is about every person or about the business and how many notes it has produced, beside the bounds the notebook keeps -- lines, a line's length, the notes reread at the start of a conversation and those that may be remembered always. Use when showing what the agent is told to notice, before adding, rewording or removing a line. Listed whether memory is on or off.

List Memory Lines › path Parameters

agent_id
​string · uuid · required

List Memory Lines › Responses

Successful Response

An agent's lines, oldest first, beside the bounds they are held to.
MemoryLinesOut
​MemoryBoundsOut · required

The notebook's bounds as the interface prints them (rule 27): lines, a line's length, the notes reread from each layer and the business notes that may be marked "remember always". The same numbers recall and the writes enforce.

​MemoryLineOut[] · required
GET/api/v1/memory/agents/{agent_id}/lines
curl /api/v1/memory/agents/:agent_id/lines \ --header 'Authorization: Bearer <token>'
Example Responses
{ "bounds": { "max_line_length": 0, "max_lines": 0, "remember_always_max": 0, "reread_per_scope": 0 }, "lines": [ { "about": "person", "agent_id": "00000000-0000-0000-0000-000000000000", "created_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "notes": 0, "updated_at": "2024-08-25T15:00:00Z", "words": "words" } ] }
json
application/json

Create Memory Line

POST
/api/v1/memory/agents/{agent_id}/lines

Tell the agent's memory what to notice: a line in your own words, about every person or about the business. Use when the agent should start paying attention to something it does not already notice. It applies to what is noted from now on; conversations already noted are never gone back over. A line never makes the agent ask anything -- asking belongs in its instructions. Refused, naming the bound, when the agent already follows as many lines as it may, and with 403 for the platform's own agents (the Architect, the Analyst), whose memory is not the client's to steer.

Create Memory Line › path Parameters

agent_id
​string · uuid · required

Create Memory Line › Request Body

A new line: what to notice, in the owner's own words, and whom it is about. It applies to what is noted from then on; conversations already noted are never gone back over (rule 22).
MemoryLineIn
about
​LineAbout · enum · required

Whom a line asks the agent to notice something about (rule 19): the person in each conversation, or the business. It decides where the note is filed under rule 2 -- a line about a person produces notes about that person, one about the business produces business notes.

Enum values:
person
business
words
​string · minLength: 1 · maxLength: 120 · required

Create Memory Line › Responses

Successful Response

One line of an agent's memory, with how many notes it has produced (rule 23). A line belongs to the agent, never to a version (rule 22).
MemoryLineOut
about
​LineAbout · enum · required

Whom a line asks the agent to notice something about (rule 19): the person in each conversation, or the business. It decides where the note is filed under rule 2 -- a line about a person produces notes about that person, one about the business produces business notes.

Enum values:
person
business
agent_id
​string · uuid · required
created_at
​string · date-time · required
id
​string · uuid · required
notes
​integer · required
updated_at
​string · date-time · required
words
​string · required
POST/api/v1/memory/agents/{agent_id}/lines
curl /api/v1/memory/agents/:agent_id/lines \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "about": "person", "words": "words" }'
Example Request Body
{ "about": "person", "words": "words" }
json
Example Responses
{ "about": "person", "agent_id": "00000000-0000-0000-0000-000000000000", "created_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "notes": 0, "updated_at": "2024-08-25T15:00:00Z", "words": "words" }
json
application/json

Delete Memory Line

DELETE
/api/v1/memory/agents/{agent_id}/lines/{line_id}

Remove a line at once. Use when the agent should stop noticing something altogether. None of the notes it produced is deleted -- each keeps the words that produced it. If the Analyst counts the line, its question and answers are deleted with it.

Delete Memory Line › path Parameters

agent_id
​string · uuid · required
line_id
​string · uuid · required

Delete Memory Line › Responses

Successful Response

No data returned
DELETE/api/v1/memory/agents/{agent_id}/lines/{line_id}
curl /api/v1/memory/agents/:agent_id/lines/:line_id \ --request DELETE \ --header 'Authorization: Bearer <token>'
Example Responses
No example specified for this content type

Update Memory Line

PATCH
/api/v1/memory/agents/{agent_id}/lines/{line_id}

Reword a line or move it between every person and the business. Use when an existing line's wording or scope is wrong and should change going forward. It applies to what is noted from then on and goes back over nothing. Refused while the Analyst counts the line: a counted line keeps its words and whom it is about.

Update Memory Line › path Parameters

agent_id
​string · uuid · required
line_id
​string · uuid · required

Update Memory Line › Request Body

What may change on a line: its words and whom it is about. Both are optional and independent. Refused while the Analyst counts the line (rule 24).
MemoryLinePatch
​
​

Update Memory Line › Responses

Successful Response

One line of an agent's memory, with how many notes it has produced (rule 23). A line belongs to the agent, never to a version (rule 22).
MemoryLineOut
about
​LineAbout · enum · required

Whom a line asks the agent to notice something about (rule 19): the person in each conversation, or the business. It decides where the note is filed under rule 2 -- a line about a person produces notes about that person, one about the business produces business notes.

Enum values:
person
business
agent_id
​string · uuid · required
created_at
​string · date-time · required
id
​string · uuid · required
notes
​integer · required
updated_at
​string · date-time · required
words
​string · required
PATCH/api/v1/memory/agents/{agent_id}/lines/{line_id}
curl /api/v1/memory/agents/:agent_id/lines/:line_id \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "about": "person", "words": "string" }'
Example Request Body
{ "about": "person", "words": "string" }
json
Example Responses
{ "about": "person", "agent_id": "00000000-0000-0000-0000-000000000000", "created_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "notes": 0, "updated_at": "2024-08-25T15:00:00Z", "words": "words" }
json
application/json

List Memory People

GET
/api/v1/memory/agents/{agent_id}/people

List everyone this agent has notes about, most recently learned first, each by the number or address their notes are keyed to, with how many notes and how many sensitive numbers were replaced in them. Use when showing who an agent remembers, before opening one person's sheet or forgetting them. Changes nothing. q finds a person by part of their number or address or by a word their notes hold. A person is listed only to someone who may read the conversation one of their notes was learned in, and counts only the notes that reader may read. A person a record of your Databases is tied to by their number is shown with that record's label, if you may read records; memory keeps no name of its own.

List Memory People › path Parameters

agent_id
​string · uuid · required

List Memory People › query Parameters

q
​

Part of a number or address, or a word one of their notes holds.

Part of a number or address, or a word one of their notes holds.

limit
​integer · min: 1 · max: 200
Default: 50
offset
​integer · min: 0
Default: 0

List Memory People › Responses

Successful Response

​MemoryPersonOut[]
One person the agent has notes about, as the list shows them: by the number or address their notes are keyed to, and the label of a record of the client's Databases tied to that number when there is one -- memory itself keeps no name. A person is listed only to a reader who may read at least one of their notes, and counts only the notes that reader may read (rule 31).
MemoryPersonOut
contact_key
​string · required
​required
last_learned_at
​string · date-time · required
notes
​integer · required
redacted
​integer · required
​
GET/api/v1/memory/agents/{agent_id}/people
curl /api/v1/memory/agents/:agent_id/people \ --header 'Authorization: Bearer <token>'
Example Responses
[ { "contact_key": "contact_key", "label": "string", "last_interaction_id": "00000000-0000-0000-0000-000000000000", "last_learned_at": "2024-08-25T15:00:00Z", "notes": 0, "redacted": 0 } ]
json
application/json

Get Memory Person

GET
/api/v1/memory/agents/{agent_id}/people/{contact_key}

Read a person's sheet: every note this agent has about them that you may read, whole, each with the line that produced it and the conversation it was learned in. Use when opening one person's full notes by their contact key. Changes nothing. Not found when none of their notes is one you may read. A person a record of your Databases is tied to by their number is shown with that record's label, if you may read records, as in the list.

Get Memory Person › path Parameters

agent_id
​string · uuid · required
contact_key
​string · required

Get Memory Person › Responses

Successful Response

A person's sheet: every note the reader may read, whole, each with its line, when it was learned and the conversation it was learned in (rule 13).
MemoryPersonNotesOut
contact_key
​string · required
​MemoryOut[] · required
redacted
​integer · required
​
GET/api/v1/memory/agents/{agent_id}/people/{contact_key}
curl /api/v1/memory/agents/:agent_id/people/:contact_key \ --header 'Authorization: Bearer <token>'
Example Responses
{ "contact_key": "contact_key", "label": "string", "notes": [ { "agent_id": "00000000-0000-0000-0000-000000000000", "contact_key": "string", "content": "content", "created_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "interaction_id": "00000000-0000-0000-0000-000000000000", "line_id": "00000000-0000-0000-0000-000000000000", "line_words": "string", "looks_personal": true, "org_id": "00000000-0000-0000-0000-000000000000", "pinned": true, "redacted": 0, "scope": "agent_global", "session_key": "string", "support_count": 0, "updated_at": "2024-08-25T15:00:00Z" } ], "redacted": 0 }
json
application/json

Forget Person

DELETE
/api/v1/memory/agents/{agent_id}/people/{contact_key}

Forget a person: delete every note this agent has about them at once, the ones you may not read included. Use when one agent's notes about a person should be wiped, not every agent's — wipe_contact is the broader act. Their conversations stay, and so do other agents' notes about them; those go with their record. contact_key is the exact stored key. Not found unless one of their notes is one you may read. This cannot be undone.

Forget Person › path Parameters

agent_id
​string · uuid · required
contact_key
​string · required

Forget Person › Responses

Successful Response

No data returned
DELETE/api/v1/memory/agents/{agent_id}/people/{contact_key}
curl /api/v1/memory/agents/:agent_id/people/:contact_key \ --request DELETE \ --header 'Authorization: Bearer <token>'
Example Responses
No example specified for this content type

Get Memory Switch

GET
/api/v1/memory/agents/{agent_id}/switch

Whether one agent remembers: its memory switch, on until somebody turns it off. Use when showing the switch's state before offering to flip it. Changes nothing. This is the agent's own switch; memory also needs the organization to be entitled to it, which a person who can reach this route is.

Get Memory Switch › path Parameters

agent_id
​string · uuid · required

Get Memory Switch › Responses

Successful Response

Whether one agent remembers (memory.md rule 15): the agent's own switch. `on` is the switch alone. Whether the agent *runs* memory also needs the organization's entitlement (rule 16), which this slice cannot ask and a person who may see the switch holds by the same flag that reaches this route.
MemorySwitchOut
agent_id
​string · uuid · required
on
​boolean · required
GET/api/v1/memory/agents/{agent_id}/switch
curl /api/v1/memory/agents/:agent_id/switch \ --header 'Authorization: Bearer <token>'
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "on": true }
json
application/json

Set Memory Switch

PUT
/api/v1/memory/agents/{agent_id}/switch

Turn one agent's memory on or off. Use when memory should start or stop being used by this agent. It takes effect on the agent's next conversation, and turning it off deletes nothing it learned: the facts stay listed and can still be corrected or deleted. What is said while it is off is never learned afterwards. Refused with 403 for the platform's own agents (the Architect, the Analyst), whose memory follows the organization's plan alone.

Set Memory Switch › path Parameters

agent_id
​string · uuid · required

Set Memory Switch › Request Body

Turn an agent's memory on or off. It takes effect on the agent's next conversation and deletes nothing it has already learned.
MemorySwitchIn
on
​boolean · required

Set Memory Switch › Responses

Successful Response

Whether one agent remembers (memory.md rule 15): the agent's own switch. `on` is the switch alone. Whether the agent *runs* memory also needs the organization's entitlement (rule 16), which this slice cannot ask and a person who may see the switch holds by the same flag that reaches this route.
MemorySwitchOut
agent_id
​string · uuid · required
on
​boolean · required
PUT/api/v1/memory/agents/{agent_id}/switch
curl /api/v1/memory/agents/:agent_id/switch \ --request PUT \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "on": true }'
Example Request Body
{ "on": true }
json
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "on": true }
json
application/json

Wipe Contact

DELETE
/api/v1/memory/contacts/{contact_key}

Wipe a caller's per-contact memory (all of the org's agents, or one). Use when a person asks to be forgotten and every note about them should go, not just one agent's sheet.

Wipe Contact › path Parameters

contact_key
​string · required

Wipe Contact › query Parameters

agent_id
​

Wipe Contact › Responses

Successful Response

No data returned
DELETE/api/v1/memory/contacts/{contact_key}
curl /api/v1/memory/contacts/:contact_key \ --request DELETE \ --header 'Authorization: Bearer <token>'
Example Responses
No example specified for this content type

Get Conversation Memory

GET
/api/v1/memory/conversations/{interaction_id}

Read what the agent's memory knew when a conversation started -- the notes reread into it, as they were then -- and what it noted from it, as they are now. Use when explaining why an agent said or noted what it did in one conversation. Changes nothing. Not found unless you may read the conversation. A person's note appears only when you may read the conversation it was learned in.

Get Conversation Memory › path Parameters

interaction_id
​string · uuid · required

Get Conversation Memory › Responses

Successful Response

What an agent's memory knew when a conversation started and what it noted from it (rule 33), to whoever may read the conversation and reaches memory. A person's note appears among them only as rule 31 says. On a conversation still under way, `noted` is what it has noted so far.
ConversationMemoryOut
interaction_id
​string · uuid · required
kept
​boolean · required
​KnewNoteOut[] · required
​MemoryOut[] · required
noted_gone
​integer · required
GET/api/v1/memory/conversations/{interaction_id}
curl /api/v1/memory/conversations/:interaction_id \ --header 'Authorization: Bearer <token>'
Example Responses
{ "interaction_id": "00000000-0000-0000-0000-000000000000", "kept": true, "knew": [ { "content": "content", "line_words": "string", "scope": "agent_global" } ], "noted": [ { "agent_id": "00000000-0000-0000-0000-000000000000", "contact_key": "string", "content": "content", "created_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "interaction_id": "00000000-0000-0000-0000-000000000000", "line_id": "00000000-0000-0000-0000-000000000000", "line_words": "string", "looks_personal": true, "org_id": "00000000-0000-0000-0000-000000000000", "pinned": true, "redacted": 0, "scope": "agent_global", "session_key": "string", "support_count": 0, "updated_at": "2024-08-25T15:00:00Z" } ], "noted_gone": 0 }
json
application/json

Recall Memories

POST
/api/v1/memory/recall

Recall what an agent remembers about a question, from one memory layer. Use when the agent needs to look up a remembered fact before answering, rather than guessing or asking again.

Ask for the layer you want by scope: agent_global for what the agent has learned in general, per_contact with the contact_key for what it knows about one person, per_session with the session_key for a conversation's working notes. Results are ranked by how close they are to query and never reach outside the organization or the layer asked for.

Recall Memories › Request Body

What to recall: one memory layer, of one agent, about one question. `scope` chooses the layer and decides which key you must also send: `agent_global` takes neither key, `per_contact` requires `contact_key` (the person the memories are about), `per_session` requires `session_key`. Sending a key the scope does not take, or omitting one it needs, is refused. `query` is what the layer is searched with — say what you want to know, in words. Leave it empty to get the most recently updated memories instead.
RecallIn
agent_id
​string · uuid · required
scope
​Scope · enum · required

Which layer a memory lives in. The retrieval side pulls the relevant layer(s) into context; the write side must respect the PII boundary.

Enum values:
agent_global
per_contact
per_session
​
limit
​integer · min: 1 · max: 50
Default: 10
query
​string
Default:
​

Recall Memories › Responses

Successful Response

​MemoryOut[]
A stored memory as the management surface sees it. `org_id` is the tenant that owns it — never the person who happened to create it (principle 6). `interaction_id` names the conversation this fact was **first** learned in (`None` for a memory no interaction produced — a seed, a test, an explicit write with none to name); `revise` never moves it, because a correction does not change where a fact was first learned. `support_count` is how many conversations support it — see `service.consolidate`. `pinned` is editable only where the fact is: agent-global, from `PATCH /memory/{id}`. `looks_personal` is `schemas.looks_personal(content)`, computed fresh on every read — a mark, never a gate; see `DECISIONS.md`.
MemoryOut
agent_id
​string · uuid · required
​required
content
​string · required
created_at
​string · date-time · required
id
​string · uuid · required
​required
​required
​required
looks_personal
​boolean · required
org_id
​string · uuid · required
pinned
​boolean · required
redacted
​integer · required
scope
​Scope · enum · required

Which layer a memory lives in. The retrieval side pulls the relevant layer(s) into context; the write side must respect the PII boundary.

Enum values:
agent_global
per_contact
per_session
​required
support_count
​integer · required
updated_at
​string · date-time · required
POST/api/v1/memory/recall
curl /api/v1/memory/recall \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "agent_id": "00000000-0000-0000-0000-000000000000", "contact_key": "string", "limit": 10, "query": "", "scope": "agent_global", "session_key": "string" }'
Example Request Body
{ "agent_id": "00000000-0000-0000-0000-000000000000", "contact_key": "string", "limit": 10, "query": "", "scope": "agent_global", "session_key": "string" }
json
Example Responses
[ { "agent_id": "00000000-0000-0000-0000-000000000000", "contact_key": "string", "content": "content", "created_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "interaction_id": "00000000-0000-0000-0000-000000000000", "line_id": "00000000-0000-0000-0000-000000000000", "line_words": "string", "looks_personal": true, "org_id": "00000000-0000-0000-0000-000000000000", "pinned": true, "redacted": 0, "scope": "agent_global", "session_key": "string", "support_count": 0, "updated_at": "2024-08-25T15:00:00Z" } ]
json
application/json

Get Memory

GET
/api/v1/memory/{memory_id}

Read one note. Use when opening a specific note by id. Changes nothing. A person's note nobody asking may read is not found.

Get Memory › path Parameters

memory_id
​string · uuid · required

Get Memory › Responses

Successful Response

A stored memory as the management surface sees it. `org_id` is the tenant that owns it — never the person who happened to create it (principle 6). `interaction_id` names the conversation this fact was **first** learned in (`None` for a memory no interaction produced — a seed, a test, an explicit write with none to name); `revise` never moves it, because a correction does not change where a fact was first learned. `support_count` is how many conversations support it — see `service.consolidate`. `pinned` is editable only where the fact is: agent-global, from `PATCH /memory/{id}`. `looks_personal` is `schemas.looks_personal(content)`, computed fresh on every read — a mark, never a gate; see `DECISIONS.md`.
MemoryOut
agent_id
​string · uuid · required
​required
content
​string · required
created_at
​string · date-time · required
id
​string · uuid · required
​required
​required
​required
looks_personal
​boolean · required
org_id
​string · uuid · required
pinned
​boolean · required
redacted
​integer · required
scope
​Scope · enum · required

Which layer a memory lives in. The retrieval side pulls the relevant layer(s) into context; the write side must respect the PII boundary.

Enum values:
agent_global
per_contact
per_session
​required
support_count
​integer · required
updated_at
​string · date-time · required
GET/api/v1/memory/{memory_id}
curl /api/v1/memory/:memory_id \ --header 'Authorization: Bearer <token>'
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "contact_key": "string", "content": "content", "created_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "interaction_id": "00000000-0000-0000-0000-000000000000", "line_id": "00000000-0000-0000-0000-000000000000", "line_words": "string", "looks_personal": true, "org_id": "00000000-0000-0000-0000-000000000000", "pinned": true, "redacted": 0, "scope": "agent_global", "session_key": "string", "support_count": 0, "updated_at": "2024-08-25T15:00:00Z" }
json
application/json

Delete Memory

DELETE
/api/v1/memory/{memory_id}

Delete one note, permanently. Use when a note should be forgotten entirely, not just corrected. A person's note nobody asking may read is not found.

Delete Memory › path Parameters

memory_id
​string · uuid · required

Delete Memory › Responses

Successful Response

No data returned
DELETE/api/v1/memory/{memory_id}
curl /api/v1/memory/:memory_id \ --request DELETE \ --header 'Authorization: Bearer <token>'
Example Responses
No example specified for this content type

Patch Memory

PATCH
/api/v1/memory/{memory_id}

Correct the wording of one note, and/or mark a business note to remember always. Use when a stored note is wrong and needs fixing, or a business note should survive forever. A person's note may be corrected, by someone who may read the conversation it was learned in, and is never marked; a per-session note is not edited here. A sixth business note marked is refused, naming the bound.

A correction is what the agent rereads from then on: the note is re-embedded with the same embedder recall uses, so it ranks by its new meaning at once, and any sensitive number in it is replaced. A mark alone never calls the embedder.

Patch Memory › path Parameters

memory_id
​string · uuid · required

Patch Memory › Request Body

A partial edit to one note -- only the fields provided change. `content` is the correction (rule 10): it applies to a business note and to a person's note alike, to a person's only for whoever may read the conversation it was learned in (rule 31). `pinned` is "remember always" (rule 26) and is a business note's alone: a person's note is not marked, and a sixth business note marked is refused naming the bound. Both are optional and independent, so marking needs no reworded content and a correction needs no pin decision. A per-session note is not edited here. Scope is not a field here and cannot be: the note's own scope decides which of the two fields it takes.
MemoryPatch
​
​

Patch Memory › Responses

Successful Response

A stored memory as the management surface sees it. `org_id` is the tenant that owns it — never the person who happened to create it (principle 6). `interaction_id` names the conversation this fact was **first** learned in (`None` for a memory no interaction produced — a seed, a test, an explicit write with none to name); `revise` never moves it, because a correction does not change where a fact was first learned. `support_count` is how many conversations support it — see `service.consolidate`. `pinned` is editable only where the fact is: agent-global, from `PATCH /memory/{id}`. `looks_personal` is `schemas.looks_personal(content)`, computed fresh on every read — a mark, never a gate; see `DECISIONS.md`.
MemoryOut
agent_id
​string · uuid · required
​required
content
​string · required
created_at
​string · date-time · required
id
​string · uuid · required
​required
​required
​required
looks_personal
​boolean · required
org_id
​string · uuid · required
pinned
​boolean · required
redacted
​integer · required
scope
​Scope · enum · required

Which layer a memory lives in. The retrieval side pulls the relevant layer(s) into context; the write side must respect the PII boundary.

Enum values:
agent_global
per_contact
per_session
​required
support_count
​integer · required
updated_at
​string · date-time · required
PATCH/api/v1/memory/{memory_id}
curl /api/v1/memory/:memory_id \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "content": "string", "pinned": true }'
Example Request Body
{ "content": "string", "pinned": true }
json
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "contact_key": "string", "content": "content", "created_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "interaction_id": "00000000-0000-0000-0000-000000000000", "line_id": "00000000-0000-0000-0000-000000000000", "line_words": "string", "looks_personal": true, "org_id": "00000000-0000-0000-0000-000000000000", "pinned": true, "redacted": 0, "scope": "agent_global", "session_key": "string", "support_count": 0, "updated_at": "2024-08-25T15:00:00Z" }
json
application/json

not-a-toolnotifications