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

inbox


Get Inbox Open Count

GET
/api/v1/inbox/open-count

How many open conversations the reader may read -- the number the rail's Everything entry carries, without the rail. Use for a badge. Changes nothing.

Get Inbox Open Count › Responses

200

Successful Response

How many open conversations the reader may read -- the number the rail's Everything entry carries (rule 14), asked alone for a badge that needs no rail (#2069).
OpenCountOut
count
​integer · required
GET/api/v1/inbox/open-count
curl /api/v1/inbox/open-count \ --header 'Authorization: Bearer <token>'
Example Responses
{ "count": 0 }
json
application/json

Set Inbox Preferences

PATCH
/api/v1/inbox/preferences

Change the reader's rail: how it opens, views hidden, order, each entry's layout.

Set Inbox Preferences › Request Body

What changes; anything left out stays. `hidden` is the whole set of shared views hidden from the reader's rail, `hidden_entries` the whole set of predefined views hidden (rule 36), `order` the reader's views in the order they want them — each replaces what was kept. `layouts` is merged into what was kept, entry by entry (rule 37).
PreferencesUpdate
​
​
​
​
​

Set Inbox Preferences › Responses

Successful Response

A person's inbox preferences (rules 15 and 39), kept with their membership. `collapsed` is whether the rail opens collapsed; `hidden_entries` the keys of the predefined views they hid.
PreferencesOut
collapsed
​boolean · required
hidden_entries
​string[] · required
PATCH/api/v1/inbox/preferences
curl /api/v1/inbox/preferences \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "collapsed": true, "hidden": [ "00000000-0000-0000-0000-000000000000" ], "hidden_entries": [ "string" ], "layouts": { "key": "split" }, "order": [ "00000000-0000-0000-0000-000000000000" ] }'
Example Request Body
{ "collapsed": true, "hidden": [ "00000000-0000-0000-0000-000000000000" ], "hidden_entries": [ "string" ], "layouts": { "key": "split" }, "order": [ "00000000-0000-0000-0000-000000000000" ] }
json
Example Responses
{ "collapsed": true, "hidden_entries": [ "string" ] }
json
application/json

Get Inbox Rail

GET
/api/v1/inbox/rail

The reader's rail, in order, each entry with how many open conversations match it -- to_review first, only while the reader may read a thread with a reply an agent prepared for review. time_zone (IANA) bounds a view's period in the reader's days.

Get Inbox Rail › query Parameters

time_zone
​

Get Inbox Rail › Responses

Successful Response

A person's rail (rules 12-16): its entries in order — To review, while it holds a thread the reader may read, then everything, then shared views, then the reader's own, then the channels, then the people with unassigned last — and what the editor needs besides. `shown` is whether the rail holds more than one distinct entry (rule 15); a rail that is not shown is not drawn, collapsed or not. `hidden` are the shared views the reader hid, and `archived` the predefined views they hid (rule 36), to show again. `max_views` is the bound.
RailOut
​RailEntry[] · required
can_share
​boolean · required
​RailEntry[] · required
​ViewOut[] · required
max_views
​integer · required
​PreferencesOut · required

A person's inbox preferences (rules 15 and 39), kept with their membership. collapsed is whether the rail opens collapsed; hidden_entries the keys of the predefined views they hid.

shown
​boolean · required
GET/api/v1/inbox/rail
curl /api/v1/inbox/rail \ --header 'Authorization: Bearer <token>'
Example Responses
{ "archived": [ { "channel": { "key": "key", "kind": "phone", "label": "label", "open": 0, "removed": true }, "filters": { "agentId": "string", "answeredBy": "string", "campaignId": "00000000-0000-0000-0000-000000000000", "channelKey": "string", "counterparty": "string", "direction": "inbound", "endReason": "string", "handedOver": "yes", "holder": "string", "kind": "voice", "label": "string", "maxDuration": 0, "minDuration": 0, "preparedReply": "string", "recordId": "00000000-0000-0000-0000-000000000000", "since": "2024-08-25", "state": "open", "test": "yes", "unanswered": "yes", "unreplied": true, "until": "2024-08-25" }, "key": "key", "kind": "to_review", "layout": "split", "open": 0, "person_id": "00000000-0000-0000-0000-000000000000", "view": { "editable": true, "filters": { "agentId": "string", "answeredBy": "string", "campaignId": "00000000-0000-0000-0000-000000000000", "channelKey": "string", "counterparty": "string", "direction": "inbound", "endReason": "string", "handedOver": "yes", "holder": "string", "kind": "voice", "label": "string", "maxDuration": 0, "minDuration": 0, "preparedReply": "string", "recordId": "00000000-0000-0000-0000-000000000000", "since": "2024-08-25", "state": "open", "test": "yes", "unanswered": "yes", "unreplied": true, "until": "2024-08-25" }, "id": "00000000-0000-0000-0000-000000000000", "mine": true, "name": "name", "shared": true, "show_count": true } } ], "can_share": true, "entries": [ { "channel": { "key": "key", "kind": "phone", "label": "label", "open": 0, "removed": true }, "filters": { "agentId": "string", "answeredBy": "string", "campaignId": "00000000-0000-0000-0000-000000000000", "channelKey": "string", "counterparty": "string", "direction": "inbound", "endReason": "string", "handedOver": "yes", "holder": "string", "kind": "voice", "label": "string", "maxDuration": 0, "minDuration": 0, "preparedReply": "string", "recordId": "00000000-0000-0000-0000-000000000000", "since": "2024-08-25", "state": "open", "test": "yes", "unanswered": "yes", "unreplied": true, "until": "2024-08-25" }, "key": "key", "kind": "to_review", "layout": "split", "open": 0, "person_id": "00000000-0000-0000-0000-000000000000", "view": { "editable": true, "filters": { "agentId": "string", "answeredBy": "string", "campaignId": "00000000-0000-0000-0000-000000000000", "channelKey": "string", "counterparty": "string", "direction": "inbound", "endReason": "string", "handedOver": "yes", "holder": "string", "kind": "voice", "label": "string", "maxDuration": 0, "minDuration": 0, "preparedReply": "string", "recordId": "00000000-0000-0000-0000-000000000000", "since": "2024-08-25", "state": "open", "test": "yes", "unanswered": "yes", "unreplied": true, "until": "2024-08-25" }, "id": "00000000-0000-0000-0000-000000000000", "mine": true, "name": "name", "shared": true, "show_count": true } } ], "hidden": [ { "editable": true, "filters": { "agentId": "string", "answeredBy": "string", "campaignId": "00000000-0000-0000-0000-000000000000", "channelKey": "string", "counterparty": "string", "direction": "inbound", "endReason": "string", "handedOver": "yes", "holder": "string", "kind": "voice", "label": "string", "maxDuration": 0, "minDuration": 0, "preparedReply": "string", "recordId": "00000000-0000-0000-0000-000000000000", "since": "2024-08-25", "state": "open", "test": "yes", "unanswered": "yes", "unreplied": true, "until": "2024-08-25" }, "id": "00000000-0000-0000-0000-000000000000", "mine": true, "name": "name", "shared": true, "show_count": true } ], "max_views": 0, "preferences": { "collapsed": true, "hidden_entries": [ "string" ] }, "shown": true }
json
application/json

Create Inbox View

POST
/api/v1/inbox/views

Save the filters in force as a view in the reader's rail.

Create Inbox View › Request Body

A view to save: a name and the filters in force (rule 9). `shared` is an owner's or admin's to set (rule 10); `show_count` off saves it without a count (rule 14).
ViewIn
​ViewFilters · required

The inbox's filters (inbox.md rule 17), by the names its address gives them. A name the inbox does not recognise is refused, never dropped (extra="forbid"); every one is optional, and an unset one is absent.

The values are the address's: holder, channelKey, agentId, endReason, counterparty, answeredBy, label and preparedReply hold several values joined by commas; since/until are calendar days in the reader's own zone; the either-way filters are yes or no; unreplied is on or absent. An answer sends an unset filter as null, which the address reads as absent; what is stored leaves it out.

name
​string · minLength: 1 · maxLength: 80 · required
shared
​boolean
Default: false
show_count
​boolean
Default: true

Create Inbox View › Responses

Successful Response

One saved view as its reader sees it. `mine` is whether the reader made it; `editable` whether the reader may rename it, change its filters or delete it — the maker for one not shared, an owner or admin for a shared one (rule 10).
ViewOut
editable
​boolean · required
​ViewFilters · required

The inbox's filters (inbox.md rule 17), by the names its address gives them. A name the inbox does not recognise is refused, never dropped (extra="forbid"); every one is optional, and an unset one is absent.

The values are the address's: holder, channelKey, agentId, endReason, counterparty, answeredBy, label and preparedReply hold several values joined by commas; since/until are calendar days in the reader's own zone; the either-way filters are yes or no; unreplied is on or absent. An answer sends an unset filter as null, which the address reads as absent; what is stored leaves it out.

id
​string · uuid · required
mine
​boolean · required
name
​string · required
shared
​boolean · required
show_count
​boolean · required
POST/api/v1/inbox/views
curl /api/v1/inbox/views \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "filters": { "agentId": "string", "answeredBy": "string", "campaignId": "00000000-0000-0000-0000-000000000000", "channelKey": "string", "counterparty": "string", "direction": "inbound", "endReason": "string", "handedOver": "yes", "holder": "string", "kind": "voice", "label": "string", "maxDuration": 0, "minDuration": 0, "preparedReply": "string", "recordId": "00000000-0000-0000-0000-000000000000", "since": "2024-08-25", "state": "open", "test": "yes", "unanswered": "yes", "unreplied": true, "until": "2024-08-25" }, "name": "name", "shared": false, "show_count": true }'
Example Request Body
{ "filters": { "agentId": "string", "answeredBy": "string", "campaignId": "00000000-0000-0000-0000-000000000000", "channelKey": "string", "counterparty": "string", "direction": "inbound", "endReason": "string", "handedOver": "yes", "holder": "string", "kind": "voice", "label": "string", "maxDuration": 0, "minDuration": 0, "preparedReply": "string", "recordId": "00000000-0000-0000-0000-000000000000", "since": "2024-08-25", "state": "open", "test": "yes", "unanswered": "yes", "unreplied": true, "until": "2024-08-25" }, "name": "name", "shared": false, "show_count": true }
json
Example Responses
{ "editable": true, "filters": { "agentId": "string", "answeredBy": "string", "campaignId": "00000000-0000-0000-0000-000000000000", "channelKey": "string", "counterparty": "string", "direction": "inbound", "endReason": "string", "handedOver": "yes", "holder": "string", "kind": "voice", "label": "string", "maxDuration": 0, "minDuration": 0, "preparedReply": "string", "recordId": "00000000-0000-0000-0000-000000000000", "since": "2024-08-25", "state": "open", "test": "yes", "unanswered": "yes", "unreplied": true, "until": "2024-08-25" }, "id": "00000000-0000-0000-0000-000000000000", "mine": true, "name": "name", "shared": true, "show_count": true }
json
application/json

Delete Inbox View

DELETE
/api/v1/inbox/views/{view_id}

Delete a view; a shared one leaves every rail.

Delete Inbox View › path Parameters

view_id
​string · uuid · required

Delete Inbox View › Responses

Successful Response

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

Update Inbox View

PATCH
/api/v1/inbox/views/{view_id}

Rename a view, save filters over it, share or unshare it, or switch its count.

Update Inbox View › path Parameters

view_id
​string · uuid · required

Update Inbox View › Request Body

What changes on a view; anything left out stays. Saving over a view is `filters` (rule 9); renaming is `name`.
InboxViewUpdate
​
​
​
​

Update Inbox View › Responses

Successful Response

One saved view as its reader sees it. `mine` is whether the reader made it; `editable` whether the reader may rename it, change its filters or delete it — the maker for one not shared, an owner or admin for a shared one (rule 10).
ViewOut
editable
​boolean · required
​ViewFilters · required

The inbox's filters (inbox.md rule 17), by the names its address gives them. A name the inbox does not recognise is refused, never dropped (extra="forbid"); every one is optional, and an unset one is absent.

The values are the address's: holder, channelKey, agentId, endReason, counterparty, answeredBy, label and preparedReply hold several values joined by commas; since/until are calendar days in the reader's own zone; the either-way filters are yes or no; unreplied is on or absent. An answer sends an unset filter as null, which the address reads as absent; what is stored leaves it out.

id
​string · uuid · required
mine
​boolean · required
name
​string · required
shared
​boolean · required
show_count
​boolean · required
PATCH/api/v1/inbox/views/{view_id}
curl /api/v1/inbox/views/:view_id \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "filters": { "agentId": "string", "answeredBy": "string", "campaignId": "00000000-0000-0000-0000-000000000000", "channelKey": "string", "counterparty": "string", "direction": "inbound", "endReason": "string", "handedOver": "yes", "holder": "string", "kind": "voice", "label": "string", "maxDuration": 0, "minDuration": 0, "preparedReply": "string", "recordId": "00000000-0000-0000-0000-000000000000", "since": "2024-08-25", "state": "open", "test": "yes", "unanswered": "yes", "unreplied": true, "until": "2024-08-25" }, "name": "string", "shared": true, "show_count": true }'
Example Request Body
{ "filters": { "agentId": "string", "answeredBy": "string", "campaignId": "00000000-0000-0000-0000-000000000000", "channelKey": "string", "counterparty": "string", "direction": "inbound", "endReason": "string", "handedOver": "yes", "holder": "string", "kind": "voice", "label": "string", "maxDuration": 0, "minDuration": 0, "preparedReply": "string", "recordId": "00000000-0000-0000-0000-000000000000", "since": "2024-08-25", "state": "open", "test": "yes", "unanswered": "yes", "unreplied": true, "until": "2024-08-25" }, "name": "string", "shared": true, "show_count": true }
json
Example Responses
{ "editable": true, "filters": { "agentId": "string", "answeredBy": "string", "campaignId": "00000000-0000-0000-0000-000000000000", "channelKey": "string", "counterparty": "string", "direction": "inbound", "endReason": "string", "handedOver": "yes", "holder": "string", "kind": "voice", "label": "string", "maxDuration": 0, "minDuration": 0, "preparedReply": "string", "recordId": "00000000-0000-0000-0000-000000000000", "since": "2024-08-25", "state": "open", "test": "yes", "unanswered": "yes", "unreplied": true, "until": "2024-08-25" }, "id": "00000000-0000-0000-0000-000000000000", "mine": true, "name": "name", "shared": true, "show_count": true }
json
application/json

dynamic_contexthandoff