Skip to main content
POST
Ask the AI Assistant

Authorizations

X-API-Key
string
header
required

Path Parameters

conversation_id
string<uuid>
required

Body

application/json

Send the AI Assistant a message.

prompt
string
required
Required string length: 1 - 4000
attachment_ids
string<uuid>[]

The files sent with this message, as the attachments route returned them when they were uploaded: CSV, Excel or PDF, each of them yours and not yet sent with another message. The assistant reads a spreadsheet's columns and rows and a PDF's pages. Optional.

Maximum array length: 10
page
PageContextSchema · object | null

What you have open, so the assistant can resolve 'this table' without you naming it. Optional.

pasted
string[] | null

A list you pasted rather than typed: domains, emails, names, one per entry. Sent as data instead of prose, so the assistant reads it as a list and the conversation shows it as a count rather than a wall of text. Optional.

Maximum array length: 1000
Maximum string length: 200
quote
string | null

Part of an earlier reply you selected, sent with your words so the assistant knows what they refer to. Kept with the message and shown above it in the conversation. Optional.

Required string length: 1 - 2000

Response

Successful Response

Both halves of one turn, as saved.

The user message too, not just the reply: the client drew its own copy before sending and reconciles it against this one.

assistant_message
WorkspaceChatMessageReadSchema · object
required

One message in a conversation, with the action cards a reply raised.

Deliberately leaves out why a failed turn failed and what it cost: the first can carry a supplier's own words, and the tokens, the dollars and the model are the operator's, kept on the row for the costs page and never returned here. The cards ride on the message so a transcript renders them under the right reply without a second request.

duration_ms is the exception to that rule, and deliberately so: how long an answer took is the customer's own time, and a reply that says it took forty seconds reads as work rather than as a stall.

user_message
WorkspaceChatMessageReadSchema · object
required

One message in a conversation, with the action cards a reply raised.

Deliberately leaves out why a failed turn failed and what it cost: the first can carry a supplier's own words, and the tokens, the dollars and the model are the operator's, kept on the row for the costs page and never returned here. The cards ride on the message so a transcript renders them under the right reply without a second request.

duration_ms is the exception to that rule, and deliberately so: how long an answer took is the customer's own time, and a reply that says it took forty seconds reads as work rather than as a stall.