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

analyst


List Agent Findings

GET
/api/v1/analyst/agents/{agent_id}/findings

List the agent's open findings, at most five: each one sentence, how many conversations it rests on, the ones you may read with two moments as its proof, and its one action -- offered only if you could do it yourself. Use when showing what the Analyst has flagged about this agent and what can be done about each one. Changes nothing.

List Agent Findings › path Parameters

agent_id
​string · uuid · required

List Agent Findings › Responses

Successful Response

An agent's open findings (rules 29-32): nothing closed, expired or dismissed is listed anywhere.
FindingsOut
agent_id
​string · uuid · required
free
​integer · required
looking
​boolean · required
​FindingOut[] · required
ready
​boolean · required
​required
GET/api/v1/analyst/agents/{agent_id}/findings
curl /api/v1/analyst/agents/:agent_id/findings \ --header 'Authorization: Bearer <token>'
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "free": 0, "looking": true, "open": [ { "action": { "kind": "call_back", "offered": true, "people": 0, "proposed_answer": "string", "question": "string", "refusal": "outbound_calls_flag", "topic": "string" }, "agent_id": "00000000-0000-0000-0000-000000000000", "conversations": 0, "expires_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "kind": "new", "listed": [ "00000000-0000-0000-0000-000000000000" ], "moments": [ { "interaction_id": "00000000-0000-0000-0000-000000000000", "lines": [ { "at": "2024-08-25T15:00:00Z", "seq": 0, "speaker": "speaker", "text": "text" } ] } ], "raised_at": "2024-08-25T15:00:00Z", "sentence": "sentence" } ], "ready": true, "ready_at": "2024-08-25T15:00:00Z" }
json
application/json

Call Back Finding

POST
/api/v1/analyst/agents/{agent_id}/findings/{finding_id}/call-back

Call back the people a finding rests on: a campaign of this agent, started now, holding the numbers of the conversations you may read whose numbers are still kept, with the retry policy you write. Use when a finding's offered action is to call the affected people back. The finding closes; refused or failed, it stays open and says why.

Call Back Finding › path Parameters

agent_id
​string · uuid · required
finding_id
​string · uuid · required

Call Back Finding › Request Body

The yes to calling the people back, with the retry policy a person must write (outbound-calls.md rule 7).
CallBackIn
max_attempts
​integer · min: 1 · required
retry_delay_minutes
​integer · min: 1 · required
​

Call Back Finding › Responses

Successful Response

CallBackOut
campaign_id
​string · uuid · required
people
​integer · required
POST/api/v1/analyst/agents/{agent_id}/findings/{finding_id}/call-back
curl /api/v1/analyst/agents/:agent_id/findings/:finding_id/call-back \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "max_attempts": 1, "retry_delay_minutes": 1, "trunk_id": "00000000-0000-0000-0000-000000000000" }'
Example Request Body
{ "max_attempts": 1, "retry_delay_minutes": 1, "trunk_id": "00000000-0000-0000-0000-000000000000" }
json
Example Responses
{ "campaign_id": "00000000-0000-0000-0000-000000000000", "people": 0 }
json
application/json

Dismiss Finding

POST
/api/v1/analyst/agents/{agent_id}/findings/{finding_id}/dismissal

Dismiss a finding: it frees its slot and is never raised again. Use when a finding does not deserve any of its offered actions and should stop taking up one of the agent's five slots. Undo it by deleting the dismissal.

Dismiss Finding › path Parameters

agent_id
​string · uuid · required
finding_id
​string · uuid · required

Dismiss Finding › Responses

Successful Response

No data returned
POST/api/v1/analyst/agents/{agent_id}/findings/{finding_id}/dismissal
curl /api/v1/analyst/agents/:agent_id/findings/:finding_id/dismissal \ --request POST \ --header 'Authorization: Bearer <token>'
Example Responses
No example specified for this content type

Undo Finding Dismissal

DELETE
/api/v1/analyst/agents/{agent_id}/findings/{finding_id}/dismissal

Undo a dismissal: the finding is open again until it expires as it would have. Use when a finding was dismissed by mistake. Refused while all five slots are taken.

Undo Finding Dismissal › path Parameters

agent_id
​string · uuid · required
finding_id
​string · uuid · required

Undo Finding Dismissal › Responses

Successful Response

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

Teach Finding

POST
/api/v1/analyst/agents/{agent_id}/findings/{finding_id}/teaching

Teach the agent the answer a finding says it lacked: hands the finding and the answer to the Architect in a new conversation with it, where the change is shown to you before it is published. Use when a finding's offered action is to teach the agent, and you have the answer it was missing. The finding closes.

Teach Finding › path Parameters

agent_id
​string · uuid · required
finding_id
​string · uuid · required

Teach Finding › Request Body

The yes to teaching the agent, with the answer as the person left it.
TeachIn
​

Teach Finding › Responses

Successful Response

TeachOut
interaction_id
​string · uuid · required
POST/api/v1/analyst/agents/{agent_id}/findings/{finding_id}/teaching
curl /api/v1/analyst/agents/:agent_id/findings/:finding_id/teaching \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "answer": "string" }'
Example Request Body
{ "answer": "string" }
json
Example Responses
{ "interaction_id": "00000000-0000-0000-0000-000000000000" }
json
application/json

Watch Finding

POST
/api/v1/analyst/agents/{agent_id}/findings/{finding_id}/watch

Keep watch on a finding: starts a tracked question from the finding's question, offering the conversations the finding rests on that you may read for a verdict. Use when a finding's offered action is to keep watching for it going forward, as a tracked question. Carry it on with the question's proposal and confirmation; confirming it closes the finding. Refused, naming the bound, when the agent already has as many tracked questions as it may.

Watch Finding › path Parameters

agent_id
​string · uuid · required
finding_id
​string · uuid · required

Watch Finding › Responses

Successful Response

What the search of the recent past found (rules 36, 37).
QuestionSearchOut
found
​integer · required
id
​string · uuid · required
​QuestionMatch[] · required
sentence
​string · required
verdicts_asked
​integer · required
​
POST/api/v1/analyst/agents/{agent_id}/findings/{finding_id}/watch
curl /api/v1/analyst/agents/:agent_id/findings/:finding_id/watch \ --request POST \ --header 'Authorization: Bearer <token>'
Example Responses
{ "finding_id": "00000000-0000-0000-0000-000000000000", "found": 0, "id": "00000000-0000-0000-0000-000000000000", "offered": [ { "conversation_ended_at": "2024-08-25T15:00:00Z", "interaction_id": "00000000-0000-0000-0000-000000000000", "moments": [ { "lines": [ { "at": "2024-08-25T15:00:00Z", "seq": 0, "speaker": "speaker", "text": "text" } ] } ], "topic": "string" } ], "sentence": "sentence", "verdicts_asked": 0 }
json
application/json

List Question Charts

GET
/api/v1/analyst/agents/{agent_id}/question-charts

Draw each tracked question of this agent as the one chart its kind gives. Use when showing how a tracked question's answers moved over time. Changes nothing.

A yes-or-no question as the share of conversations saying yes in each of the last weeks weeks, a closed-set question as its answers ranked over the last four weeks, a number question as its average in each week still kept. Weeks are the reader's, in their own timezone. Every conversation is counted, whoever may open it, and each chart says how many it comes from; an agent never read answers with empty series.

List Question Charts › path Parameters

agent_id
​string · uuid · required

List Question Charts › query Parameters

weeks
​integer · min: 1 · max: 52

Weeks a chart over time shows.

Weeks a chart over time shows.

Default: 8

List Question Charts › Responses

Successful Response

​QuestionChartOut[]
A tracked question drawn as the one chart its kind gives (rule 42): never configured, and made from the same values `analytics` charts (rule 43). `weeks` is the series of a yes-or-no or a number question, oldest first and the last being this week; `ranking` is a closed set's, most given first. Each holds nothing while no conversation answered the question in the period -- which is every question of an agent never read -- and `conversations` says so. Every conversation counts, whoever may open it (interactions.md rule 51).
QuestionChartOut
agent_id
​string · uuid · required
conversations
​integer · required
kind
​QuestionKind · enum · required

The kind of answer a question takes (rule 35), which is also what its chart is (rule 42): nobody configures one.

Enum values:
yes_no
closed_set
number
​required
question_id
​string · uuid · required
​ChartOption[] · required
short_name
​string · required
since
​string · date-time · required
state
​QuestionState · enum · required
Enum values:
active
paused
timezone
​string · required
until
​string · date-time · required
​ChartWeek[] · required
GET/api/v1/analyst/agents/{agent_id}/question-charts
curl /api/v1/analyst/agents/:agent_id/question-charts \ --header 'Authorization: Bearer <token>'
Example Responses
[ { "agent_id": "00000000-0000-0000-0000-000000000000", "conversations": 0, "kind": "yes_no", "not_answered": "paused", "question_id": "00000000-0000-0000-0000-000000000000", "ranking": [ { "count": 0, "option": "option" } ], "short_name": "short_name", "since": "2024-08-25T15:00:00Z", "state": "active", "timezone": "timezone", "until": "2024-08-25T15:00:00Z", "weeks": [ { "answered": 0, "value": "string", "week": "2024-08-25T15:00:00Z", "yes": 0 } ] } ]
json
application/json

List Tracked Questions

GET
/api/v1/analyst/agents/{agent_id}/questions

List the questions the Analyst answers about every conversation of this agent, active and paused, each saying whether it is answered now and why not. Use when showing the agent's tracked questions, or checking what already exists before starting a new one. Changes nothing.

List Tracked Questions › path Parameters

agent_id
​string · uuid · required

List Tracked Questions › Responses

Successful Response

​TrackedQuestionOut[]
TrackedQuestionOut
agent_id
​string · uuid · required
answering_since
​string · date-time · required
created_at
​string · date-time · required
id
​string · uuid · required
kind
​QuestionKind · enum · required

The kind of answer a question takes (rule 35), which is also what its chart is (rule 42): nobody configures one.

Enum values:
yes_no
closed_set
number
meaning
​string · required
​required
options
​string[] · required
question
​string · required
short_name
​string · required
state
​QuestionState · enum · required
Enum values:
active
paused
GET/api/v1/analyst/agents/{agent_id}/questions
curl /api/v1/analyst/agents/:agent_id/questions \ --header 'Authorization: Bearer <token>'
Example Responses
[ { "agent_id": "00000000-0000-0000-0000-000000000000", "answering_since": "2024-08-25T15:00:00Z", "created_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "kind": "yes_no", "meaning": "meaning", "not_answered": "paused", "options": [ "string" ], "question": "question", "short_name": "short_name", "state": "active" } ]
json
application/json

Create Tracked Question

POST
/api/v1/analyst/agents/{agent_id}/questions

Confirm a proposed question, with its kind and short name as you leave them. Use as the last step after search_for_tracked_question and propose_tracked_question, once the proposal reads right. It keeps the words the search was made from, and is answered for every conversation that ends from now on; a yes-or-no question also keeps your verdicts as its first answers. Refused when the agent reached its bound of questions or reading was turned off since the search.

Create Tracked Question › path Parameters

agent_id
​string · uuid · required

Create Tracked Question › Request Body

The owner's confirmation of a proposal: the kind and short name, changed or not (rule 36). The meaning is the proposal's and is not sent.
TrackedQuestionIn
kind
​QuestionKind · enum · required

The kind of answer a question takes (rule 35), which is also what its chart is (rule 42): nobody configures one.

Enum values:
yes_no
closed_set
number
search_id
​string · uuid · required
short_name
​string · minLength: 1 · maxLength: 40 · required
options
​string[]

Create Tracked Question › Responses

Successful Response

TrackedQuestionOut
agent_id
​string · uuid · required
answering_since
​string · date-time · required
created_at
​string · date-time · required
id
​string · uuid · required
kind
​QuestionKind · enum · required

The kind of answer a question takes (rule 35), which is also what its chart is (rule 42): nobody configures one.

Enum values:
yes_no
closed_set
number
meaning
​string · required
​required
options
​string[] · required
question
​string · required
short_name
​string · required
state
​QuestionState · enum · required
Enum values:
active
paused
POST/api/v1/analyst/agents/{agent_id}/questions
curl /api/v1/analyst/agents/:agent_id/questions \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "kind": "yes_no", "options": [ "string" ], "search_id": "00000000-0000-0000-0000-000000000000", "short_name": "short_name" }'
Example Request Body
{ "kind": "yes_no", "options": [ "string" ], "search_id": "00000000-0000-0000-0000-000000000000", "short_name": "short_name" }
json
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "answering_since": "2024-08-25T15:00:00Z", "created_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "kind": "yes_no", "meaning": "meaning", "not_answered": "paused", "options": [ "string" ], "question": "question", "short_name": "short_name", "state": "active" }
json
application/json

Get Question Search Cost

GET
/api/v1/analyst/agents/{agent_id}/questions/search-cost

Say what counting a new question will cost before it starts: how many of the agent's readings from the last 30 days the search would read, and an estimate of what reading them costs -- the amount only to a person who may see consumption; anyone else is told it is charged by what the Analyst's model reads and writes. Use before starting a search, to warn what it will cost. Changes nothing.

Get Question Search Cost › path Parameters

agent_id
​string · uuid · required

Get Question Search Cost › Responses

Successful Response

What searching the recent past for a new question will cost, said before it starts (rules 15, 37): how many readings it will read, and an estimate of the cost. `amount` is `None` for a person who may not see consumption, who is told that the Analyst is charged by what its model reads and writes, and no amount.
SearchCostOut
​required
days
​integer · required
readings
​integer · required
GET/api/v1/analyst/agents/{agent_id}/questions/search-cost
curl /api/v1/analyst/agents/:agent_id/questions/search-cost \ --header 'Authorization: Bearer <token>'
Example Responses
{ "amount": "string", "days": 0, "readings": 0 }
json
application/json

Search For Tracked Question

POST
/api/v1/analyst/agents/{agent_id}/questions/searches

Start counting a question you write in your own words, at most 120 characters: look through what the Analyst read of this agent's conversations over the last 30 days for those that may be about it, and offer those you may read for a verdict. Use when adding a tracked question to the agent — the first step, before proposing and confirming it. Refused, saying why, when the agent already has 10 questions, active and paused, or reading is off.

Charged as the Analyst's work for this agent; not started at a zero balance.

Search For Tracked Question › path Parameters

agent_id
​string · uuid · required

Search For Tracked Question › Request Body

What to count (rules 35-36): the owner's question, in their own words, written in the agent's results section. Trimmed; empty or past `MAX_QUESTION_LENGTH` characters is refused.
QuestionSearchIn
sentence
​string · minLength: 1 · maxLength: 120 · required

Search For Tracked Question › Responses

Successful Response

What the search of the recent past found (rules 36, 37).
QuestionSearchOut
found
​integer · required
id
​string · uuid · required
​QuestionMatch[] · required
sentence
​string · required
verdicts_asked
​integer · required
​
POST/api/v1/analyst/agents/{agent_id}/questions/searches
curl /api/v1/analyst/agents/:agent_id/questions/searches \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "sentence": "sentence" }'
Example Request Body
{ "sentence": "sentence" }
json
Example Responses
{ "finding_id": "00000000-0000-0000-0000-000000000000", "found": 0, "id": "00000000-0000-0000-0000-000000000000", "offered": [ { "conversation_ended_at": "2024-08-25T15:00:00Z", "interaction_id": "00000000-0000-0000-0000-000000000000", "moments": [ { "lines": [ { "at": "2024-08-25T15:00:00Z", "seq": 0, "speaker": "speaker", "text": "text" } ] } ], "topic": "string" } ], "sentence": "sentence", "verdicts_asked": 0 }
json
application/json

Propose Tracked Question

POST
/api/v1/analyst/agents/{agent_id}/questions/searches/{search_id}/proposal

Say of the offered conversations whether each is about the question, and get the Analyst's proposed kind, short name and meaning. Use after search_for_tracked_question, before confirming with create_tracked_question. At least 3 verdicts are asked, unless fewer than 3 conversations were offered; then send none, and it proposes from the sentence alone. Refused, saying why and before anything is charged, when the agent reached its bound of questions or reading was turned off since the search.

Propose Tracked Question › path Parameters

agent_id
​string · uuid · required
search_id
​string · uuid · required

Propose Tracked Question › Request Body

VerdictsIn
​Verdict[] · maxItems: 50

Propose Tracked Question › Responses

Successful Response

QuestionProposalOut
from_verdicts
​boolean · required
kind
​QuestionKind · enum · required

The kind of answer a question takes (rule 35), which is also what its chart is (rule 42): nobody configures one.

Enum values:
yes_no
closed_set
number
meaning
​string · required
search_id
​string · uuid · required
short_name
​string · required
options
​string[]
POST/api/v1/analyst/agents/{agent_id}/questions/searches/{search_id}/proposal
curl /api/v1/analyst/agents/:agent_id/questions/searches/:search_id/proposal \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "verdicts": [ { "about": true, "interaction_id": "00000000-0000-0000-0000-000000000000" } ] }'
Example Request Body
{ "verdicts": [ { "about": true, "interaction_id": "00000000-0000-0000-0000-000000000000" } ] }
json
Example Responses
{ "from_verdicts": true, "kind": "yes_no", "meaning": "meaning", "options": [ "string" ], "search_id": "00000000-0000-0000-0000-000000000000", "short_name": "short_name" }
json
application/json

Delete Tracked Question

DELETE
/api/v1/analyst/agents/{agent_id}/questions/{question_id}

Delete a tracked question and every answer it holds. Use when the question should stop existing, not merely stop running — there is no undo.

Delete Tracked Question › path Parameters

agent_id
​string · uuid · required
question_id
​string · uuid · required

Delete Tracked Question › Responses

Successful Response

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

Update Tracked Question

PATCH
/api/v1/analyst/agents/{agent_id}/questions/{question_id}

Rename a tracked question, pause it or resume it. Use when a question needs a clearer name, or should stop or restart being answered. Its meaning, kind and closed set never change: a different question is a new one.

Update Tracked Question › path Parameters

agent_id
​string · uuid · required
question_id
​string · uuid · required

Update Tracked Question › Request Body

What may change once a question is confirmed: its short name, and whether it is paused (rules 39, 40). Meaning, kind and set are refused as unknown.
TrackedQuestionUpdate
​
​

Update Tracked Question › Responses

Successful Response

TrackedQuestionOut
agent_id
​string · uuid · required
answering_since
​string · date-time · required
created_at
​string · date-time · required
id
​string · uuid · required
kind
​QuestionKind · enum · required

The kind of answer a question takes (rule 35), which is also what its chart is (rule 42): nobody configures one.

Enum values:
yes_no
closed_set
number
meaning
​string · required
​required
options
​string[] · required
question
​string · required
short_name
​string · required
state
​QuestionState · enum · required
Enum values:
active
paused
PATCH/api/v1/analyst/agents/{agent_id}/questions/{question_id}
curl /api/v1/analyst/agents/:agent_id/questions/:question_id \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "paused": true, "short_name": "string" }'
Example Request Body
{ "paused": true, "short_name": "string" }
json
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "answering_since": "2024-08-25T15:00:00Z", "created_at": "2024-08-25T15:00:00Z", "id": "00000000-0000-0000-0000-000000000000", "kind": "yes_no", "meaning": "meaning", "not_answered": "paused", "options": [ "string" ], "question": "question", "short_name": "short_name", "state": "active" }
json
application/json

Get Reading Switch

GET
/api/v1/analyst/agents/{agent_id}/reading

Read whether the Analyst reads this agent's conversations. Use when showing the switch's current state before offering to flip it, or checking why it is refused.

Says why it cannot be turned on when it cannot, and what the Analyst's work for this agent cost over the last 30 days -- the amount only to a person who may see consumption.

Get Reading Switch › path Parameters

agent_id
​string · uuid · required

Get Reading Switch › Responses

Successful Response

An agent's reading switch, where it is moved (rules 10-15).
ReadingSwitchOut
agent_id
​string · uuid · required
​required
​AnalystCostOut · required

What the Analyst's work for this agent cost since since (rule 15).

amount is None for a person who may not see consumption: they are told the Analyst is charged by what its model reads and writes, and no amount -- not even zero, which would be one. There is deliberately no price per conversation here: none is fixed.

on
​boolean · required
reading
​boolean · required
GET/api/v1/analyst/agents/{agent_id}/reading
curl /api/v1/analyst/agents/:agent_id/reading \ --header 'Authorization: Bearer <token>'
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "cannot_turn_on": "retention_zero", "cost": { "amount": "string", "since": "2024-08-25T15:00:00Z" }, "on": true, "reading": true }
json
application/json

Set Reading Switch

PUT
/api/v1/analyst/agents/{agent_id}/reading

Turn the Analyst's reading of this agent's conversations on or off. Use when the organization decides the Analyst should start or stop watching this agent's conversations.

Takes effect at once; publishing or restoring a version never moves it. Turning it on is refused, saying why, where the organization keeps no conversation (a retention window of zero).

Set Reading Switch › path Parameters

agent_id
​string · uuid · required

Set Reading Switch › Request Body

ReadingSwitchIn
on
​boolean · required

Set Reading Switch › Responses

Successful Response

An agent's reading switch, where it is moved (rules 10-15).
ReadingSwitchOut
agent_id
​string · uuid · required
​required
​AnalystCostOut · required

What the Analyst's work for this agent cost since since (rule 15).

amount is None for a person who may not see consumption: they are told the Analyst is charged by what its model reads and writes, and no amount -- not even zero, which would be one. There is deliberately no price per conversation here: none is fixed.

on
​boolean · required
reading
​boolean · required
PUT/api/v1/analyst/agents/{agent_id}/reading
curl /api/v1/analyst/agents/:agent_id/reading \ --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", "cannot_turn_on": "retention_zero", "cost": { "amount": "string", "since": "2024-08-25T15:00:00Z" }, "on": true, "reading": true }
json
application/json

Get Agent Summary

GET
/api/v1/analyst/agents/{agent_id}/summary

Read the agent's summary: one or two sentences, in its own voice, about its outcomes on the organization's day -- or its week so far on a quiet day -- beside how many findings are open. Use when showing the agent's own take on how things are going right now. Nothing until the agent has a full week of readings; ready_at says when.

Get Agent Summary › path Parameters

agent_id
​string · uuid · required

Get Agent Summary › Responses

Successful Response

The agent's summary (rules 20-23), beside how many findings are open.
SummaryOut
agent_id
​string · uuid · required
​required
​required
open_findings
​integer · required
ready
​boolean · required
​required
​required
​required
​required
GET/api/v1/analyst/agents/{agent_id}/summary
curl /api/v1/analyst/agents/:agent_id/summary \ --header 'Authorization: Bearer <token>'
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "conversations": 0, "day": "2024-08-25", "open_findings": 0, "ready": true, "ready_at": "2024-08-25T15:00:00Z", "scope": "day", "text": "string", "written_at": "2024-08-25T15:00:00Z" }
json
application/json

ai_profilesanalytics