Skip to content

Depot aisettings

Registers the AI routes on the practice face, plus the per-client override.

This page is generated from the Depot route table. Every operation carries the permission it needs and the anchor an agent can link to.

POSTshared facehosteditmspremoteServer sent eventsNot fully resolved

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

What this page does not know
  • response

These are parts of the route the extractor could not read from the source. Everything else on this page came straight from it.

Source: [object Object]

Chat

Required, sent as application/json.

FieldTypeDescription
clientIdrequiredstring
messagesrequiredarray of Message
messages[].contentrequiredarray of Block
messages[].content[].datastring
messages[].content[].inputany

Arbitrary JSON.

messages[].content[].isErrorboolean
messages[].content[].mediaTypestring
messages[].content[].textstring
messages[].content[].toolNamestring
messages[].content[].toolUseIdstring
messages[].content[].typerequiredstring
messages[].rolerequiredstring, one of assistant, system, user
tierrequiredstring
StatusBodyDescription
200text/event-stream, stringSuccess. The body shape was not resolved; see x-outpost-unresolved.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
404application/problem+json, ProblemDetailsNo such client.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This endpoint streams server sent events. The response stays open.
curl -X POST 'https://depot.example.com/api/v1/ai/chat' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"clientId": "string",
"messages": [
{
"content": [
{
"data": "string",
"input": "string",
"isError": false,
"mediaType": "string",
"text": "string",
"toolName": "string",
"toolUseId": "string",
"type": "string"
}
],
"role": "assistant"
}
],
"tier": "string"
}'

GETai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

listConversations returns your Pioneer AI conversations, most recent activity first.

With all=1 and ai:review, every user’s. q searches the titles of the 500 most recent (pioneer_rewind.go). pinned=true or false narrows to the pinned conversations or the others (section 17).

NameInTypeRequiredDescription
allquerystringNo
cursorquerystringNo
limitquerystringNo
pinnedquerystringNo
qquerystringNo
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ai/conversations?all=<all>&cursor=<cursor>&limit=<limit>&pinned=<pinned>&q=<q>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

createConversation starts an empty Pioneer AI conversation.

On the MSP console clientId pins the client it is about.

Required, sent as application/json.

FieldTypeDescription
clientIdrequiredstring
tierrequiredstring
StatusBodyDescription
201application/json, PioneerConvViewCreated.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such client.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

201 response body

FieldTypeDescription
clientIdstring or null
contextTokensrequiredinteger
contextWindowrequiredinteger
createdAtrequiredstring (date-time)
idrequiredstring
lastActivityAtrequiredstring (date-time)
ownerNamerequiredstring
ownerUserIdrequiredstring
pendingPioneerPending

PioneerPending is "PioneerConversation"."PendingJson": ids only, never the tool arguments.

pending.approvalIdrequiredstring
pending.toolrequiredstring
pending.toolUseIdrequiredstring
pinnedrequiredboolean
statusrequiredstring
tierstring or null
titlerequiredstring
totalsrequiredPioneerTotalsView
totals.cacheReadTokensrequiredinteger

int64.

totals.cacheWriteTokensrequiredinteger

int64.

totals.costMicroCentsrequiredinteger

int64.

totals.inputTokensrequiredinteger

int64.

totals.outputTokensrequiredinteger

int64.

totals.reasoningTokensrequiredinteger

int64.

Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/ai/conversations' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"clientId": "string",
"tier": "string"
}'

GETai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

getConversation returns one conversation with its messages.

An ai:review holder may read anybody’s, read-only; every such view is audited.

NameInTypeRequiredDescription
idpathstringYes
StatusBodyDescription
200application/json, PioneerConvDetailSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
clientIdstring or null
contextTokensrequiredinteger
contextWindowrequiredinteger
createdAtrequiredstring (date-time)
idrequiredstring
lastActivityAtrequiredstring (date-time)
messagesrequiredarray of PioneerMsgView
messages[].attachmentsarray of AttachmentMeta
messages[].attachments[].kindrequiredstring, one of diagram, image, text
messages[].attachments[].mediaTyperequiredstring
messages[].attachments[].namerequiredstring
messages[].attachments[].sizerequiredinteger
messages[].blocksrequiredarray of PioneerBlockView
messages[].blocks[].datastring
messages[].blocks[].impactReasonstring
messages[].blocks[].inputany

Arbitrary JSON.

messages[].blocks[].isErrorboolean
messages[].blocks[].mediaTypestring
messages[].blocks[].textstring
messages[].blocks[].tierstring
messages[].blocks[].toolNamestring
messages[].blocks[].toolUseIdstring
messages[].blocks[].typerequiredstring
messages[].changesarray of string
messages[].createdAtrequiredstring (date-time)
messages[].feedbackinteger or null
messages[].mentionsarray of MentionMeta
messages[].mentions[].kindrequiredstring
messages[].mentions[].namerequiredstring
messages[].pagerequiredany

Arbitrary JSON.

messages[].rolerequiredstring
messages[].seqrequiredinteger
ownerNamerequiredstring
ownerUserIdrequiredstring
pendingPioneerPending

PioneerPending is "PioneerConversation"."PendingJson": ids only, never the tool arguments.

pending.approvalIdrequiredstring
pending.toolrequiredstring
pending.toolUseIdrequiredstring
pinnedrequiredboolean
queuedarray of PioneerQueuedView
queued[].attachmentErrorsarray of AttachmentErrorData
queued[].attachmentErrors[].messagerequiredstring
queued[].attachmentErrors[].namerequiredstring
queued[].attachmentsarray of AttachmentMeta
queued[].attachments[].kindrequiredstring, one of diagram, image, text
queued[].attachments[].mediaTyperequiredstring
queued[].attachments[].namerequiredstring
queued[].attachments[].sizerequiredinteger
queued[].createdAtrequiredstring (date-time)
queued[].idrequiredstring
queued[].mentionsarray of MentionMeta
queued[].mentions[].kindrequiredstring
queued[].mentions[].namerequiredstring
queued[].textrequiredstring
reviewOnlyrequiredboolean
statusrequiredstring
tierstring or null
titlerequiredstring
totalsrequiredPioneerTotalsView
totals.cacheReadTokensrequiredinteger

int64.

totals.cacheWriteTokensrequiredinteger

int64.

totals.costMicroCentsrequiredinteger

int64.

totals.inputTokensrequiredinteger

int64.

totals.outputTokensrequiredinteger

int64.

totals.reasoningTokensrequiredinteger

int64.

Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ai/conversations/<id>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PATCHai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

renameConversation changes a conversation’s title, pin or tier: any of them, at least one (section 17).

A tier must be one this organization can run on now; it applies from the next turn, and the context window follows.

NameInTypeRequiredDescription
idpathstringYes

Required, sent as application/json.

FieldTypeDescription
pinnedboolean or null
tierstring or null
titlestring or null
StatusBodyDescription
200application/json, PioneerConvViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsCould not update the conversation.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
clientIdstring or null
contextTokensrequiredinteger
contextWindowrequiredinteger
createdAtrequiredstring (date-time)
idrequiredstring
lastActivityAtrequiredstring (date-time)
ownerNamerequiredstring
ownerUserIdrequiredstring
pendingPioneerPending

PioneerPending is "PioneerConversation"."PendingJson": ids only, never the tool arguments.

pending.approvalIdrequiredstring
pending.toolrequiredstring
pending.toolUseIdrequiredstring
pinnedrequiredboolean
statusrequiredstring
tierstring or null
titlerequiredstring
totalsrequiredPioneerTotalsView
totals.cacheReadTokensrequiredinteger

int64.

totals.cacheWriteTokensrequiredinteger

int64.

totals.costMicroCentsrequiredinteger

int64.

totals.inputTokensrequiredinteger

int64.

totals.outputTokensrequiredinteger

int64.

totals.reasoningTokensrequiredinteger

int64.

Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X PATCH 'https://depot.example.com/api/v1/ai/conversations/<id>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"pinned": false,
"tier": "string",
"title": "string"
}'

DELETEai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

deleteConversation deletes a conversation, its messages and its pending approvals, and closes any shell it opened.

NameInTypeRequiredDescription
idpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsCould not delete the conversation.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X DELETE 'https://depot.example.com/api/v1/ai/conversations/<id>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

listActions returns the conversation’s tool calls in order: what each did, how it ended, and whether Undo can reverse it, with what the reversal does and its tier.

NameInTypeRequiredDescription
idpathstringYes
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ai/conversations/<id>/actions' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/ai/conversations/{id}/diagrams/{toolUseId}

Section titled “GET /api/v1/ai/conversations/{id}/diagrams/{toolUseId}”

GETai:useshared facehosteditmspremoteIdempotentdownloadNot fully resolved

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

What this page does not know
  • response

These are parts of the route the extractor could not read from the source. Everything else on this page came straight from it.

Source: [object Object]

getDiagram renders one create_diagram call of a conversation as .drawio, PNG or the laid-out graph JSON (NETWORK_MAP_CONTRACTS.md 7.3).

The owner, or an ai:review holder (audited), may download it.

NameInTypeRequiredDescription
idpathstringYes
toolUseIdpathstringYes
formatquerystringNo
StatusBodyDescription
200application/octet-stream, string (binary)Success. The body shape was not resolved; see x-outpost-unresolved.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ai/conversations/<id>/diagrams/<toolUseId>?format=<format>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/ai/conversations/{id}/documents/{toolUseId}

Section titled “GET /api/v1/ai/conversations/{id}/documents/{toolUseId}”

GETai:useshared facehosteditmspremoteIdempotentdownloadNot fully resolved

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

What this page does not know
  • response

These are parts of the route the extractor could not read from the source. Everything else on this page came straight from it.

Source: [object Object]

getDocument renders one create_document call of a conversation as Markdown, PDF or Word.

The owner, or an ai:review holder (audited), may download it.

NameInTypeRequiredDescription
idpathstringYes
toolUseIdpathstringYes
formatquerystringNo
StatusBodyDescription
200application/octet-stream, string (binary)Success. The body shape was not resolved; see x-outpost-unresolved.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ai/conversations/<id>/documents/<toolUseId>?format=<format>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/ai/conversations/{id}/messages

Section titled “POST /api/v1/ai/conversations/{id}/messages”

POSTshared facehosteditmspremoteServer sent eventsNot fully resolved

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

What this page does not know
  • response

These are parts of the route the extractor could not read from the source. Everything else on this page came straight from it.

Source: [object Object]

postMessage sends a message to Pioneer AI and streams the turn as server-sent events: text as it is written, each tool call and result, confirmation requests, usage, and one done or error event at the end.

NameInTypeRequiredDescription
idpathstringYes

Required, sent as application/json.

FieldTypeDescription
attachmentsrequiredarray of PioneerAttachmentBody
attachments[].datarequiredstring
attachments[].mediaTyperequiredstring
attachments[].namerequiredstring
attachments[].textrequiredstring
mentionsrequiredarray of PioneerMentionBody
mentions[].clientIdrequiredstring
mentions[].idrequiredstring
mentions[].kindrequiredstring
pagePageContext

PageContext is the page the user was on when they sent the message.

page.entityPageEntity
page.entity.idrequiredstring
page.entity.kindrequiredstring
page.pathrequiredstring
page.terminalsarray of PageTerminal
page.terminals[].interpreterstring
page.terminals[].labelrequiredstring
page.terminals[].osstring
page.terminals[].tabIdrequiredstring
page.titlestring
textrequiredstring
tierrequiredstring
timeZonerequiredstring
StatusBodyDescription
200text/event-stream, stringSuccess. The body shape was not resolved; see x-outpost-unresolved.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This endpoint streams server sent events. The response stays open.
curl -X POST 'https://depot.example.com/api/v1/ai/conversations/<id>/messages' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"attachments": [
{
"data": "string",
"mediaType": "string",
"name": "string",
"text": "string"
}
],
"mentions": [
{
"clientId": "string",
"id": "string",
"kind": "string"
}
],
"page": {
"entity": {
"id": "string",
"kind": "string"
},
"path": "string",
"terminals": [
{
"interpreter": "string",
"label": "string",
"os": "string",
"tabId": "string"
}
],
"title": "string"
},
"text": "string",
"tier": "string",
"timeZone": "string"
}'

PUT /api/v1/ai/conversations/{id}/messages/{seq}/feedback

Section titled “PUT /api/v1/ai/conversations/{id}/messages/{seq}/feedback”

PUTai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

putFeedback rates one of Pioneer’s replies, replacing an earlier rating.

NameInTypeRequiredDescription
idpathstringYes
seqpathstringYes

Required, sent as application/json.

FieldTypeDescription
noterequiredstring
ratinginteger or null
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsCould not save the feedback.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X PUT 'https://depot.example.com/api/v1/ai/conversations/<id>/messages/<seq>/feedback' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"note": "string",
"rating": 0
}'

GETai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

listQueuedInputs lists the input still waiting for Pioneer to read, oldest first.

Input left when a turn ended without reading it stays here until it is sent as a message or removed.

NameInTypeRequiredDescription
idpathstringYes
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsCould not read the queued messages.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ai/conversations/<id>/queue' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

queueInput adds input for Pioneer to read at its next step, while it is working on a turn.

It takes the body POST /messages does (page, tier and timeZone are the running turn’s and are ignored) and is checked the same way. Answers 202 with the queued input; 409 not_running or awaiting_approval when no turn is running to take it.

NameInTypeRequiredDescription
idpathstringYes

Required, sent as application/json.

FieldTypeDescription
attachmentsrequiredarray of PioneerAttachmentBody
attachments[].datarequiredstring
attachments[].mediaTyperequiredstring
attachments[].namerequiredstring
attachments[].textrequiredstring
mentionsrequiredarray of PioneerMentionBody
mentions[].clientIdrequiredstring
mentions[].idrequiredstring
mentions[].kindrequiredstring
pagePageContext

PageContext is the page the user was on when they sent the message.

page.entityPageEntity
page.entity.idrequiredstring
page.entity.kindrequiredstring
page.pathrequiredstring
page.terminalsarray of PageTerminal
page.terminals[].interpreterstring
page.terminals[].labelrequiredstring
page.terminals[].osstring
page.terminals[].tabIdrequiredstring
page.titlestring
textrequiredstring
tierrequiredstring
timeZonerequiredstring
StatusBodyDescription
202application/json, PioneerQueuedViewAccepted.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

202 response body

FieldTypeDescription
attachmentErrorsarray of AttachmentErrorData
attachmentErrors[].messagerequiredstring
attachmentErrors[].namerequiredstring
attachmentsarray of AttachmentMeta
attachments[].kindrequiredstring, one of diagram, image, text
attachments[].mediaTyperequiredstring
attachments[].namerequiredstring
attachments[].sizerequiredinteger
createdAtrequiredstring (date-time)
idrequiredstring
mentionsarray of MentionMeta
mentions[].kindrequiredstring
mentions[].namerequiredstring
textrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/ai/conversations/<id>/queue' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"attachments": [
{
"data": "string",
"mediaType": "string",
"name": "string",
"text": "string"
}
],
"mentions": [
{
"clientId": "string",
"id": "string",
"kind": "string"
}
],
"page": {
"entity": {
"id": "string",
"kind": "string"
},
"path": "string",
"terminals": [
{
"interpreter": "string",
"label": "string",
"os": "string",
"tabId": "string"
}
],
"title": "string"
},
"text": "string",
"tier": "string",
"timeZone": "string"
}'

DELETE /api/v1/ai/conversations/{id}/queue/{queuedId}

Section titled “DELETE /api/v1/ai/conversations/{id}/queue/{queuedId}”

DELETEai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

deleteQueuedInput removes input before Pioneer reads it.

Answers 404 once Pioneer has taken it.

NameInTypeRequiredDescription
idpathstringYes
queuedIdpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsCould not remove the queued message.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X DELETE 'https://depot.example.com/api/v1/ai/conversations/<id>/queue/<queuedId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTshared facehosteditmspremoteServer sent eventsNot fully resolved

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

What this page does not know
  • response

These are parts of the route the extractor could not read from the source. Everything else on this page came straight from it.

Source: [object Object]

resumeConversation continues a conversation: it re-runs the action that was waiting for approval, with the same arguments, or picks up a turn that was interrupted.

Streams like messages.

NameInTypeRequiredDescription
idpathstringYes

Required, sent as application/json.

FieldTypeDescription
attachmentsrequiredarray of PioneerAttachmentBody
attachments[].datarequiredstring
attachments[].mediaTyperequiredstring
attachments[].namerequiredstring
attachments[].textrequiredstring
mentionsrequiredarray of PioneerMentionBody
mentions[].clientIdrequiredstring
mentions[].idrequiredstring
mentions[].kindrequiredstring
pagePageContext

PageContext is the page the user was on when they sent the message.

page.entityPageEntity
page.entity.idrequiredstring
page.entity.kindrequiredstring
page.pathrequiredstring
page.terminalsarray of PageTerminal
page.terminals[].interpreterstring
page.terminals[].labelrequiredstring
page.terminals[].osstring
page.terminals[].tabIdrequiredstring
page.titlestring
textrequiredstring
tierrequiredstring
timeZonerequiredstring
StatusBodyDescription
200text/event-stream, stringSuccess. The body shape was not resolved; see x-outpost-unresolved.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This endpoint streams server sent events. The response stays open.
curl -X POST 'https://depot.example.com/api/v1/ai/conversations/<id>/resume' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"attachments": [
{
"data": "string",
"mediaType": "string",
"name": "string",
"text": "string"
}
],
"mentions": [
{
"clientId": "string",
"id": "string",
"kind": "string"
}
],
"page": {
"entity": {
"id": "string",
"kind": "string"
},
"path": "string",
"terminals": [
{
"interpreter": "string",
"label": "string",
"os": "string",
"tabId": "string"
}
],
"title": "string"
},
"text": "string",
"tier": "string",
"timeZone": "string"
}'

POSTai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

rewindConversation deletes the messages from beforeSeq on.

beforeSeq must be one of the user’s messages, so the transcript stays well formed.

NameInTypeRequiredDescription
idpathstringYes

Required, sent as application/json.

FieldTypeDescription
beforeSeqinteger or null
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsCould not rewind the conversation.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/ai/conversations/<id>/rewind' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"beforeSeq": 0
}'

POST /api/v1/ai/conversations/{id}/shells/{shellId}/input

Section titled “POST /api/v1/ai/conversations/{id}/shells/{shellId}/input”

POSTai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

shellInput types the technician’s keystrokes into Pioneer’s shell and holds it for them: shell_send is refused until Hand back or 10 minutes without input.

data is written unchanged.

NameInTypeRequiredDescription
idpathstringYes
shellIdpathstringYes

Required, sent as application/json.

FieldTypeDescription
datarequiredstring
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/ai/conversations/<id>/shells/<shellId>/input' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"data": "string"
}'

GET /api/v1/ai/conversations/{id}/shells/{shellId}/output

Section titled “GET /api/v1/ai/conversations/{id}/shells/{shellId}/output”

GETai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

shellOutput returns the shell’s output events after the after seq, from its kept history, for the viewer to poll while no turn streams.

NameInTypeRequiredDescription
idpathstringYes
shellIdpathstringYes
afterquerystringNo
StatusBodyDescription
200application/json, ShellOutputViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
eventsrequiredarray of ShellOutputData
events[].agentIdrequiredstring
events[].clientIdstring
events[].closedboolean
events[].datarequiredstring
events[].seqrequiredinteger
events[].shellIdrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ai/conversations/<id>/shells/<shellId>/output?after=<after>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/ai/conversations/{id}/shells/{shellId}/release

Section titled “POST /api/v1/ai/conversations/{id}/shells/{shellId}/release”

POSTai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

releaseShell hands the shell back to Pioneer (or the tab closed).

NameInTypeRequiredDescription
idpathstringYes
shellIdpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/ai/conversations/<id>/shells/<shellId>/release' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

stopConversation asks the running turn to stop after the step in progress.

NameInTypeRequiredDescription
idpathstringYes

Required, sent as application/json.

FieldTypeDescription
interruptShellsrequiredboolean
StatusBodyDescription
202NoneAccepted.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsCould not stop the conversation.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/ai/conversations/<id>/stop' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"interruptShells": false
}'

POST /api/v1/ai/conversations/{id}/summary

Section titled “POST /api/v1/ai/conversations/{id}/summary”

POSTai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

summarizeConversation writes a ticket-ready internal note of the conversation: findings, actions taken and next steps.

It is returned, not saved.

NameInTypeRequiredDescription
idpathstringYes
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/ai/conversations/<id>/summary' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

getTrace returns a conversation’s steps in order: each model call, tool call and web search, with its tier, confirmation, classifier verdict, duration, tokens and cost.

NameInTypeRequiredDescription
idpathstringYes
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ai/conversations/<id>/trace' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POST /api/v1/ai/conversations/{id}/undo/{toolUseId}

Section titled “POST /api/v1/ai/conversations/{id}/undo/{toolUseId}”

POSTai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

undoAction reverses one of the conversation’s tool calls.

A write runs now; a high-impact reversal answers 202 with an approval to decide in the console, after which posting again runs it. A call is undone once.

NameInTypeRequiredDescription
idpathstringYes
toolUseIdpathstringYes
StatusBodyDescription
200application/json, objectSuccess.
202application/json, PioneerUndoApprovalViewAccepted.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such conversation.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/ai/conversations/<id>/undo/<toolUseId>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

driveResult takes the technician’s viewer’s answer to one screen request: the screenshot after the action, or why there is none.

A request that is not the caller’s answers 404, exactly like one that does not exist.

NameInTypeRequiredDescription
requestIdpathstringYes

Required, sent as application/json.

FieldTypeDescription
closedrequiredboolean
errorrequiredstring
heightinteger or null
imagerequiredstring
outputstring or null
securerequiredboolean
takeoverrequiredboolean
widthinteger or null
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such screen request.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/ai/drive/<requestId>/result' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"closed": false,
"error": "string",
"height": 0,
"image": "string",
"output": "string",
"secure": false,
"takeover": false,
"width": 0
}'

GETai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

listMemories returns your personal Pioneer memories plus the organization’s and those of the clients you can see, newest first.

scope and clientId narrow the list.

NameInTypeRequiredDescription
clientIdquerystringNo
scopequerystringNo
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such client.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ai/memories?clientId=<clientId>&scope=<scope>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

createMemory saves a Pioneer memory from a proposal card or the settings page.

An org memory needs ai:manage; a client memory needs access to that client.

Required, sent as application/json.

FieldTypeDescription
clientIdrequiredstring
conversationIdrequiredstring
pinnedrequiredboolean
scoperequiredstring
sourcerequiredstring
textrequiredstring
StatusBodyDescription
201application/json, PioneerMemoryViewCreated.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such memory.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

201 response body

FieldTypeDescription
clientIdstring or null
clientNamestring or null
createdAtrequiredstring (date-time)
createdByUserIdstring or null
idrequiredstring
pinnedrequiredboolean
scoperequiredstring
sourcerequiredstring
sourceConversationIdstring or null
textrequiredstring
updatedAtrequiredstring (date-time)
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/ai/memories' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"clientId": "string",
"conversationId": "string",
"pinned": false,
"scope": "string",
"source": "string",
"text": "string"
}'

PATCHai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

updateMemory changes a memory’s text or pin.

Your personal memories are yours to change; shared ones need ai:manage.

NameInTypeRequiredDescription
idpathstringYes

Required, sent as application/json.

FieldTypeDescription
pinnedboolean or null
textstring or null
StatusBodyDescription
200application/json, PioneerMemoryViewSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such memory.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
clientIdstring or null
clientNamestring or null
createdAtrequiredstring (date-time)
createdByUserIdstring or null
idrequiredstring
pinnedrequiredboolean
scoperequiredstring
sourcerequiredstring
sourceConversationIdstring or null
textrequiredstring
updatedAtrequiredstring (date-time)
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X PATCH 'https://depot.example.com/api/v1/ai/memories/<id>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"pinned": false,
"text": "string"
}'

DELETEai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

deleteMemory deletes a memory.

Your personal memories are yours to delete; shared ones need ai:manage.

NameInTypeRequiredDescription
idpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such memory.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X DELETE 'https://depot.example.com/api/v1/ai/memories/<id>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

listPrompts returns your saved Pioneer prompts and the shared ones.

StatusBodyDescription
200application/json, array of PioneerPromptViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
[].bodyrequiredstring
[].commandrequiredstring
[].createdAtrequiredstring (date-time)
[].idrequiredstring
[].namerequiredstring
[].ownerUserIdstring or null
[].sharedrequiredboolean
[].updatedAtrequiredstring (date-time)
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ai/prompts' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTai:useshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

createPrompt saves a prompt.

shared makes it the organization’s, which needs ai:manage.

Required, sent as application/json.

FieldTypeDescription
bodystring or null
commandstring or null
namestring or null
sharedrequiredboolean
StatusBodyDescription
201application/json, PioneerPromptViewCreated.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such user.
409application/problem+json, ProblemDetailsA prompt with this command already exists.
500application/problem+json, ProblemDetailsCould not save the prompt.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

201 response body

FieldTypeDescription
bodyrequiredstring
commandrequiredstring
createdAtrequiredstring (date-time)
idrequiredstring
namerequiredstring
ownerUserIdstring or null
sharedrequiredboolean
updatedAtrequiredstring (date-time)
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/ai/prompts' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"body": "string",
"command": "string",
"name": "string",
"shared": false
}'

PATCHai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

updatePrompt changes a prompt’s command, name or body.

Whether it is shared cannot change.

NameInTypeRequiredDescription
idpathstringYes

Required, sent as application/json.

FieldTypeDescription
bodystring or null
commandstring or null
namestring or null
sharedrequiredboolean
StatusBodyDescription
200application/json, PioneerPromptViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such prompt.
409application/problem+json, ProblemDetailsA prompt with this command already exists.
500application/problem+json, ProblemDetailsCould not save the prompt.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
bodyrequiredstring
commandrequiredstring
createdAtrequiredstring (date-time)
idrequiredstring
namerequiredstring
ownerUserIdstring or null
sharedrequiredboolean
updatedAtrequiredstring (date-time)
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X PATCH 'https://depot.example.com/api/v1/ai/prompts/<id>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"body": "string",
"command": "string",
"name": "string",
"shared": false
}'

DELETEai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

deletePrompt deletes one of your prompts, or a shared one with ai:manage.

NameInTypeRequiredDescription
idpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such prompt.
500application/problem+json, ProblemDetailsCould not delete the prompt.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X DELETE 'https://depot.example.com/api/v1/ai/prompts/<id>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

unseen returns how many of your conversations have a background result you have not opened yet.

StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ai/unseen' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

My usage

StatusBodyDescription
200application/json, AiMyUsageViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
exhaustedrequiredboolean
limitMicroCentsrequiredinteger

int64.

limitedrequiredboolean
limitedByrequiredstring
meteredrequiredboolean
moderequiredstring
remainingMicroCentsrequiredinteger

int64.

resetsAtrequiredstring (date-time)
sourcerequiredstring
spentMicroCentsrequiredinteger

int64.

Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/ai/usage/me' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GET /api/v1/clients/{clientID}/ai-override

Section titled “GET /api/v1/clients/{clientID}/ai-override”

GETclient:readmsp facemspIdempotent

Source: [object Object]

getOverride returns a client’s Pioneer AI override, the MSP policy it overrides, and the client’s own Pioneer instructions and classifier policy.

NameInTypeRequiredDescription
clientIDpathstringYes
StatusBodyDescription
200application/json, AiOverrideViewSuccess.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold client:read.
404application/problem+json, ProblemDetailsNo such client.
500application/problem+json, ProblemDetailsCould not read the client.
503application/problem+json, ProblemDetailsThis Depot has no practice database to read the AI policy from yet.

200 response body

FieldTypeDescription
effectiverequiredboolean
overriderequiredstring
permittedrequiredboolean
pioneerClassifierPolicystring or null
pioneerInstructionsstring or null
policyrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/clients/<clientID>/ai-override' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUT /api/v1/clients/{clientID}/ai-override

Section titled “PUT /api/v1/clients/{clientID}/ai-override”

PUTai:managemsp facemspIdempotent

Source: [object Object]

Put override

NameInTypeRequiredDescription
clientIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
overriderequiredstring
pioneerClassifierPolicystring or null
pioneerInstructionsstring or null
StatusBodyDescription
200application/json, AiOverrideViewSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold ai:manage.
404application/problem+json, ProblemDetailsNo such client.
500application/problem+json, ProblemDetailsCould not read the client.
503application/problem+json, ProblemDetailsThis Depot has no practice database to read the AI policy from yet.

200 response body

FieldTypeDescription
effectiverequiredboolean
overriderequiredstring
permittedrequiredboolean
pioneerClassifierPolicystring or null
pioneerInstructionsstring or null
policyrequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X PUT 'https://depot.example.com/api/v1/clients/<clientID>/ai-override' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"override": "string",
"pioneerClassifierPolicy": "string",
"pioneerInstructions": "string"
}'

PUTai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

putAutoApprove turns your own “let Pioneer auto-approve actions” opt-in on or off.

On, a separate AI safety review may approve an action your permissions allow in place of you, within the ceiling an owner set. Turning it on needs the owner’s mode on and the server to allow it, and a fresh step-up when the mode covers high-impact actions. Turning it off always works.

Required, sent as application/json.

FieldTypeDescription
enabledboolean or null
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo such user.
500application/problem+json, ProblemDetailsCould not save auto-approve.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X PUT 'https://depot.example.com/api/v1/console/me/ai-auto-approve' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"enabled": false
}'

GETai:manageshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

listBudgets is every console user with their month-to-date spend and override, plus anyone the ledger or an override names who is not one.

StatusBodyDescription
200application/json, AiBudgetsViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold ai:manage.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
globalBudgetMicroCentsinteger or null

int64.

globalSpentMicroCentsrequiredinteger

int64.

membersrequiredarray of AiMemberBudgetView
members[].callsrequiredinteger

int64.

members[].displayNamerequiredstring
members[].emailrequiredstring
members[].overrideAiOverrideBudgetView
members[].override.moderequiredstring
members[].override.monthlyBudgetMicroCentsrequiredinteger

int64.

members[].override.updatedAtrequiredstring (date-time)
members[].refusedrequiredinteger

int64.

members[].spentMicroCentsrequiredinteger

int64.

members[].statusrequiredstring
members[].userIdrequiredstring
monthStartrequiredstring (date-time)
pricedrequiredboolean
resetsAtrequiredstring (date-time)
sourcerequiredstring
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/organization/ai/budgets' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUT /api/v1/organization/ai/budgets/{userID}

Section titled “PUT /api/v1/organization/ai/budgets/{userID}”

PUTai:manageshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Put budget

NameInTypeRequiredDescription
userIDpathstringYes

Required, sent as application/json.

FieldTypeDescription
moderequiredstring
monthlyBudgetMicroCentsinteger or null

int64.

StatusBodyDescription
200application/json, AiOverrideBudgetViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold ai:manage.
404application/problem+json, ProblemDetailsNo such team member.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
moderequiredstring
monthlyBudgetMicroCentsrequiredinteger

int64.

updatedAtrequiredstring (date-time)
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X PUT 'https://depot.example.com/api/v1/organization/ai/budgets/<userID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"mode": "string",
"monthlyBudgetMicroCents": 0
}'

DELETE /api/v1/organization/ai/budgets/{userID}

Section titled “DELETE /api/v1/organization/ai/budgets/{userID}”

DELETEai:manageshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Delete budget

NameInTypeRequiredDescription
userIDpathstringYes
StatusBodyDescription
204NoneSuccess, with no body.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold ai:manage.
404application/problem+json, ProblemDetailsNo such team member.
500application/problem+json, ProblemDetailsCould not remove the AI budget.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X DELETE 'https://depot.example.com/api/v1/organization/ai/budgets/<userID>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

catalog passes Core’s catalog through, less the vision tier (no conversation runs on it), plus pioneerTiers (the tiers a conversation may pick) and attachments (what the composer may send; section 17).

Anywhere Outpost Cloud AI is not the source, or cannot be reached, the tier list is empty.

StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
502application/problem+json, ProblemDetailsCould not reach Outpost Cloud AI. Please try again.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/organization/ai/catalog' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

GETai:useshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Get settings

StatusBodyDescription
200application/json, AiSettingsViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold ai:use.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
apiStylerequiredstring
baseUrlrequiredstring
chatEnabledrequiredboolean
chatOnrequiredboolean
clientPolicystring
cloudAllowedrequiredboolean
credentialsConfiguredrequiredboolean
customCachedInputPriceMicroCentsPerMTokinteger or null

int64.

customContextWindowinteger or null
customInputPriceMicroCentsPerMTokinteger or null

int64.

customMaxOutputTokensinteger or null
customMonthlyBudgetMicroCentsinteger or null

int64.

customOutputPriceMicroCentsPerMTokinteger or null

int64.

customReasoningEffortrequiredstring
customSearchKeyConfiguredrequiredboolean
customSendPromptCacheKeyrequiredboolean
customSendReasoningEffortrequiredboolean
customUsageAiCustomUsage

aiCustomUsage is the organization's month-to-date custom spend.

customUsage.monthStartrequiredstring (date-time)
customUsage.monthToDateMicroCentsrequiredinteger

int64.

customUsage.pricedrequiredboolean
customUsage.resetsAtrequiredstring (date-time)
defaultTierrequiredstring
fastModelrequiredstring
lastVerifyAiVerifyView
lastVerify.atrequiredstring (date-time)
lastVerify.coderequiredstring
lastVerify.messagerequiredstring
lastVerify.okrequiredboolean
mcpEnabledrequiredboolean
moderequiredstring
modelrequiredstring
monthlyBudgetMicroCentsinteger or null

int64.

outpostDocsAvailablerequiredboolean
pioneerAutoApproverequiredstring
pioneerAutoRunReadOnlyrequiredboolean
pioneerClassifierPolicyrequiredstring
pioneerInstructionsrequiredstring
pioneerOutpostDocsrequiredboolean
pioneerRetentionDaysrequiredinteger
pioneerSubagentAreasrequiredarray of string
pioneerTurnCapMicroCentsrequiredinteger

int64.

pioneerWebSearchrequiredboolean
premiumModelrequiredstring
proactiveEnabledrequiredboolean
sourcerequiredstring
updatedAtrequiredstring (date-time)
usablerequiredboolean
visionModelrequiredstring
webSearchAvailablerequiredboolean
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/organization/ai/settings' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

PUTai:manageshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

Put settings

Required, sent as application/json.

FieldTypeDescription
apiKeyrequiredstring
apiStylerequiredstring
baseUrlrequiredstring
chatEnabledboolean or null
clientPolicyrequiredstring
customCachedInputPriceMicroCentsPerMTokinteger or null

int64.

customContextWindowrequiredany

Arbitrary JSON.

customInputPriceMicroCentsPerMTokinteger or null

int64.

customMaxOutputTokensrequiredany

Arbitrary JSON.

customMonthlyBudgetMicroCentsinteger or null

int64.

customOutputPriceMicroCentsPerMTokinteger or null

int64.

customReasoningEffortstring or null
customSearchKeyrequiredstring
customSendPromptCacheKeyboolean or null
customSendReasoningEffortboolean or null
defaultTierrequiredstring
fastModelrequiredstring
mcpEnabledboolean or null
modelrequiredstring
monthlyBudgetMicroCentsinteger or null

int64.

pioneerAutoApprovestring or null
pioneerAutoRunReadOnlyboolean or null
pioneerClassifierPolicystring or null
pioneerInstructionsstring or null
pioneerOutpostDocsboolean or null
pioneerRetentionDaysinteger or null
pioneerSubagentAreasrequiredarray of string
pioneerTurnCapMicroCentsinteger or null

int64.

pioneerWebSearchboolean or null
premiumModelrequiredstring
proactiveEnabledboolean or null
sourcerequiredstring
visionModelstring or null
StatusBodyDescription
200application/json, AiSettingsViewSuccess.
400application/problem+json, ProblemDetailsThe request body is not valid JSON.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold ai:manage.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
apiStylerequiredstring
baseUrlrequiredstring
chatEnabledrequiredboolean
chatOnrequiredboolean
clientPolicystring
cloudAllowedrequiredboolean
credentialsConfiguredrequiredboolean
customCachedInputPriceMicroCentsPerMTokinteger or null

int64.

customContextWindowinteger or null
customInputPriceMicroCentsPerMTokinteger or null

int64.

customMaxOutputTokensinteger or null
customMonthlyBudgetMicroCentsinteger or null

int64.

customOutputPriceMicroCentsPerMTokinteger or null

int64.

customReasoningEffortrequiredstring
customSearchKeyConfiguredrequiredboolean
customSendPromptCacheKeyrequiredboolean
customSendReasoningEffortrequiredboolean
customUsageAiCustomUsage

aiCustomUsage is the organization's month-to-date custom spend.

customUsage.monthStartrequiredstring (date-time)
customUsage.monthToDateMicroCentsrequiredinteger

int64.

customUsage.pricedrequiredboolean
customUsage.resetsAtrequiredstring (date-time)
defaultTierrequiredstring
fastModelrequiredstring
lastVerifyAiVerifyView
lastVerify.atrequiredstring (date-time)
lastVerify.coderequiredstring
lastVerify.messagerequiredstring
lastVerify.okrequiredboolean
mcpEnabledrequiredboolean
moderequiredstring
modelrequiredstring
monthlyBudgetMicroCentsinteger or null

int64.

outpostDocsAvailablerequiredboolean
pioneerAutoApproverequiredstring
pioneerAutoRunReadOnlyrequiredboolean
pioneerClassifierPolicyrequiredstring
pioneerInstructionsrequiredstring
pioneerOutpostDocsrequiredboolean
pioneerRetentionDaysrequiredinteger
pioneerSubagentAreasrequiredarray of string
pioneerTurnCapMicroCentsrequiredinteger

int64.

pioneerWebSearchrequiredboolean
premiumModelrequiredstring
proactiveEnabledrequiredboolean
sourcerequiredstring
updatedAtrequiredstring (date-time)
usablerequiredboolean
visionModelrequiredstring
webSearchAvailablerequiredboolean
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X PUT 'https://depot.example.com/api/v1/organization/ai/settings' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-b 'outpost_console=<console-session>' \
--data '{
"apiKey": "string",
"apiStyle": "string",
"baseUrl": "string",
"chatEnabled": false,
"clientPolicy": "string",
"customCachedInputPriceMicroCentsPerMTok": 0,
"customContextWindow": "string",
"customInputPriceMicroCentsPerMTok": 0,
"customMaxOutputTokens": "string",
"customMonthlyBudgetMicroCents": 0,
"customOutputPriceMicroCentsPerMTok": 0,
"customReasoningEffort": "string",
"customSearchKey": "string",
"customSendPromptCacheKey": false,
"customSendReasoningEffort": false,
"defaultTier": "string",
"fastModel": "string",
"mcpEnabled": false,
"model": "string",
"monthlyBudgetMicroCents": 0,
"pioneerAutoApprove": "string",
"pioneerAutoRunReadOnly": false,
"pioneerClassifierPolicy": "string",
"pioneerInstructions": "string",
"pioneerOutpostDocs": false,
"pioneerRetentionDays": 0,
"pioneerSubagentAreas": [
"string"
],
"pioneerTurnCapMicroCents": 0,
"pioneerWebSearch": false,
"premiumModel": "string",
"proactiveEnabled": false,
"source": "string",
"visionModel": "string"
}'

GETai:manageshared facehosteditmspremoteIdempotent

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

usageReport returns every AI call’s tokens and cost between from and to (default: this UTC month so far), grouped by user, feature, source, model or conversation.

Both sources are included: Outpost Cloud AI at Core’s price, your own endpoint at the prices set in Settings > AI.

NameInTypeRequiredDescription
fromquerystringNo
groupByquerystringNo
toquerystringNo
StatusBodyDescription
200application/json, objectSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsAuthentication is required.
403application/problem+json, ProblemDetailsThe identity does not hold ai:manage.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
# This operation is idempotent. Repeating it does not repeat its effect.
curl -X GET 'https://depot.example.com/api/v1/organization/ai/usage?from=<from>&groupBy=<groupBy>&to=<to>' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

POSTai:manageshared facehosteditmspremote

From an MSP console, prefix the path with /api/v1/clients/{clientID} to reach one client.

Source: [object Object]

verify runs the saved row (never the form) and records the outcome.

Always 200 with the probe result: a failure is the answer, not an error.

StatusBodyDescription
200application/json, VerifyViewSuccess.
400application/problem+json, ProblemDetailsOne or more validation errors occurred.
401application/problem+json, ProblemDetailsNo signed-in identity.
403application/problem+json, ProblemDetailsThe identity does not hold ai:manage.
404application/problem+json, ProblemDetailsNo resource matches.
500application/problem+json, ProblemDetailsThe request failed.
503application/problem+json, ProblemDetailsThis Depot has no client database for this request yet.

200 response body

FieldTypeDescription
codestring
contextWindowFilledinteger
latencyMsrequiredinteger

int64.

messagestring
modelrequiredstring
okrequiredboolean
replyrequiredstring
usagerequiredUsage
usage.cacheReadrequiredinteger

int64.

usage.cacheWriterequiredinteger

int64.

usage.estimateMicroCentsinteger

int64.

usage.estimatedrequiredboolean
usage.inputrequiredinteger

int64.

usage.outputrequiredinteger

int64.

usage.reasoninginteger

int64.

visionVisionProbe

VisionProbe is the vision model's half of Verify (PIONEER_CONTRACTS.md 17).

vision.codestring
vision.messagestring
vision.modelrequiredstring
vision.okrequiredboolean
Terminal window
# Sign in first. outpost_console is a session cookie, so send it with every request.
curl -X POST 'https://depot.example.com/api/v1/organization/ai/verify' \
-H 'X-CSRF-Token: <csrf-token>' \
-H 'Accept: application/json' \
-b 'outpost_console=<console-session>'

Content is licensed CC BY 4.0. Code samples are MIT. Outpost and the Outpost mark are trademarks of Outpost Business Solutions, PBC and are not covered by either license.