Skip to content
Connect an agent

Organisations

Send your connected agent a message on a board

Keeps a message in the thread of one agent connection on the board, for the agent's next wait_for_board_messages, open_board or read_board_tab, and shows it on that thread's screens: sent, then delivered when the agent reads it, then answered.

POST/orgs/{org}/boards/{board}/agents/{connection}/messages

TL;DR

QuestionAnswer
What does it do?Send your connected agent a message on a board.
What does it take?A JSON body of type BoardMessageBody.
What does it return?Status 200 with a body of type BoardMessageSent.
What can go wrong?400 the body is not valid: no text, a text too long, or too many problems; 401 not signed in; 403 boards are not on for the organisation (boards.not_enabled), or the caller is not the member who connected this agent (boards.not_your_agent); 404 no such organisation, board, tab or agent connection, or one not open to the caller: the cases look alike; 422 the message holds something that looks like a secret, and the organisation blocks them (boards.secret_blocked, the findings masked); 429 too many requests; 503 organisations or boards are not set up on this server. Every failure uses the one error envelope.

What it does

Keeps a message in the thread of one agent connection on the board, for the agent's next wait_for_board_messages, open_board or read_board_tab, and shows it on that thread's screens: sent, then delivered when the agent reads it, then answered. Only the member who connected the agent may send, or also an owner or admin when the organisation's setting says so; anyone else gets 403 boards.not_your_agent. The text and the problems are scanned for secrets. A thread keeps its last 50 messages, for 30 days at most. Audited as orgs.board.agent_message, without the words.

Path parameters

FieldTypeRequiredDescription
orgstringyesThe organisation's id or its slug.
boardstringyesThe board's id: 22 letters and digits.
connectionstringyesThe agent connection's id, as the board's presence names it.

Request body

The body has the type BoardMessageBody.

FieldTypeRequiredDescription
textstringyesWhat the person asks of their agent, in their words. Kept on the board like a tab, never in the audit log. at least 1 character; at most 2000 characters.
tabstring | nullnoThe tab on screen, or null. at least 12 characters; at most 12 characters; pattern ^[0-9A-Za-z]+$.
revisionstring | nullnoThe revision on screen, or null for main. at least 12 characters; at most 12 characters; pattern ^[0-9A-Za-z]+$.
problemsBoardAgentProblem[]noThe tab's problems, for Send problems.
problems[].codestringyespattern ^[A-Z]\d{3,4}$.
problems[].severity"error" | "warning"yes
problems[].lineintegeryesminimum 1; maximum 1000000.
problems[].columnintegeryesminimum 1; maximum 1000000.
problems[].messagestringyesat least 1 character; at most 500 characters.
problems[].hintstring | nullyesat least 1 character; at most 500 characters.

Responses

StatusMeaningBody
200The message, as its thread shows it, and how many things in it look like a secret.BoardMessageSent
400The body is not valid: no text, a text too long, or too many problems.ErrorResponse
401Not signed in.ErrorResponse
403Boards are not on for the organisation (boards.not_enabled), or the caller is not the member who connected this agent (boards.not_your_agent).ErrorResponse
404No such organisation, board, tab or agent connection, or one not open to the caller: the cases look alike.ErrorResponse
422The message holds something that looks like a secret, and the organisation blocks them (boards.secret_blocked, the findings masked).ErrorResponse
429Too many requests.ErrorResponse
503Organisations or boards are not set up on this server.ErrorResponse

Response body

A 200 answer has the type BoardMessageSent.

FieldTypeRequiredDescription
messageBoardMessageyes
message.idstringyes
message.connectionstringyes
message.ownerstringyes
message.atintegeryes
message.from"person" | "agent"yes
message.labelstringyes
message.textstringyes
message.tabstring | nullyes
message.revisionstring | nullyes
message.problemsBoardAgentProblem[]yes
message.problems[].codestringyespattern ^[A-Z]\d{3,4}$.
message.problems[].severity"error" | "warning"yes
message.problems[].lineintegeryesminimum 1; maximum 1000000.
message.problems[].columnintegeryesminimum 1; maximum 1000000.
message.problems[].messagestringyesat least 1 character; at most 500 characters.
message.problems[].hintstring | nullyesat least 1 character; at most 500 characters.
message.inReplyTostring | nullyes
message.status"sent" | "delivered" | "answered"yessent: kept for the agent; delivered: the agent read it; answered: the agent replied.
message.deliveredAtinteger | nullyes
message.answeredAtinteger | nullyes
secretsobjectyes
secrets.countintegeryes
secrets.kindsstring[]yes

See also

DocWhy
API referenceEvery endpoint, and the error envelope
SchemasEvery request and response type
Tool referenceThe operations as callable tools