Agents
Manage the full lifecycle of agents programmatically: create and configure them, publish and roll back versions, inspect conversation history, submit evaluations, and control sharing and ownership.
All paths on this page are relative to https://api.autessa.com/autessa_poweruser/agents. Every request is a POST with a JSON body, and every ID is an opaque string. See the Poweruser API overview for authentication and conventions.
The agent object
Agents are returned as a polymorphic object keyed on agentType. All types
share the base fields; each type adds its own configuration on top.
Base fields
- Name
agentId- Type
- string
- Description
Unique agent identifier.
- Name
agentType- Type
- string
- Description
One of
SIMPLE,MCP,CRITIC,SEARCH. Immutable after creation.
- Name
versionNumber- Type
- integer
- Description
Version number when reading a specific published or archived version; absent on the draft working copy.
- Name
name- Type
- string
- Description
Display name.
- Name
description- Type
- string
- Description
What the agent does. Used by managers when deciding which agent to invoke.
- Name
agentInstructions- Type
- string
- Description
The system prompt. May contain
@@{variableName}@@placeholders that are filled frompromptTemplateVariablesat execution time.
- Name
model- Type
- string
- Description
Model alias:
BIG_INSTRUCTION_FOLLOWING_REASONING,BIG_INSTRUCTION_FOLLOWING,SMALL_INSTRUCTION_FOLLOWING,VIBE_CODING, orAUTESSA_120B.
- Name
voiceConfig- Type
- object
- Description
Voice settings for audio output:
voiceModel(SMALL,MEDIUM,LARGE) andvoiceName.
- Name
promptTemplateVariables- Type
- object
- Description
Map of variable name to argument definition (
description,isRequired,argumentSchema— a JSON Schema object).
- Name
evaluationNotes- Type
- string
- Description
Grading rubric used by automated evaluation.
- Name
lastPublishedTime- Type
- string
- Description
ISO-8601 timestamp of the last publish, or absent if never published.
- Name
tags- Type
- array<string>
- Description
Free-form organizational tags.
- Name
enableBrowserTools- Type
- boolean
- Description
Whether the agent may use built-in browser tools.
Type-specific fields
- Name
maxIterations- Type
- integer
- Description
SIMPLE,MCP,CRITIC,SEARCH— maximum reasoning/tool loop iterations per turn (default10).
- Name
tools- Type
- array<Tool>
- Description
SIMPLE,CRITIC,SEARCH— tools attached to the agent. See Tools.
- Name
mcpServerId- Type
- string
- Description
MCP— the MCP server whose tools the agent uses.
- Name
autessaDbTableId- Type
- string
- Description
SEARCH— the AutessaDB table to search.
- Name
searchColumnName- Type
- string
- Description
SEARCH— the column that is semantically indexed.
- Name
topK- Type
- integer
- Description
SEARCH— number of results to retrieve (default5).
- Name
scoreThreshold- Type
- number
- Description
SEARCH— minimum similarity score (default0.7).
- Name
goodCriteria- Type
- array<string>
- Description
CRITIC— criteria a response must satisfy.
- Name
badCriteria- Type
- array<string>
- Description
CRITIC— criteria a response must avoid.
- Name
maxCriticIterations- Type
- integer
- Description
CRITIC— max revise-and-recheck rounds (default3).
- Name
criticModel- Type
- string
- Description
CRITIC— model alias used by the critic pass.
- Name
streamCriticFeedback- Type
- boolean
- Description
CRITIC— whether critic feedback is streamed to the caller.
- Name
criticContextExchanges- Type
- integer
- Description
CRITIC— how many prior exchanges the critic sees (default3).
{
"agentId": "V1StGXR8Z5",
"agentType": "SIMPLE",
"name": "Support Triage Agent",
"description": "Classifies inbound support tickets and drafts replies.",
"agentInstructions": "You are a support triage specialist for @@{companyName}@@ ...",
"model": "BIG_INSTRUCTION_FOLLOWING",
"voiceConfig": {
"voiceModel": "SMALL",
"voiceName": "FEMALE"
},
"promptTemplateVariables": {
"companyName": {
"description": "Company the agent represents",
"isRequired": true,
"argumentSchema": { "type": "string" }
}
},
"evaluationNotes": "A good response classifies the ticket and drafts a reply.",
"lastPublishedTime": "2026-06-28T17:42:10",
"tags": ["support"],
"enableBrowserTools": false,
"maxIterations": 10,
"tools": [
{
"toolId": "kZ3mQ9pW2x",
"name": "LookupOrder",
"description": "Looks up an order by ID in AutessaDB."
}
]
}
Versioning and access levels
Agents follow the platform-wide draft/published model (see the Versions guide):
- Draft —
/updatealways edits the draft working copy. Draft changes are never visible to executions that use the published version. - Published —
/publishsnapshots the draft as a new published version; the previously published version becomes archived. - Rollback —
/rollbackrepublishes an archived version. The draft is untouched.
Endpoints enforce the caller's access level on the agent (the poweruser key acts as its linked user):
| Operation | Required access |
|---|---|
get, all, versions, conversations/*, statistics | Any access (READ or higher) |
update | WRITE, PUBLISH, or ADMIN |
publish, rollback | PUBLISH or ADMIN |
delete, share | ADMIN |
transfer-ownership | Owner only |
Create an agent
/agents/createCreates a new agent as a draft. agentName and agentDescription are both
required — creation fails with an error message if either is blank. Configure
instructions, model, and tools afterwards with /update,
then /publish to make it executable.
Request parameters
- Name
agentType- Type
- string
- Description
SIMPLE,MCP,CRITIC, orSEARCH.
- Name
agentName- Type
- string
- Description
Display name. Must be non-blank.
- Name
agentDescription- Type
- string
- Description
Description of the agent's purpose. Must be non-blank.
- Name
mcpServerId- Type
- string
- Description
MCPagents only — the MCP server to bind.
- Name
autessaDbTableId- Type
- string
- Description
SEARCHagents only — the AutessaDB table to search.
- Name
searchColumnName- Type
- string
- Description
SEARCHagents only — the indexed column to search over.
- Name
topK- Type
- integer
- Description
SEARCHagents only — number of results to retrieve.
- Name
scoreThreshold- Type
- number
- Description
SEARCHagents only — minimum similarity score.
- Name
enableAutoContext- Type
- boolean
- Description
SEARCHagents only — automatically inject retrieved context.
Response
- Name
agent- Type
- Agent
- Description
The newly created agent object.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/agents/create \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentType": "SIMPLE",
"agentName": "Support Triage Agent",
"agentDescription": "Classifies inbound support tickets and drafts replies."
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/agents/create',
{
method: 'POST',
headers: {
'Authorization': process.env.POWERUSER_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
agentType: 'SIMPLE',
agentName: 'Support Triage Agent',
agentDescription: 'Classifies inbound support tickets and drafts replies.'
})
}
);
const { agent } = await response.json();
console.log(agent.agentId);
import os
import requests
response = requests.post(
'https://api.autessa.com/autessa_poweruser/agents/create',
headers={'Authorization': os.environ['POWERUSER_KEY']},
json={
'agentType': 'SIMPLE',
'agentName': 'Support Triage Agent',
'agentDescription': 'Classifies inbound support tickets and drafts replies.'
}
)
agent = response.json()['agent']
{
"agent": {
"agentId": "V1StGXR8Z5",
"agentType": "SIMPLE",
"name": "Support Triage Agent",
"description": "Classifies inbound support tickets and drafts replies.",
"agentInstructions": "You are a professional agent who does as asked.",
"model": "SMALL_INSTRUCTION_FOLLOWING",
"maxIterations": 10,
"tools": []
},
"errors": []
}
Get an agent
/agents/getRetrieves an agent's full configuration. Without a version parameter you
get the current draft working copy; pass version to read a specific
published or archived snapshot.
Request parameters
- Name
agentId- Type
- string
- Description
The agent to fetch.
- Name
version- Type
- object
- Description
Optional version selector:
versionState(PUBLISHED,DRAFT, orARCHIVED; defaults toPUBLISHEDwhen the object is present) and an optionalversionNumber.
Response
- Name
agent- Type
- Agent
- Description
The agent object.
- Name
permission- Type
- string
- Description
The calling user's access level on this agent:
READ,WRITE,PUBLISH, orADMIN.
- Name
voiceOptionsList- Type
- array<VoiceOptions>
- Description
Voice models available to the company, each with
voiceModeland avoicesobject listingbuiltInVoiceNamesandcustomVoiceNames(custom voice clones, on supported models).
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/agents/get \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentId": "V1StGXR8Z5",
"version": { "versionState": "PUBLISHED" }
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/agents/get',
{
method: 'POST',
headers: {
'Authorization': process.env.POWERUSER_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ agentId: 'V1StGXR8Z5' })
}
);
const { agent, permission } = await response.json();
import os
import requests
response = requests.post(
'https://api.autessa.com/autessa_poweruser/agents/get',
headers={'Authorization': os.environ['POWERUSER_KEY']},
json={'agentId': 'V1StGXR8Z5'}
)
data = response.json()
{
"agent": {
"agentId": "V1StGXR8Z5",
"agentType": "SIMPLE",
"name": "Support Triage Agent",
"model": "BIG_INSTRUCTION_FOLLOWING",
"maxIterations": 10,
"tools": [{ "toolId": "kZ3mQ9pW2x", "name": "LookupOrder" }]
},
"permission": "ADMIN",
"voiceOptionsList": [
{
"voiceModel": "SMALL",
"voices": {
"builtInVoiceNames": ["FEMALE", "MALE"],
"customVoiceNames": []
}
}
],
"errors": []
}
List all agents
/agents/allLists every agent visible to the linked user, grouped by how they have
access. Entries are lightweight summaries — use /get for full
configuration.
Request parameters
None — send an empty object {}.
Response
- Name
ownedAgents- Type
- array<Agent>
- Description
Agents the linked user owns.
- Name
companySharedAgents- Type
- array<Agent>
- Description
Agents shared with the whole company.
- Name
sharedWithMeAgents- Type
- array<Agent>
- Description
Agents shared specifically with the linked user.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/agents/all \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{}'
{
"ownedAgents": [
{
"agentId": "V1StGXR8Z5",
"agentType": "SIMPLE",
"name": "Support Triage Agent",
"description": "Classifies inbound support tickets and drafts replies.",
"tags": ["support"],
"lastPublishedTime": "2026-06-28T17:42:10"
}
],
"companySharedAgents": [],
"sharedWithMeAgents": [],
"errors": []
}
Update an agent
/agents/updateReplaces the agent's draft configuration with updatedAgent. This is a
whole-object update: fetch the draft with /get, modify it,
and send the full object back. Published versions are unaffected until you
/publish.
Requires WRITE, PUBLISH, or ADMIN access.
Request parameters
- Name
agentId- Type
- string
- Description
The agent to update.
- Name
updatedAgent- Type
- Agent
- Description
The complete agent object to store as the new draft. Uses the agent object shape;
agentTypemust match the existing agent.
Response
- Name
updatedAgent- Type
- Agent
- Description
The stored draft.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/agents/update \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentId": "V1StGXR8Z5",
"updatedAgent": {
"agentId": "V1StGXR8Z5",
"agentType": "SIMPLE",
"name": "Support Triage Agent",
"description": "Classifies inbound support tickets and drafts replies.",
"agentInstructions": "You are a support triage specialist. Classify each ticket ...",
"model": "BIG_INSTRUCTION_FOLLOWING",
"maxIterations": 10,
"tools": [{ "toolId": "kZ3mQ9pW2x" }]
}
}'
// Read-modify-write the draft
const getResp = await fetch(
'https://api.autessa.com/autessa_poweruser/agents/get',
{
method: 'POST',
headers: {
'Authorization': process.env.POWERUSER_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ agentId: 'V1StGXR8Z5' })
}
);
const { agent } = await getResp.json();
agent.model = 'BIG_INSTRUCTION_FOLLOWING';
agent.agentInstructions = 'You are a support triage specialist ...';
await fetch(
'https://api.autessa.com/autessa_poweruser/agents/update',
{
method: 'POST',
headers: {
'Authorization': process.env.POWERUSER_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ agentId: agent.agentId, updatedAgent: agent })
}
);
import os
import requests
headers = {'Authorization': os.environ['POWERUSER_KEY']}
base = 'https://api.autessa.com/autessa_poweruser/agents'
agent = requests.post(f'{base}/get', headers=headers,
json={'agentId': 'V1StGXR8Z5'}).json()['agent']
agent['model'] = 'BIG_INSTRUCTION_FOLLOWING'
requests.post(f'{base}/update', headers=headers,
json={'agentId': agent['agentId'], 'updatedAgent': agent})
{
"updatedAgent": {
"agentId": "V1StGXR8Z5",
"agentType": "SIMPLE",
"name": "Support Triage Agent",
"model": "BIG_INSTRUCTION_FOLLOWING"
},
"errors": []
}
Publish an agent
/agents/publishSnapshots the current draft as a new published version. Client API
executions that don't pin a version always use the latest published version.
The previously published version becomes archived and remains available for
/rollback.
Requires PUBLISH or ADMIN access.
Request parameters
- Name
agentId- Type
- string
- Description
The agent to publish.
Response
- Name
publishedAgentVersion- Type
- integer
- Description
The new published version number.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/agents/publish \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "agentId": "V1StGXR8Z5" }'
{
"publishedAgentVersion": 4,
"errors": []
}
Roll back an agent
/agents/rollbackRepublishes an archived version, making it the live published version again.
The draft working copy is not changed. Use /versions to
find rollback candidates.
Requires PUBLISH or ADMIN access.
Request parameters
- Name
agentId- Type
- string
- Description
The agent to roll back.
- Name
versionToRollback- Type
- integer
- Description
The archived version number to republish.
Response
- Name
newPublishedVersion- Type
- integer
- Description
The version number now published.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/agents/rollback \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "agentId": "V1StGXR8Z5", "versionToRollback": 3 }'
{
"newPublishedVersion": 5,
"errors": []
}
List versions
/agents/versionsReturns the agent's published version and all archived version numbers.
Request parameters
- Name
agentId- Type
- string
- Description
The agent to inspect.
Response
- Name
currentPublishedVersion- Type
- integer
- Description
The live published version, or absent if the agent was never published.
- Name
archivedVersions- Type
- array<integer>
- Description
Previously published version numbers available for rollback.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/agents/versions \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "agentId": "V1StGXR8Z5" }'
{
"currentPublishedVersion": 4,
"archivedVersions": [1, 2, 3],
"errors": []
}
List conversations
/agents/conversations/historyReturns the agent's conversation history, newest first, paginated.
Request parameters
- Name
agentId- Type
- string
- Description
The agent whose conversations to list.
- Name
page- Type
- integer
- Description
Zero-based page index. Defaults to
0.
- Name
includeMySandboxConversations- Type
- boolean
- Description
Also include the calling user's sandbox (Builder test) conversations. Defaults to
false.
Response
- Name
conversations- Type
- array<Conversation>
- Description
Conversation records. Each has
resourceId(the agent's ID),version,conversationId,apiKeyId,closeDate,logs(see conversation logs), and an optionalevaluationContext.
- Name
totalElements- Type
- integer
- Description
Total conversations across all pages.
- Name
totalPages- Type
- integer
- Description
Total number of pages.
- Name
currentPage- Type
- integer
- Description
The page returned.
- Name
pageSize- Type
- integer
- Description
Conversations per page.
- Name
hasNext- Type
- boolean
- Description
Whether another page exists.
- Name
hasPrevious- Type
- boolean
- Description
Whether a previous page exists.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/agents/conversations/history \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "agentId": "V1StGXR8Z5", "page": 0 }'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/agents/conversations/history',
{
method: 'POST',
headers: {
'Authorization': process.env.POWERUSER_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ agentId: 'V1StGXR8Z5', page: 0 })
}
);
const { conversations, hasNext } = await response.json();
import os
import requests
response = requests.post(
'https://api.autessa.com/autessa_poweruser/agents/conversations/history',
headers={'Authorization': os.environ['POWERUSER_KEY']},
json={'agentId': 'V1StGXR8Z5', 'page': 0}
)
data = response.json()
{
"conversations": [
{
"resourceId": "V1StGXR8Z5",
"version": "4",
"conversationId": "conv_a1b2c3d4e5",
"apiKeyId": "key_xyz",
"closeDate": "2026-06-30T09:15:22",
"logs": [
{
"logType": "USER",
"userMultimodalInputs": [
{ "inputType": "TEXT", "content": "My order is late." }
]
},
{
"logType": "MESSAGE_TO_USER",
"multimodalOutput": {
"outputType": "TEXT",
"content": "I'm sorry to hear that — let me look it up."
}
}
],
"evaluationContext": null
}
],
"totalElements": 128,
"totalPages": 13,
"currentPage": 0,
"pageSize": 10,
"hasNext": true,
"hasPrevious": false,
"errors": []
}
Conversation logs
Each entry in logs has a logType that determines which other fields are
present:
| logType | Payload |
|---|---|
USER | userMultimodalInputs — array of text/audio inputs from the user. |
MESSAGE_TO_USER | multimodalOutput — the agent's text or audio response. |
TOOL_REQUEST | executeToolRequest — toolCallId, tool name, and variables. |
TOOL_RESPONSE | executeToolResponse — toolCallId, toolName, and the tool's result. |
Audio entries additionally carry playback metadata (playbackState,
playbackStartedAt, playbackCompletedAt, spokenContent when a response
was interrupted), and CRITIC agents can emit rejected-message entries with
criticEvaluation and criticAttemptNumber.
Get a conversation
/agents/conversations/conversationFetches a single conversation by ID — unlike
/conversations/history this is not paginated, so
deep links to older conversations resolve directly.
Request parameters
- Name
agentId- Type
- string
- Description
The agent the conversation belongs to.
- Name
conversationId- Type
- string
- Description
The conversation to fetch.
Response
- Name
conversation- Type
- Conversation
- Description
The conversation record, same shape as entries in
/conversations/history.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/agents/conversations/conversation \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentId": "V1StGXR8Z5",
"conversationId": "conv_a1b2c3d4e5"
}'
{
"conversation": {
"resourceId": "V1StGXR8Z5",
"version": "4",
"conversationId": "conv_a1b2c3d4e5",
"logs": [ { "logType": "USER", "userMultimodalInputs": [] } ],
"evaluationContext": {
"humanEvaluation": {
"status": "SUCCESSFUL",
"notes": "Resolved on first contact.",
"evaluationTime": "2026-06-30T10:02:44"
}
}
},
"errors": []
}
Submit a human evaluation
/agents/submit-evaluationAttaches a human evaluation to a conversation. Human evaluations take precedence over automated ones in statistics. The evaluation timestamp and evaluator are set server-side from the calling user — you only supply the verdict and notes.
Request parameters
- Name
agentId- Type
- string
- Description
The agent the conversation belongs to.
- Name
conversationId- Type
- string
- Description
The conversation being evaluated.
- Name
humanEvaluation- Type
- object
- Description
The evaluation payload.
- Name
humanEvaluation.status- Type
- string
- Description
One of
SUCCESSFUL,SUCCESSFUL_NOT_EFFICIENT,SUCCESSFUL_NOT_ALL_STEPS,UNSUCCESSFUL.
- Name
humanEvaluation.notes- Type
- string
- Description
Free-form reviewer notes.
Response
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred (for example
"Conversation not found").
curl https://api.autessa.com/autessa_poweruser/agents/submit-evaluation \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentId": "V1StGXR8Z5",
"conversationId": "conv_a1b2c3d4e5",
"humanEvaluation": {
"status": "SUCCESSFUL",
"notes": "Resolved on first contact."
}
}'
{
"errors": []
}
Get statistics
/agents/statisticsAggregated evaluation statistics for an agent, optionally windowed by date, with a per-version breakdown.
Request parameters
- Name
agentId- Type
- string
- Description
The agent to analyze.
- Name
startDate- Type
- string
- Description
ISO-8601 date-time lower bound (for example
"2026-06-01T00:00:00").
- Name
endDate- Type
- string
- Description
ISO-8601 date-time upper bound.
Response
- Name
statistics- Type
- object
- Description
The statistics envelope.
- Name
statistics.totalConversations- Type
- integer
- Description
Conversations in the window.
- Name
statistics.humanEvaluation- Type
- EvaluationStats
- Description
Counts from human evaluations:
totalEvaluated,successful,successfulNotEfficient,successfulNotAllSteps,unsuccessful.
- Name
statistics.automatedEvaluation- Type
- EvaluationStats
- Description
Same counts from automated evaluation.
- Name
statistics.humanPrecedenceEvaluation- Type
- EvaluationStats
- Description
Merged view where a human verdict overrides the automated one for the same conversation.
- Name
statistics.versionBreakdown- Type
- object
- Description
Map of version number to a per-version stats object with the same four fields.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/agents/statistics \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentId": "V1StGXR8Z5",
"startDate": "2026-06-01T00:00:00",
"endDate": "2026-07-01T00:00:00"
}'
{
"statistics": {
"totalConversations": 128,
"humanEvaluation": {
"totalEvaluated": 40,
"successful": 31,
"successfulNotEfficient": 4,
"successfulNotAllSteps": 2,
"unsuccessful": 3
},
"automatedEvaluation": {
"totalEvaluated": 128,
"successful": 97,
"successfulNotEfficient": 12,
"successfulNotAllSteps": 8,
"unsuccessful": 11
},
"humanPrecedenceEvaluation": {
"totalEvaluated": 128,
"successful": 99,
"successfulNotEfficient": 11,
"successfulNotAllSteps": 8,
"unsuccessful": 10
},
"versionBreakdown": {
"4": { "totalConversations": 74 }
}
},
"errors": []
}
Delete an agent
/agents/deletePermanently deletes an agent, including its draft and version history. This is destructive and cannot be undone.
Requires ADMIN access on the agent.
Request parameters
- Name
agentId- Type
- string
- Description
The agent to delete.
Response
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/agents/delete \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "agentId": "V1StGXR8Z5" }'
{
"errors": []
}
Share an agent
/agents/shareSets the agent's sharing level and per-user grants in one call.
Requires ADMIN access on the agent.
Request parameters
- Name
agentId- Type
- string
- Description
The agent to share.
- Name
level- Type
- string
- Description
Sharing level:
PRIVATE,SPECIFIC_MEMBER, orCOMPANY.
- Name
accessLevel- Type
- string
- Description
When
levelisCOMPANY, the access level every company member gets:READ,WRITE,PUBLISH, orADMIN.
- Name
usersToAdd- Type
- array<UserShare>
- Description
Users to grant access. Each entry:
userEmailoruserId(string), plusaccessLevel.
- Name
usersToRemove- Type
- array<UserShare>
- Description
Users whose access to revoke, same entry shape.
Response
- Name
level- Type
- string
- Description
The resulting sharing level.
- Name
accessLevel- Type
- string
- Description
The resulting company-wide access level, when shared with the company.
- Name
usersWithAccess- Type
- array<UserShare>
- Description
The resulting per-user grants.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/agents/share \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentId": "V1StGXR8Z5",
"level": "SPECIFIC_MEMBER",
"usersToAdd": [
{ "userEmail": "sam@acme.com", "accessLevel": "WRITE" }
],
"usersToRemove": []
}'
{
"level": "SPECIFIC_MEMBER",
"usersWithAccess": [
{
"userEmail": "sam@acme.com",
"userId": "uB7nT2wQ9k",
"accessLevel": "WRITE"
}
],
"errors": []
}
Get sharing details
/agents/get-sharing-detailsReturns the agent's current sharing configuration and the calling user's own access level.
Request parameters
- Name
agentId- Type
- string
- Description
The agent to inspect.
Response
- Name
sharingLevel- Type
- string
- Description
PRIVATE,SPECIFIC_MEMBER, orCOMPANY.
- Name
companyPermissionLevel- Type
- string
- Description
Access level granted company-wide, when
sharingLevelisCOMPANY.
- Name
sharedWith- Type
- array<UserShare>
- Description
Per-user grants:
userEmail,userId,accessLevel.
- Name
userAccessLevel- Type
- string
- Description
The calling user's effective access level.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/agents/get-sharing-details \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "agentId": "V1StGXR8Z5" }'
{
"sharingLevel": "SPECIFIC_MEMBER",
"companyPermissionLevel": null,
"sharedWith": [
{
"userEmail": "sam@acme.com",
"userId": "uB7nT2wQ9k",
"accessLevel": "WRITE"
}
],
"userAccessLevel": "ADMIN",
"errors": []
}
Transfer ownership
/agents/transfer-ownershipTransfers the agent to another member of the company. Only the current owner may call this, and the new owner must already have some access to the agent (share it with them first).
Request parameters
- Name
agentId- Type
- string
- Description
The agent to transfer.
- Name
newOwnerId- Type
- string
- Description
User ID of the new owner. Must be a member of the company with existing access to the agent.
Response
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred (for example
"New owner does not have access to agent yet.").
curl https://api.autessa.com/autessa_poweruser/agents/transfer-ownership \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentId": "V1StGXR8Z5",
"newOwnerId": "uB7nT2wQ9k"
}'
{
"errors": []
}
Generate an audio upload link
/agents/generate-audio-upload-linkReturns a pre-signed S3 URL for uploading a WAV audio file. Upload the file
with an HTTP PUT to uploadUrl, then reference the returned s3Uri
wherever an audio input is accepted.
Request parameters
None — send an empty object {} (WAV format is currently fixed).
Response
- Name
uploadUrl- Type
- string
- Description
Pre-signed URL;
PUTthe file bytes here withContent-Type: audio/wav.
- Name
s3Uri- Type
- string
- Description
S3 URI to reference the uploaded file.
- Name
expiresInSeconds- Type
- integer
- Description
How long the upload URL stays valid.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/agents/generate-audio-upload-link \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{}'
# Then upload the file:
curl -X PUT "$UPLOAD_URL" \
-H "Content-Type: audio/wav" \
--data-binary '@recording.wav'
{
"uploadUrl": "https://s3.amazonaws.com/autessa-audio/...",
"s3Uri": "s3://autessa-audio/company-cP2mK7dX4v/audio-8f3a.wav",
"expiresInSeconds": 3600,
"errors": []
}
Generate an image upload link
/agents/generate-image-upload-linkReturns a pre-signed S3 URL for uploading an image.
Request parameters
- Name
fileExtension- Type
- string
- Description
"png","jpg", or"jpeg". Defaults to"png".
Response
- Name
uploadUrl- Type
- string
- Description
Pre-signed URL;
PUTthe file bytes here.
- Name
s3Uri- Type
- string
- Description
S3 URI to reference the uploaded file.
- Name
mimeType- Type
- string
- Description
MIME type to send as
Content-Typeon the upload.
- Name
expiresInSeconds- Type
- integer
- Description
How long the upload URL stays valid.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/agents/generate-image-upload-link \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "fileExtension": "png" }'
{
"uploadUrl": "https://s3.amazonaws.com/autessa-images/...",
"s3Uri": "s3://autessa-images/company-cP2mK7dX4v/image-2b7c.png",
"mimeType": "image/png",
"expiresInSeconds": 3600,
"errors": []
}
Generate a file upload link
/agents/generate-file-upload-linkReturns a pre-signed S3 URL for uploading an arbitrary document.
Request parameters
- Name
fileExtension- Type
- string
- Description
File extension, for example
"pdf","docx","txt".
Response
- Name
uploadUrl- Type
- string
- Description
Pre-signed URL;
PUTthe file bytes here.
- Name
s3Uri- Type
- string
- Description
S3 URI to reference the uploaded file.
- Name
mimeType- Type
- string
- Description
MIME type to send as
Content-Typeon the upload.
- Name
expiresInSeconds- Type
- integer
- Description
How long the upload URL stays valid.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/agents/generate-file-upload-link \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "fileExtension": "pdf" }'
{
"uploadUrl": "https://s3.amazonaws.com/autessa-files/...",
"s3Uri": "s3://autessa-files/company-cP2mK7dX4v/file-9d1e.pdf",
"mimeType": "application/pdf",
"expiresInSeconds": 3600,
"errors": []
}
Errors
| Status | When |
|---|---|
200 | Success — check errors for validation messages (blank name/description on create, missing versionToRollback, conversation not found). |
401 | The linked user lacks the required access level (see the access table), or is not the owner for transfer-ownership. |
403 | Scoped key without the endpoint in its allow-list. |
408 | Server-side error; errors contains the message. |