intentic
Create your workspace
Agents

The fleet

Every registered conversation, its accumulated diff, and landing or discarding its work

On this page(19 sections)

The roster rather than the turn. Each conversation works in its own private copy of the repos, so it has a cumulative set of changes you can read and two ways for it to end: merge that work into the shared tree, or throw it away. The rest is the bookkeeping a board needs — renaming, marking read, archiving, purging.

19 calls. Pick one to open it, or use the list on the right.

GET/agentsEvery live conversation

The fleet as the board draws it: each conversation with its title, what it is doing, when it last moved and whether anybody has read it since. Archived conversations are not in here.

What you send

Nothing. Call it as it is.

What comes back

FieldType
agentsThe conversationsobject[]
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (11)
failureWhy the last turn failed, in…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
tierHow hard its last turn looked…"fast" | "standard"
tierHoldWhether this conversation is pinned to…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
resumeAfterOutageboolean
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensTokens sentnumber
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
startedAtWhen the running turn started, in…number
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
serviceIt wants to spend money on…boolean
capabilityIt needs something connected that is…boolean
conflictIts work cannot be merged without…boolean
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsHelper agents this one delegated toobject
runningHelpers working right nownumber
totalHelpers it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (7)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
archivedAtWhen it was put away, in…number
revWhich version of the fleet this…number
heldAutomations waiting at the door for…object[]
idThis waiting item's own id, which…string
automationIdWhich automation it came fromstring
payloadWhat set it off, kept whole…string
originWhere the message came from, kept…object
automationIdstring
providerstring
channelIdstring
authorstring
titleWhat the conversation would be calledstring
conversationIdThe thread this belongs to, when…string
sessionIdThe provider session that thread last…string
createdAtWhen it started waiting, in millisecondsnumber
autoRunAtWhen it goes ahead on its…number
Try itanswered in this tab
curl
curl "$SANDBOX/agents" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.list();
GET/agents/archivedConversations put away

The same shape as the live fleet, for the conversations somebody has decided are finished. Their work is kept, and any one of them can be brought back.

What you send

Nothing. Call it as it is.

What comes back

FieldType
agentsThe conversationsobject[]
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (11)
failureWhy the last turn failed, in…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
tierHow hard its last turn looked…"fast" | "standard"
tierHoldWhether this conversation is pinned to…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
resumeAfterOutageboolean
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensTokens sentnumber
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
startedAtWhen the running turn started, in…number
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
serviceIt wants to spend money on…boolean
capabilityIt needs something connected that is…boolean
conflictIts work cannot be merged without…boolean
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsHelper agents this one delegated toobject
runningHelpers working right nownumber
totalHelpers it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (7)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
archivedAtWhen it was put away, in…number
revWhich version of the fleet this…number
heldAutomations waiting at the door for…object[]
idThis waiting item's own id, which…string
automationIdWhich automation it came fromstring
payloadWhat set it off, kept whole…string
originWhere the message came from, kept…object
automationIdstring
providerstring
channelIdstring
authorstring
titleWhat the conversation would be calledstring
conversationIdThe thread this belongs to, when…string
sessionIdThe provider session that thread last…string
createdAtWhen it started waiting, in millisecondsnumber
autoRunAtWhen it goes ahead on its…number
Try itanswered in this tab
curl
curl "$SANDBOX/agents/archived" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.archived();
GET/agents/{id}One conversation's card

Everything the board shows for a single conversation: its title, state, working branch, unread marker and timestamps.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (11)
failureWhy the last turn failed, in…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
tierHow hard its last turn looked…"fast" | "standard"
tierHoldWhether this conversation is pinned to…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
resumeAfterOutageboolean
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensTokens sentnumber
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
startedAtWhen the running turn started, in…number
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
serviceIt wants to spend money on…boolean
capabilityIt needs something connected that is…boolean
conflictIts work cannot be merged without…boolean
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsHelper agents this one delegated toobject
runningHelpers working right nownumber
totalHelpers it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (7)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.get({
  "id": "a1b2c3d4"
});
GET/agents/{id}/transcriptThe full conversation record

Every message in one conversation, in order, including the tool calls and their results. This is the record the chat replays and the next turn is seeded from.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
messagesThe conversation, in orderobject[]
roleWho said it"user" | "assistant" | "notice"
textThe wordsstring
sentAtWhen it was sent, in millisecondsnumber
attachmentsFiles attached to this message, as…string[]
checkpointIdThe saved point this message can…string
thinkingWhat the agent was reasoning aboutstring
toolsThe tool calls this part of…object[]
idThe call's idstring
nameWhich toolstring
categoryWhat kind of thing it does:…"read" | "edit" | "delete" | "move" … (9)
statusHow it went"pending" | "in_progress" | "completed" | "failed"
targetWhat it acted on, in one…string
locationsThe files it touchedobject[]
pathThe file, as a workspace path,…string
lineWhich line, counting from onenumber
contentWhat it produced: text, a change…object[]
typePlain output"text"
textWhat the tool saidstring
childrenCalls a delegated helper made, nested…object[]
idThe call's idstring
nameWhich toolstring
categoryWhat kind of thing it does:…"read" | "edit" | "delete" | "move" … (9)
statusHow it went"pending" | "in_progress" | "completed" | "failed"
targetWhat it acted on, in one…string
locationsThe files it touchedobject[]
contentWhat it produced: text, a change…object[]
childrenCalls a delegated helper made, nested…object[]
thinkingWhat the agent was reasoning about…string
thinkingWhat the agent was reasoning about…string
notesWhat the sandbox added to this…object[]
titleThe one line a reader sees,…string
textThe note itself, which is also…string
placedA person wrote this in the…boolean
noticeActionA one-press follow-up this recorded notice…"tierHold"
sessionIdThe provider session behind the last…string
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4/transcript" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.transcript({
  "id": "a1b2c3d4"
});
POST/agents/{id}/placePut words in the agent's mouth

Writes a line into the record as though the agent had said it, with no turn behind it and no reply. Human readers see it marked as placed. The next real turn starts fresh from the record, where the line reads as the agent's own. Refused while a turn is running.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
textrequiredThe words to put in the…stringbody

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/place" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"text":"export const start = () => listen(PORT);\n"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.place({
  "id": "a1b2c3d4",
  "text": "export const start = () => listen(PORT);\n"
});
POST/agents/{id}/renameRetitle a conversation

Sets the title a person chose, replacing the one that was generated. Allowed while the conversation is working, and it does not count as activity.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
titlerequiredWhat to call it from now…stringbody

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (11)
failureWhy the last turn failed, in…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
tierHow hard its last turn looked…"fast" | "standard"
tierHoldWhether this conversation is pinned to…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
resumeAfterOutageboolean
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensTokens sentnumber
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
startedAtWhen the running turn started, in…number
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
serviceIt wants to spend money on…boolean
capabilityIt needs something connected that is…boolean
conflictIts work cannot be merged without…boolean
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsHelper agents this one delegated toobject
runningHelpers working right nownumber
totalHelpers it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (7)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/rename" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"title":"Update the changelog"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.rename({
  "id": "a1b2c3d4",
  "title": "Update the changelog"
});
POST/agents/{id}/auto-landWhether this conversation merges its work automatically

Overrides the sandbox-wide setting for one conversation; clear it to go back to following the default. Deliberately allowed mid-turn, because the setting is read when the turn finishes, so flipping it while the agent works means exactly hold this piece of work for review.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
autoLandrequiredWhether its work merges automatically when…boolean | nullbody

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (11)
failureWhy the last turn failed, in…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
tierHow hard its last turn looked…"fast" | "standard"
tierHoldWhether this conversation is pinned to…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
resumeAfterOutageboolean
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensTokens sentnumber
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
startedAtWhen the running turn started, in…number
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
serviceIt wants to spend money on…boolean
capabilityIt needs something connected that is…boolean
conflictIts work cannot be merged without…boolean
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsHelper agents this one delegated toobject
runningHelpers working right nownumber
totalHelpers it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (7)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/auto-land" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"autoLand":true}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.autoLand({
  "id": "a1b2c3d4",
  "autoLand": true
});
POST/agents/{id}/resume-after-outageWhether this conversation retries after a provider outage

Overrides the sandbox-wide setting for one conversation; clear it to follow the default again. This is what the offer shown when a turn dies writes, because the press happens inside one conversation and honestly means finish this piece of work.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
resumeAfterOutagerequiredWhether it retries by itself when…boolean | nullbody

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (11)
failureWhy the last turn failed, in…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
tierHow hard its last turn looked…"fast" | "standard"
tierHoldWhether this conversation is pinned to…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
resumeAfterOutageboolean
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensTokens sentnumber
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
startedAtWhen the running turn started, in…number
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
serviceIt wants to spend money on…boolean
capabilityIt needs something connected that is…boolean
conflictIts work cannot be merged without…boolean
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsHelper agents this one delegated toobject
runningHelpers working right nownumber
totalHelpers it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (7)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/resume-after-outage" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"resumeAfterOutage":true}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.resumeAfterOutage({
  "id": "a1b2c3d4",
  "resumeAfterOutage": true
});
POST/agents/{id}/seenMark a conversation read

Stamps the read marker behind the unread badge on one card. Allowed while the conversation is working, and reading never counts as activity.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (11)
failureWhy the last turn failed, in…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
tierHow hard its last turn looked…"fast" | "standard"
tierHoldWhether this conversation is pinned to…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
resumeAfterOutageboolean
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensTokens sentnumber
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
startedAtWhen the running turn started, in…number
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
serviceIt wants to spend money on…boolean
capabilityIt needs something connected that is…boolean
conflictIts work cannot be merged without…boolean
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsHelper agents this one delegated toobject
runningHelpers working right nownumber
totalHelpers it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (7)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/seen" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.seen({
  "id": "a1b2c3d4"
});
POST/agents/seenMark every conversation read

Clears the unread badge across the whole fleet at once, and hands the refreshed list back.

What you send

Nothing. Call it as it is.

What comes back

FieldType
agentsThe conversationsobject[]
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (11)
failureWhy the last turn failed, in…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
tierHow hard its last turn looked…"fast" | "standard"
tierHoldWhether this conversation is pinned to…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
resumeAfterOutageboolean
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensTokens sentnumber
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
startedAtWhen the running turn started, in…number
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
serviceIt wants to spend money on…boolean
capabilityIt needs something connected that is…boolean
conflictIts work cannot be merged without…boolean
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsHelper agents this one delegated toobject
runningHelpers working right nownumber
totalHelpers it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (7)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
archivedAtWhen it was put away, in…number
revWhich version of the fleet this…number
heldAutomations waiting at the door for…object[]
idThis waiting item's own id, which…string
automationIdWhich automation it came fromstring
payloadWhat set it off, kept whole…string
originWhere the message came from, kept…object
automationIdstring
providerstring
channelIdstring
authorstring
titleWhat the conversation would be calledstring
conversationIdThe thread this belongs to, when…string
sessionIdThe provider session that thread last…string
createdAtWhen it started waiting, in millisecondsnumber
autoRunAtWhen it goes ahead on its…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/seen" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.seenAll();
GET/agents/{id}/diffEverything a conversation has changed

One flat set of changed files per repo, measured against where each repo stood when the conversation started, with every file flagged as already merged or not. Not the staged-and-unstaged shape a working copy has, because nobody ever checks this branch out to stage into it.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
reposOne entry per repository the conversation…object[]
repoWhich repositorystring
branchThe branch this conversation's work sits…string
changesWhat it changed thereobject[]
pathThe path, relative to the repository…string
statusWhat happened to it"added" | "modified" | "deleted" | "renamed" … (6)
fromWhere a renamed file came fromstring
additionsLines addednumber
deletionsLines removednumber
landedWhether this change is already in…boolean
modulesThe packages of the tree these…object[]
dirWhere the package lives, relative to…string
nameThe name the package declares for…string
conflictsWhy the last merge refused, when…object[]
repoWhich repositorystring
pathsThe files that genuinely would not…object[]
pathWhich filestring
reasonWhy it would not merge, and…"workspace" | "diverged" | "binary"
cleanHow many files would apply regardless,…number
mainBranchThe branch your own checkout is…string
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4/diff" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.diff({
  "id": "a1b2c3d4"
});
GET/agents/{id}/{repo}/file-diffOne file's before and after in a conversation's work

Both sides of a single file: what it held when the conversation started and what it holds on its branch now.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress
reporequiredWhich repositorystringaddress
pathrequiredWhich file, relative to that repositorystringquery

What comes back

FieldType
beforeThe whole file as it wasstring
afterThe whole file as it is…string
binaryThe file is not text, so…boolean
truncatedThe file was too large to…boolean
Try itanswered in this tab
curl
curl "$SANDBOX/agents/a1b2c3d4/root/file-diff?path=src%2Fapp.ts" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.fileDiff({
  "id": "a1b2c3d4",
  "repo": "root",
  "path": "src/app.ts"
});
POST/agents/{id}/landMerge a conversation's work into the workspace

Brings the conversation's branches into the main tree, one repo at a time. A conflict is reported rather than raised and nothing is lost when it fails. Refused while a turn is running, and refused for a conversation that works directly in the shared tree, which has nothing to merge.

What you send

FieldTypeWhere
idrequiredWhich conversation's work to mergestringaddress
modeHow to apply it"check" | "merge" | "measure"body
spanHow much of the work to…"cumulative" | "outstanding"body
forceGo ahead despite a check that…booleanbody

What comes back

FieldType
landedWhether anything was appliedboolean
conflictsWhat stopped it, per repositoryobject[]
repoWhich repositorystring
pathsThe files that genuinely would not…object[]
pathWhich filestring
reasonWhy it would not merge, and…"workspace" | "diverged" | "binary"
cleanHow many files would apply regardless,…number
mainBranchThe branch your own checkout is…string
resolvingFiles left half-merged, when you asked…object[]
repoWhich repositorystring
pathsWhich files now hold conflict markers…string[]
heldNothing was applied and nothing failed:…boolean
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/land" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"mode":"check","span":"cumulative","force":false}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.land({
  "id": "a1b2c3d4",
  "mode": "check",
  "span": "cumulative",
  "force": false
});
POST/agents/{id}/request-landAsk a maintainer to merge this work

For a collaborator who is not allowed to merge: marks the conversation as waiting for review, with who asked. The request shows on every maintainer's board and clears when somebody merges or discards it.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (11)
failureWhy the last turn failed, in…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
tierHow hard its last turn looked…"fast" | "standard"
tierHoldWhether this conversation is pinned to…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
resumeAfterOutageboolean
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensTokens sentnumber
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
startedAtWhen the running turn started, in…number
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
serviceIt wants to spend money on…boolean
capabilityIt needs something connected that is…boolean
conflictIts work cannot be merged without…boolean
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsHelper agents this one delegated toobject
runningHelpers working right nownumber
totalHelpers it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (7)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
archivedAtWhen it was put away, in…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/request-land" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.requestLand({
  "id": "a1b2c3d4"
});
POST/agents/{id}/discardThrow a conversation's work away

Deletes the conversation's working copies, its branches and its entry. Nothing is kept. Refused while a turn is running, and refused for a conversation working in the shared tree.

What you send

FieldTypeWhere
idrequiredWhich conversationstringaddress

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/a1b2c3d4/discard" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.discard({
  "id": "a1b2c3d4"
});
POST/agents/archivePut conversations away

The gentle counterpart to discarding. Commits whatever the conversation still has in progress onto its own branch, releases its working copy, and keeps the entry and the record. It leaves the live fleet and joins the archive. Refused for a conversation that is running.

What you send

FieldTypeWhere
idsWhich conversations to put awaystring[]body

What comes back

FieldType
movedWhat actually moved, whole, rather than…object[]
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (11)
failureWhy the last turn failed, in…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
tierHow hard its last turn looked…"fast" | "standard"
tierHoldWhether this conversation is pinned to…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
resumeAfterOutageboolean
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensTokens sentnumber
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
startedAtWhen the running turn started, in…number
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
serviceIt wants to spend money on…boolean
capabilityIt needs something connected that is…boolean
conflictIts work cannot be merged without…boolean
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsHelper agents this one delegated toobject
runningHelpers working right nownumber
totalHelpers it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (7)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
archivedAtWhen it was put away, in…number
revThe version of the fleet that…number
failedThe conversations this press could not…object[]
idWhich conversation stayed on the boardstring
reasonWhy its working copy could not…string
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/archive" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"ids":["a1b2c3d4","e5f6a7b8"]}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.archive({
  "ids": [
    "a1b2c3d4",
    "e5f6a7b8"
  ]
});
POST/agents/unarchiveBring conversations back

Returns archived conversations to the live fleet. The next turn picks up a fresh working copy from the branch that was kept.

What you send

FieldTypeWhere
idsrequiredWhich conversationsstring[]body

What comes back

FieldType
movedWhat actually moved, whole, rather than…object[]
idThe conversation id, which is how…string
sessionIdThe provider session behind the last…string
titleWhat to call it: the first…string
statusWhat it is doing"idle" | "running" | "awaiting" | "stopping" … (11)
failureWhy the last turn failed, in…string
providerWhich model provider it runs onstring
harnessWhich agentic loop it runs on"native" | "claude-code"
modelWhat its last turn ran withstring
effortHow hard that turn was told…string
thinkingWhether that turn showed its reasoningboolean
fastWhether that turn asked for higher…boolean
tierHow hard its last turn looked…"fast" | "standard"
tierHoldWhether this conversation is pinned to…boolean
accountWhich connected account paid for itstring
branchThe branch its private copy works…string
autoLandThis conversation's own answer to whether…boolean
resumeAfterOutageboolean
landRequestedA collaborator has asked a maintainer…object
emailWho askedstring
nameTheir display namestring
atWhen they asked, in millisecondsnumber
originWhere the conversation came from when…object
automationIdstring
providerstring
channelIdstring
authorstring
forkedFromThe conversation this one was cut…object
conversationIdstring
indexinteger
files"then" | "now"
baseThe commit its private copy started…string
costUsdWhat it has cost so far,…number
inputTokensTokens sentnumber
outputTokensTokens receivednumber
contextTokensHow much of the window the…number
contextWindowHow large that window isnumber
activityWhat it is doing at this…object
toolThe last tool it reached forstring
targetWhat it reached for that tool…string
todoThe item on its own list…string
landedMessageDraftThe whole story of this merge's…object
startedAtWhen the drafting began, in millisecondsnumber
stepsEach model that was asked, in…object[]
providerWhich provider was askedstring
modelWhich of its modelsstring
statusHow this one went"asking" | "answered" | "refused" | "skipped"
atWhen it started being asked, in…number
msHow long it tooknumber
reasonWhy it refused, in its own…string
outcomeHow it ended"written" | "failed"
reasonThe one-line account of a failure,…string
finishedAtWhen it ended, in millisecondsnumber
landedMessageWhat this conversation's merged work is…object
subjectOne line saying what the merged…string
noteThe same change said to somebody…string
breakingWhat this change takes away, for…string
startedAtWhen the running turn started, in…number
updatedAtWhen it last did something, in…number
seenAtWhen somebody last opened it, in…number
attentionWhich kinds of waiting-for-you it is…object
planIt has proposed a plan and…boolean
questionIt has asked you somethingboolean
permissionIt wants to use a tool…boolean
serviceIt wants to spend money on…boolean
capabilityIt needs something connected that is…boolean
conflictIts work cannot be merged without…boolean
turnsTurns it has finishednumber
toolUsesTools it has used, over its…number
subagentsHelper agents this one delegated toobject
runningHelpers working right nownumber
totalHelpers it has started over its…number
diffEverything it has written, measured from…object
filesFiles touchednumber
insertionsLines addednumber
deletionsLines removednumber
landedPresencePresent only when some of what…object
landedPaths this conversation merged innumber
presentHow many of them are still…number
loopThe loop driving this conversation, if…object
stateHow the loop is going"running" | "done" | "exhausted" | "stalled" … (7)
iterationWhich round it is oninteger
maxIterationsHow many rounds it will attempt…integer
goalWhat it is looping towardsstring
workflowThe workflow run this conversation is…object
runIdThe run this belongs to, which…string
nameThe workflow's namestring
stepWhich step this conversation is on…string
indexThis step's place in the workflow,…integer
totalHow many steps the workflow hasinteger
archivedAtWhen it was put away, in…number
revThe version of the fleet that…number
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/unarchive" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"ids":["a1b2c3d4","e5f6a7b8"]}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.unarchive({
  "ids": [
    "a1b2c3d4",
    "e5f6a7b8"
  ]
});
POST/agents/purgeEmpty the archive for good

Discards every conversation already in the archive: working copies, branches and entries. The whole archive rather than a chosen few, because the archive is the pile somebody has already decided is over. A teardown that fails on one conversation leaves that one behind instead of taking the rest down with it.

What you send

Nothing. Call it as it is.

What comes back

FieldType
removedWhich conversations were deleted, as idsstring[]
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/agents/purge" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.agents.purge();

Type to search every page, in the docs and the API reference.