Object reference
The main objects the API sends and receives, field by field.
Fields are camelCase. Optional fields that are null are left out of responses.
BotProfile
| Field | Type | |
|---|---|---|
id |
string | Stable id |
name, job |
string | |
askMeFor |
string | What other bots can hand it |
instructions |
string | |
modelKey |
string | A key from GET /models |
effort |
string | Quick, Balanced, Deep or Max |
color |
int | Its colour: an index into the avatar palette |
body |
string | Its blot shape |
worksIn |
string | Auto, Browser, Computer or ThisPc |
canBrowse |
bool | May use the built-in browser |
memoryEnabled, memoryAutoLearn |
bool | Long-term memory, and learning facts by itself |
skillDrafting |
bool | Drafts skills from its work |
plugins |
string[] or null | Plugin ids it may use; null means every connected plugin |
skills |
string[] | Skill names it uses |
logins |
string[] | Login ids it may use |
quillSites, blotterSites |
string[] | Site ids it works on |
blotterAgentIds |
object | Read-only: its agent id on each Blotter site |
isGroup |
bool | A group chat |
members |
string[] | A group's bot ids |
chiefId |
string | A group's coordinator |
isChief |
bool | The team's Chief of Staff |
goal |
object | Read-only here; set with PUT /bots/{id}/goal |
created, updated |
date |
BotConversation
| Field | |
|---|---|
profile |
BotProfile |
messages |
SavedMessage[], oldest first |
runningTurnId |
The turn running now, if any |
pendingApprovals |
ApprovalPrompt[] waiting for an answer |
pendingQuestions |
QuestionPrompt[] waiting for an answer |
context |
{ usedTokens, windowTokens, condensedMessages, modelName, measured } |
pendingHandoffs |
Hand-offs whose results will come back here |
SavedMessage
| Field | |
|---|---|
id |
Stable id |
fromUser |
true for your messages (and messages other bots sent this one) |
text |
The text |
at |
When it was sent |
attachments |
{ name, mediaType, kind, fileName, size }[] (fetch with GET /bots/{id}/attachments/{fileName}) |
work |
A reply's work log: { seconds, stopped, steps: [{ kind, title, detail, succeeded, summary }] } |
metrics |
A reply's tokens, timing and cost: modelName, inputTokens, cachedInputTokens, outputTokens, reasoningTokens, requests, totalSeconds, firstTokenSeconds, costUsd, estimated… |
changes |
Files the reply changed: { path, status, added, removed, undone }[] |
pinned |
Pinned |
replyToId, replyExcerpt, replyAuthor |
The message it replies to |
authorId, authorName |
In a group chat, the member who wrote it |
isNotice |
An error or "stopped" note that's never sent to the model |
routineId, routineName |
Sent by a routine |
triggerId, triggerName, triggerPayload |
Started by a webhook |
ApprovalPrompt
| Field | |
|---|---|
id |
Answer with POST /approvals/{id} |
kind |
Read, Edit, Execute, Network, App or Other |
title, detail |
What it wants to do |
modelReason |
Why, in the model's words |
outsideWorkspace |
Paths outside the workspace |
commandPattern |
What AllowCommand would add to the allowlist |
scope |
Set for computer hand-overs |
QuestionPrompt
{
"id": "q-7f2…",
"botName": "Scout",
"at": "2026-10-30T14:05:00+00:00",
"questions": [
{
"question": "Which database should the report use?",
"header": "Database",
"multiple": false,
"options": [ { "label": "PostgreSQL", "description": "Production, read-only" }, { "label": "SQLite" } ]
}
]
}
ProviderState
id, name, tagline, kind, auth (ApiKey, ServerUrl, ServerUrlAndKey, ChatGptSignIn, AgentCli or Managed), connected, accountLabel, baseUrl, models ({ id, name, enabled, contextTokens }[]), agentInstalled, agentManagesAccounts, canSignInHere.
PluginState
id, name, tagline, description, category, isCustom, transport, url, command, args, envKeys and headerKeys (names only), auth, usesOAuth, hasSavedKey, connected, accountLabel, lastError, tools ({ name, title, description, readOnly, enabled }[]) and, for Composio, connectedApps.
Routine
id, name, botId, instructions, enabled, schedule, time, days, dayOfMonth, everyMinutes, at, timeLimitMinutes, continuity, and, read-only, created, lastRun, lastStatus, runCount, nextRun and summary.
Trigger
id, name, botId, instructions, enabled, events, and, read-only, created, lastFired, lastStatus, fireCount and url.
Incident
id, kind, botId, botName, conversationId (the chat to open), source (routine, handoff or goal) and sourceId, what, error, created, resolvedAt, resolution, notes.
UsageRow
date, botId, botName, modelName, replies, requests, inputTokens, cachedInputTokens, outputTokens, costUsd, estimatedReplies.