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

authentication


List Invitations

GET
/api/v1/auth/invitations

List the organization's invitations still waiting to be answered, expired ones included. Use when showing pending invites, before resending or revoking one. Changes nothing.

List Invitations › Responses

200

Successful Response

​InvitationOut[]
One invitation still waiting, as its organization (or staff, for a first owner) sees it (rule 37). It reads the same whether or not the address has an account (rule 41): no name, nothing about the person behind the address.
InvitationOut
email
​string · email · required
expired
​boolean · required
expires_at
​string · date-time · required
flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
id
​string · uuid · required
​required
org_id
​string · uuid · required
role
​Role · enum · required

A person's role inside one organization. Per-membership, not per-person.

Enum values:
owner
admin
member
sent_at
​string · date-time · required
​
GET/api/v1/auth/invitations
curl /api/v1/auth/invitations \ --header 'Authorization: Bearer <token>'
Example Responses
[ { "created_by_impersonation_id": "00000000-0000-0000-0000-000000000000", "email": "test@example.com", "expired": true, "expires_at": "2024-08-25T15:00:00Z", "flags": [ "voice_agents" ], "id": "00000000-0000-0000-0000-000000000000", "invited_by_name": "string", "org_id": "00000000-0000-0000-0000-000000000000", "role": "owner", "sent_at": "2024-08-25T15:00:00Z" } ]
json
application/json

Invite Member

POST
/api/v1/auth/invitations

Invite a person by email address to join the organization with a role and feature flags, and mail them the link. Use when adding a new member to the organization — there is no direct way to add one.

They join only by accepting it. The flags may not exceed what the caller holds, only an owner invites an owner, and an address already a member is refused. Inviting an address with an invitation still waiting replaces it.

Invite Member › Request Body

`POST /auth/invitations`: invite an address into the acting organization (accounts.md rules 35-37). Nobody's password is set here and nobody joins until the invitation is accepted.
InvitationCreate
email
​string · email · required
​
role
​Role · enum

A person's role inside one organization. Per-membership, not per-person.

Enum values:
owner
admin
member
Default: member

Invite Member › Responses

Successful Response

One invitation still waiting, as its organization (or staff, for a first owner) sees it (rule 37). It reads the same whether or not the address has an account (rule 41): no name, nothing about the person behind the address.
InvitationOut
email
​string · email · required
expired
​boolean · required
expires_at
​string · date-time · required
flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
id
​string · uuid · required
​required
org_id
​string · uuid · required
role
​Role · enum · required

A person's role inside one organization. Per-membership, not per-person.

Enum values:
owner
admin
member
sent_at
​string · date-time · required
​
POST/api/v1/auth/invitations
curl /api/v1/auth/invitations \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "email": "test@example.com", "flags": [ "voice_agents" ], "role": "member" }'
Example Request Body
{ "email": "test@example.com", "flags": [ "voice_agents" ], "role": "member" }
json
Example Responses
{ "created_by_impersonation_id": "00000000-0000-0000-0000-000000000000", "email": "test@example.com", "expired": true, "expires_at": "2024-08-25T15:00:00Z", "flags": [ "voice_agents" ], "id": "00000000-0000-0000-0000-000000000000", "invited_by_name": "string", "org_id": "00000000-0000-0000-0000-000000000000", "role": "owner", "sent_at": "2024-08-25T15:00:00Z" }
json
application/json

Revoke Invitation

DELETE
/api/v1/auth/invitations/{invitation_id}

Revoke a waiting invitation: its link stops working. Use when an invite was sent by mistake or should no longer be answerable.

Revoke Invitation › path Parameters

invitation_id
​string · uuid · required

Revoke Invitation › Responses

Successful Response

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

Resend Invitation

POST
/api/v1/auth/invitations/{invitation_id}/resend

Send a waiting invitation again, as yours: a new link for seven more days, and the earlier link stops working. Use when an invited person never received or lost the original link.

Resend Invitation › path Parameters

invitation_id
​string · uuid · required

Resend Invitation › Responses

Successful Response

One invitation still waiting, as its organization (or staff, for a first owner) sees it (rule 37). It reads the same whether or not the address has an account (rule 41): no name, nothing about the person behind the address.
InvitationOut
email
​string · email · required
expired
​boolean · required
expires_at
​string · date-time · required
flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
id
​string · uuid · required
​required
org_id
​string · uuid · required
role
​Role · enum · required

A person's role inside one organization. Per-membership, not per-person.

Enum values:
owner
admin
member
sent_at
​string · date-time · required
​
POST/api/v1/auth/invitations/{invitation_id}/resend
curl /api/v1/auth/invitations/:invitation_id/resend \ --request POST \ --header 'Authorization: Bearer <token>'
Example Responses
{ "created_by_impersonation_id": "00000000-0000-0000-0000-000000000000", "email": "test@example.com", "expired": true, "expires_at": "2024-08-25T15:00:00Z", "flags": [ "voice_agents" ], "id": "00000000-0000-0000-0000-000000000000", "invited_by_name": "string", "org_id": "00000000-0000-0000-0000-000000000000", "role": "owner", "sent_at": "2024-08-25T15:00:00Z" }
json
application/json

List Members

GET
/api/v1/auth/members

List the people in the caller's organization, with their roles and flags. Use when showing the member list, before changing a role, flags, or removing someone. Changes nothing.

List Members › Responses

200

Successful Response

​MembershipOut[]
MembershipOut
​ConversationAccessOut · required

What a member reads. everything is an owner or an admin, who read every conversation and whose access is never set (rule 35); default and channels are then every conversation, and nothing set on its own.

effective_flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
email
​string · email · required
flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
grantable_flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
id
​string · uuid · required
is_active
​boolean · required
name
​string · required
org_id
​string · uuid · required
person_id
​string · uuid · required
role
​Role · enum · required

A person's role inside one organization. Per-membership, not per-person.

Enum values:
owner
admin
member
​
GET/api/v1/auth/members
curl /api/v1/auth/members \ --header 'Authorization: Bearer <token>'
Example Responses
[ { "conversation_access": { "channels": { "key": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] } }, "default": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] }, "everything": true }, "created_by_impersonation_id": "00000000-0000-0000-0000-000000000000", "effective_flags": [ "voice_agents" ], "email": "test@example.com", "flags": [ "voice_agents" ], "grantable_flags": [ "voice_agents" ], "id": "00000000-0000-0000-0000-000000000000", "is_active": true, "name": "name", "org_id": "00000000-0000-0000-0000-000000000000", "person_id": "00000000-0000-0000-0000-000000000000", "role": "owner" } ]
json
application/json

Remove Member

DELETE
/api/v1/auth/members/{membership_id}

Remove a person from the organization. Use when someone should lose access entirely, not just a role or a flag. Refused for the last owner.

Every API key that person created here dies with them (api-keys.md); the response names which ones.

Remove Member › path Parameters

membership_id
​string · uuid · required

Remove Member › Responses

Successful Response

`DELETE /auth/members/{id}`'s response. `deleted_keys` is empty for the common case — most members never minted one.
MemberRemoved
​DeletedKey[] · required
DELETE/api/v1/auth/members/{membership_id}
curl /api/v1/auth/members/:membership_id \ --request DELETE \ --header 'Authorization: Bearer <token>'
Example Responses
{ "deleted_keys": [ { "id": "00000000-0000-0000-0000-000000000000", "name": "name" } ] }
json
application/json

Get Member Conversation Access

GET
/api/v1/auth/members/{membership_id}/conversation-access

Which conversations a member reads: a level on every channel not set on its own, and one per channel that is. An owner's or an admin's is everything and is not set. Owners and admins only.

Get Member Conversation Access › path Parameters

membership_id
​string · uuid · required

Get Member Conversation Access › Responses

Successful Response

What a member reads. `everything` is an owner or an admin, who read every conversation and whose access is never set (rule 35); `default` and `channels` are then every conversation, and nothing set on its own.
ConversationAccessOut
​object · required
​ChannelAccessBody · required

One level on a channel (authentication.md rule 32), and the people it names when it is people -- empty for every other level.

everything
​boolean · required
GET/api/v1/auth/members/{membership_id}/conversation-access
curl /api/v1/auth/members/:membership_id/conversation-access \ --header 'Authorization: Bearer <token>'
Example Responses
{ "channels": { "key": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] } }, "default": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] }, "everything": true }
json
application/json

Set Member Conversation Access

PATCH
/api/v1/auth/members/{membership_id}/conversation-access

Replace which conversations a member reads, per channel key as GET /interactions/scopes names them: none, all, people (with the people whose conversations it reaches) or own. Every level but none also reads what nobody has had and what waits for a person. Owners and admins only, and not on an owner or an admin, who read everything (400). A thread its holder can no longer open goes back to waiting. A key that names no channel, or two that are one channel, answers 422 naming it; a number is stored in its canonical spelling.

Set Member Conversation Access › path Parameters

membership_id
​string · uuid · required

Set Member Conversation Access › Request Body

A member's whole conversation access, replaced: the level on every channel not set on its own (rule 34), and each channel that is, by the key `GET /interactions/scopes` names it with.
ConversationAccessUpdate
​ChannelAccessBody · required

One level on a channel (authentication.md rule 32), and the people it names when it is people -- empty for every other level.

​object · maxProps: 500

Set Member Conversation Access › Responses

Successful Response

What a member reads. `everything` is an owner or an admin, who read every conversation and whose access is never set (rule 35); `default` and `channels` are then every conversation, and nothing set on its own.
ConversationAccessOut
​object · required
​ChannelAccessBody · required

One level on a channel (authentication.md rule 32), and the people it names when it is people -- empty for every other level.

everything
​boolean · required
PATCH/api/v1/auth/members/{membership_id}/conversation-access
curl /api/v1/auth/members/:membership_id/conversation-access \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "channels": { "key": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] } }, "default": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] } }'
Example Request Body
{ "channels": { "key": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] } }, "default": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] } }
json
Example Responses
{ "channels": { "key": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] } }, "default": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] }, "everything": true }
json
application/json

Set Member Flags

PATCH
/api/v1/auth/members/{membership_id}/flags

Change which features a member may use. Use when granting or revoking a member's access to a specific feature.

A flag the caller does not hold cannot be granted.

Set Member Flags › path Parameters

membership_id
​string · uuid · required

Set Member Flags › Request Body

FlagsUpdate
flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools

Set Member Flags › Responses

Successful Response

MembershipOut
​ConversationAccessOut · required

What a member reads. everything is an owner or an admin, who read every conversation and whose access is never set (rule 35); default and channels are then every conversation, and nothing set on its own.

effective_flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
email
​string · email · required
flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
grantable_flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
id
​string · uuid · required
is_active
​boolean · required
name
​string · required
org_id
​string · uuid · required
person_id
​string · uuid · required
role
​Role · enum · required

A person's role inside one organization. Per-membership, not per-person.

Enum values:
owner
admin
member
​
PATCH/api/v1/auth/members/{membership_id}/flags
curl /api/v1/auth/members/:membership_id/flags \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "flags": [ "voice_agents" ] }'
Example Request Body
{ "flags": [ "voice_agents" ] }
json
Example Responses
{ "conversation_access": { "channels": { "key": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] } }, "default": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] }, "everything": true }, "created_by_impersonation_id": "00000000-0000-0000-0000-000000000000", "effective_flags": [ "voice_agents" ], "email": "test@example.com", "flags": [ "voice_agents" ], "grantable_flags": [ "voice_agents" ], "id": "00000000-0000-0000-0000-000000000000", "is_active": true, "name": "name", "org_id": "00000000-0000-0000-0000-000000000000", "person_id": "00000000-0000-0000-0000-000000000000", "role": "owner" }
json
application/json

Set Member Role

PATCH
/api/v1/auth/members/{membership_id}/role

Change a member's role. Use when a person's standing in the organization should change. A role decides what they may administer.

Set Member Role › path Parameters

membership_id
​string · uuid · required

Set Member Role › Request Body

RoleUpdate
role
​Role · enum · required

A person's role inside one organization. Per-membership, not per-person.

Enum values:
owner
admin
member

Set Member Role › Responses

Successful Response

MembershipOut
​ConversationAccessOut · required

What a member reads. everything is an owner or an admin, who read every conversation and whose access is never set (rule 35); default and channels are then every conversation, and nothing set on its own.

effective_flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
email
​string · email · required
flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
grantable_flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
id
​string · uuid · required
is_active
​boolean · required
name
​string · required
org_id
​string · uuid · required
person_id
​string · uuid · required
role
​Role · enum · required

A person's role inside one organization. Per-membership, not per-person.

Enum values:
owner
admin
member
​
PATCH/api/v1/auth/members/{membership_id}/role
curl /api/v1/auth/members/:membership_id/role \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "role": "owner" }'
Example Request Body
{ "role": "owner" }
json
Example Responses
{ "conversation_access": { "channels": { "key": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] } }, "default": { "level": "none", "people": [ "00000000-0000-0000-0000-000000000000" ] }, "everything": true }, "created_by_impersonation_id": "00000000-0000-0000-0000-000000000000", "effective_flags": [ "voice_agents" ], "email": "test@example.com", "flags": [ "voice_agents" ], "grantable_flags": [ "voice_agents" ], "id": "00000000-0000-0000-0000-000000000000", "is_active": true, "name": "name", "org_id": "00000000-0000-0000-0000-000000000000", "person_id": "00000000-0000-0000-0000-000000000000", "role": "owner" }
json
application/json

Get Organization

GET
/api/v1/auth/org

Read the organization you are acting inside: its name, language, default country, timezone and entitlements. Use when showing org-level settings. Changes nothing.

Get Organization › Responses

200

Successful Response

OrganizationOut
default_country
​string · required
entitled_flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
grantable_flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
id
​string · uuid · required
is_active
​boolean · required
language
​string · required
name
​string · required
timezone
​string · required
GET/api/v1/auth/org
curl /api/v1/auth/org \ --header 'Authorization: Bearer <token>'
Example Responses
{ "default_country": "default_country", "entitled_flags": [ "voice_agents" ], "grantable_flags": [ "voice_agents" ], "id": "00000000-0000-0000-0000-000000000000", "is_active": true, "language": "language", "name": "name", "timezone": "timezone" }
json
application/json

Update Organization

PATCH
/api/v1/auth/org

Change the organization's name, language, default country or timezone. Use when updating organization-level settings — only the fields given.

The language is what the dashboard speaks and what a new agent is created speaking. Existing agents keep the language they already have. The default country is what a bare phone number is read against, and it is set once: after the first record identity is read against it, a change is refused. The timezone is what a scheduled automation's cron expression is read in. Neither re-stamps a value already normalised or a schedule already due.

Update Organization › Request Body

Partial edit of the organization's own settings — only provided fields change (`model_dump(exclude_unset=True)`). Four fields and deliberately only these. What an organization is *entitled* to is the platform's decision about a customer and stays with staff (`EntitlementUpdate`); `is_active` is the same. A client editing either would be a client granting themselves a feature or reinstating their own suspended account.
OrganizationUpdate
​
​
​
​

Update Organization › Responses

Successful Response

OrganizationOut
default_country
​string · required
entitled_flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
grantable_flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
id
​string · uuid · required
is_active
​boolean · required
language
​string · required
name
​string · required
timezone
​string · required
PATCH/api/v1/auth/org
curl /api/v1/auth/org \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "default_country": "string", "language": "string", "name": "string", "timezone": "string" }'
Example Request Body
{ "default_country": "string", "language": "string", "name": "string", "timezone": "string" }
json
Example Responses
{ "default_country": "default_country", "entitled_flags": [ "voice_agents" ], "grantable_flags": [ "voice_agents" ], "id": "00000000-0000-0000-0000-000000000000", "is_active": true, "language": "language", "name": "name", "timezone": "timezone" }
json
application/json

Get Role Flags

GET
/api/v1/auth/role-flags

Read the default feature flags each role gets in this organization. Use when showing what a role grants before changing it. Changes nothing.

Get Role Flags › Responses

200

Successful Response

RoleFlagsOut
grantable_flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
​object · required
GET/api/v1/auth/role-flags
curl /api/v1/auth/role-flags \ --header 'Authorization: Bearer <token>'
Example Responses
{ "grantable_flags": [ "voice_agents" ], "role_flags": { "key": [ "voice_agents" ] } }
json
application/json

Set Role Flags

PATCH
/api/v1/auth/role-flags

Set the default feature flags for a role in this organization. Use when changing what every member of a role gets by default, rather than one person's own flags.

Affects what members of that role may reach.

Set Role Flags › Request Body

RoleFlagsUpdate
flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
role
​Role · enum · required

A person's role inside one organization. Per-membership, not per-person.

Enum values:
owner
admin
member

Set Role Flags › Responses

Successful Response

RoleFlagsOut
grantable_flags
​FeatureFlag[] · required
Enum values:
voice_agents
text_agents
ai_profiles
outbound_calls
rag
memory
tools
custom_tools
​object · required
PATCH/api/v1/auth/role-flags
curl /api/v1/auth/role-flags \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <token>' \ --data '{ "flags": [ "voice_agents" ], "role": "owner" }'
Example Request Body
{ "flags": [ "voice_agents" ], "role": "owner" }
json
Example Responses
{ "grantable_flags": [ "voice_agents" ], "role_flags": { "key": [ "voice_agents" ] } }
json
application/json

analyticsautomations