Skip to content

DOCS · REFERENCE

Operation reference

Each operation below works the same way everywhere: POST /v1/operations/<name> on the HTTP API, the tool name_with_underscores on the MCP server, and sagot <name> in the CLI. Inputs are JSON; most operations take the workspaceId they act on. The machine-readable contract is openapi.json. New here? Start with the developer docs.

Access

access.info

Read public registration availability (closed alpha is the default) and whether the caller's session or credential is valid (signedIn). Requires no sign-in.

Waitlist

waitlist.join

Request alpha participation with contact consent. Does not create an account or send email. Requires no sign-in.

FieldTypeRequired
namestringyes
emailstringyes
companystringyes
useCasestringyes
consentbooleanyes
websitestringyes

waitlist.list

Platform operators only: review the alpha queue, oldest first, with status and pagination. Requires read permission.

FieldTypeRequired
status"waiting" | "contacted" | "invited" | "admitted" | "closed"no
offsetintegeryes
limitintegeryes

waitlist.update

Platform operators only: mark an applicant waiting, contacted or closed. Requires configure permission.

FieldTypeRequired
idUUIDyes
status"waiting" | "contacted" | "closed"yes

waitlist.delete

Platform operators only: permanently remove an applicant's waitlist information. Does not delete their account or invitations. Requires configure permission.

FieldTypeRequired
idUUIDyes

Invitations

invitations.create

Platform operators only: issue an email-bound, single-use private invitation. Returns the token once; share privately. Does not send email. Replaces prior unused invitations for that email. Requires configure permission.

FieldTypeRequired
emailstringyes
expiresInDaysintegeryes

invitations.list

Platform operators only: list invitation states without tokens, newest first. Requires read permission.

FieldTypeRequired
offsetintegeryes
limitintegeryes

invitations.revoke

Platform operators only: revoke an unused invitation. Existing accounts are unaffected. Requires configure permission.

FieldTypeRequired
idUUIDyes

Account

account.register

Operation in the shared contract. Requires no sign-in.

FieldTypeRequired
namestringyes
emailstringyes
passwordstringyes
invitationTokenstringno
memberInvitationTokenstringno

account.login

Operation in the shared contract. Requires no sign-in.

FieldTypeRequired
emailstringyes
passwordstringyes

account.me

Operation in the shared contract. Requires read permission.

account.logout

Operation in the shared contract. Requires configure permission.

Workspaces

workspaces.create

Operation in the shared contract. Requires configure permission.

FieldTypeRequired
namestringyes

workspaces.list

Operation in the shared contract. Requires read permission.

workspaces.update

Operation in the shared contract. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes
namestringyes

Members

members.list

List the people in this workspace with their roles (viewer, editor, operator, admin, owner). Admins also see invitations and their status; tokens are never shown. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes

members.invite

Admins: invite an email to this workspace with a role, optionally limited to agentIds (viewer/editor/operator only). SAGOT emails the invitation when email is configured; the one-time link path (/join#member=…) is also returned once as a fallback. The invitee signs in or creates an account with that email. Only the owner can invite admins. Re-inviting an email replaces its earlier pending invitation. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes
emailstringyes
role"viewer" | "editor" | "operator" | "admin"yes
agentIdsUUID[] | nullno
expiresInDaysintegeryes

members.update

Admins: change a member's role and, with agentIds, limit a viewer/editor/operator to selected agents (null = all agents). Takes effect on their next request, including their API keys. The owner's role cannot change; only the owner grants or removes admin. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes
accountIdUUIDyes
role"viewer" | "editor" | "operator" | "admin"yes
agentIdsUUID[] | nullno

members.transfer

Owner only, signed-in session: make another member the owner. You become an admin; any agent limit on them is removed. The new owner is emailed. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes
accountIdUUIDyes

members.remove

Admins remove a member; any member may remove themselves to leave. The owner cannot be removed. Their sessions and API keys stop working in this workspace immediately. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
accountIdUUIDyes

members.revoke

Admins: revoke a pending member invitation by id so its link stops working. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

members.preview

Public: show what a member invitation link grants (workspace, inviter, role, invited email, status) before accepting. Requires no sign-in.

FieldTypeRequired
tokenstringyes

members.accept

Signed-in account session only: accept a member invitation issued to this account's email and join the workspace with its role. Requires configure permission.

FieldTypeRequired
tokenstringyes

Credentials

credentials.create

Operation in the shared contract. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes
namestringyes
scopes"read" | "configure" | "publish" | "call" | "admin"[]yes

credentials.list

Operation in the shared contract. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes

credentials.revoke

Operation in the shared contract. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

Agents

agents.create

Operation in the shared contract. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
personaobjectyes

agents.list

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
limitintegeryes
cursorUUIDno

agents.get

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

agents.save

Operation in the shared contract. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes
revisionintegeryes
personaobjectyes

agents.test

Validate the current draft and its integration. This is configuration validation, not a voice-quality score. Use a draft SIP call to hear the result. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes
revisionintegeryes

agents.publish

Publish a validated draft for new calls. Active calls keep their original snapshot. Requires publish permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes
revisionintegeryes

agents.pause

Operation in the shared contract. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

agents.rollback

Point new calls to a previous published version. Requires publish permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes
versionUUIDyes

agents.retire

Operation in the shared contract. Requires publish permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes
versionUUIDyes

Integrations

integrations.save

Operation in the shared contract. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDno
revisionintegerno
namestringyes
mode"sandbox" | "https"yes
endpointstringyes
reconciliationEndpointstringyes
eventEndpointstringyes
secretstringno
actionNamestringyes
description
When the agent should use this action and what it accomplishes.
stringyes
requiredFieldsstring[]yes

integrations.list

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
limitintegeryes
cursorUUIDno

integrations.get

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

integrations.test

Exercise the connector with a test payload. Sandbox never writes to an external product. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes
payloadobjectyes

integrations.disconnect

Operation in the shared contract. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

Contacts

contacts.import

Operation in the shared contract. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
contactsobject[]yes

contacts.list

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
limitintegeryes
cursorUUIDno

contacts.history

Review all retained calls, conversations, outcomes, actions, follow-ups and activity for one contact across agents in this workspace. Missing or deleted evidence is labeled. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

contacts.export

Export the contact's retained evidence as a readable Markdown or structured JSON audit snapshot. Export is logged; it does not create recordings or recover deleted content. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes
format"markdown" | "json"yes

contacts.update

Operation in the shared contract. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes
revisionintegeryes
namestringyes
sourcestringyes
eligibilitystringyes

contacts.suppress

Permanently suppress this contact from new calls in this workspace. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes
reasonstringyes

Campaigns

campaigns.save

Operation in the shared contract. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDno
revisionintegerno
namestringyes
agentIdUUIDyes
contactIdsUUID[]yes
budgetCentavosintegeryes
lineIdUUID | nullno

campaigns.list

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
limitintegeryes
cursorUUIDno

campaigns.get

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

campaigns.preview

Inspect eligible contacts, exclusion reasons and the maximum reserved cost without dialing. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

campaigns.start

Operation in the shared contract. Requires call permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

campaigns.pause

Operation in the shared contract. Requires call permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

campaigns.resume

Operation in the shared contract. Requires call permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

campaigns.cancel

Operation in the shared contract. Requires call permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

Calls

calls.create

Queue one call on the workspace's bound route to an operator-allowlisted destination. Live prospect dialing is not enabled. Requires call permission.

FieldTypeRequired
workspaceIdUUIDyes
agentIdUUIDyes
contactIdUUIDyes
idempotencyKeystringyes
draftbooleanyes
lineIdUUIDno

calls.list

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
limitintegeryes
cursorUUIDno

calls.get

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

calls.recording

Get recording availability and authenticated audio URL. Fetch that URL with the same bearer credential to play/download Ogg audio; CLI supports --output file. Older unrecorded calls have no audio. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

calls.cancel

Cancel a queued or active call. On a finished call with a scheduled automatic retry, cancels that retry instead. Requires call permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

Actions

actions.list

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
limitintegeryes
cursorUUIDno

actions.reconcile

Query the owning system about an uncertain action. Does not repeat the business write. Requires call permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

Handoffs

handoffs.list

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
limitintegeryes
cursorUUIDno

handoffs.update

Operation in the shared contract. Requires call permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes
revisionintegeryes
status"accepted" | "resolved" | "canceled"yes
ownerstringyes

Events

events.list

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
limitintegeryes
cursorUUIDno

events.replay

Retry delivery of this event with its original event ID. Requires call permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

Policies

policies.get

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes

policies.update

Operation in the shared contract. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes
revisionintegeryes
policyobjectyes

Usage

usage.get

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes

Routes

routes.list

Deprecated alias of lines.list: offered routes with health and the workspace's default line as `bound`. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes

routes.bind

Deprecated alias: add (if needed) and make default the line for this route; inboundAgentId as in lines.update. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
route"sip-test" | "phone-gateway"yes
inboundAgentIdUUID | nullno

routes.clearAlert

Deprecated alias of lines.clearAlert for the workspace's default line. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes

Lines

lines.list

List this workspace's phone lines (provider, default, mode, test numbers, ring window, live health, inbound answering, telco warning) and the providers this deployment offers. Secrets are never returned. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes

lines.get

Read one phone line with its live health and warning. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

lines.create

Add a phone line from an offered provider. Adding never dials. The first line becomes the default for new calls and campaigns. Lines start in test mode: only the line's test numbers can be called. A `gateway` line (your own computer + phone) returns a one-time `pairing.code` (30 minutes) that the SAGOT gateway app exchanges for its own credential; the code is shown only once. A `twilio` line connects your own Twilio account: pass accountSid, apiKeySid, apiKeySecret (a Standard API key; write-only) and the numbers to attach (lines.twilioNumbers lists them). SAGOT creates an Elastic SIP Trunk, a credential list, an origination URL and attaches the numbers in your account, records every object it created and removes exactly those when the line is deleted. Twilio bills the calls to your account. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
provider"sandbox" | "legacy_gateway" | "gateway" | "twilio"yes
namestringno
isDefaultbooleanno
accountSidstringno
apiKeySidstringno
apiKeySecretstringno
numbersstring[]no
callerIdstringno
edge"singapore" | "tokyo" | "sydney" | "ashburn" | "umatilla" | "dublin" | "frankfurt" | "sao-paulo"no

lines.twilioNumbers

Check a Twilio Standard API key (accountSid, apiKeySid, apiKeySecret) and list the account's voice-capable numbers and whether Twilio is reachable. Changes nothing and stores nothing. Use it before lines.create with provider twilio. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
accountSidstringyes
apiKeySidstringyes
apiKeySecretstringyes

lines.update

Rename a line, make it the default, choose the published inboundAgentId that answers its callers (gateway lines; null stops answering), set testNumbers (customer gateway and Twilio lines), rotatePairing to issue a new pairing code and sign the paired device out, or capacity (Twilio lines: concurrent calls 1–10; phone gateways and shared routes carry one call). The deployment also caps concurrent calls overall. Live mode is not available yet. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes
revisionintegeryes
namestringno
isDefaultbooleanno
mode"test" | "live"no
inboundAgentIdUUID | nullno
testNumbersstring[]no
rotatePairingbooleanno
capacityintegerno

lines.test

Check a line's readiness without dialing: provider offered, health, test numbers. Use calls.create with lineId for a real test call. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

lines.clearAlert

Clear this line's telco warning after fixing the cause (for example topping up the gateway SIM). Held automatic retries and campaigns on this line resume. An answered call also clears it. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

lines.delete

Remove a phone line. Refused while it has active calls. For a Twilio line SAGOT first deletes the trunk, credentials and origination URL it created in your account and detaches your numbers (the numbers stay yours). Finished calls keep their history; scheduled retries on it are skipped. Another line becomes the default if needed. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

Artifacts

artifacts.export

Operation in the shared contract. Requires read permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

artifacts.delete

Operation in the shared contract. Requires configure permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

Support

support.list

Workspace admins: SAGOT support access requests and grants for this workspace, with what staff read while access was active. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes

support.approve

Workspace admins: approve a pending SAGOT support access request. The staff member gets read-only access for the requested hours, starting now. Nothing can be changed by staff. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

support.deny

Workspace admins: deny a pending SAGOT support access request. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes

support.revoke

Workspace admins: end active SAGOT support access immediately. Requires admin permission.

FieldTypeRequired
workspaceIdUUIDyes
idUUIDyes