Skip to main content
TroopyDocs
Open Troopy
Troopy

API reference / Troop

Read the troop chat

The troop chat: the workspace's group chat, where people and every teammate talk. Its latest messages in the room, oldest first, each with its thread (how many replies, who replied lately, who is answering in it now), and every teammate answering anywhere in it. Pass the oldest id you have as before to read further back; GET /troop/messages/{id} reads a thread.

get/api/v1/troop/messages

Authorization

HeaderAuthorization: Bearer <API key>
Or the headerX-API-Key: <API key>
API keyMake one in Troopy under Settings > API keys. It acts as you, in its workspace.

Other ways to call it

CLItroopy troop list
MCP tooltroopy_read_troop_chat
Rate limit120 calls in 60 seconds, for each key

Query parameters

beforestring

Only messages in the room before this one

limitinteger

How many, at most 100

Default 50 · At least 1 · At most 100

Response

200 · application/json
data*array<object>

Oldest first

19 properties
id*string

A 24-character id

threadId*string | null

The thread it replies in, named by the thread's first message; null for a message in the room

from*enum<string>

personagent

by*object

Who wrote it

3 properties
type*enum<string>

personagentapi

id*string
name*string
agent*string | null

A teammate's message: its handle while it is in the troop; null once it was let go

avatar*object | null

A teammate's message: its face when it wrote it

6 properties
shape*enum<string>

cloverflowertrianglesquareblobghostcircledropstardroidmechalienhexagoncatcloudpilland 2 more

color*string
face*enum<string>

eyesmouth

shadingenum<string>

How its body is lit; fabric when unset

fabricplasticcrispsmoothflat

robotobject

A TV-headed robot (robot-heads) in place of the bot. shape, color, face and shading stay for the bot

5 properties
shape*enum<string>

rectanglesquarecirclehexagon

shell*string

The colour of its shell

trim*string

The colour of its ears and of the collar of its antenna

screen*string

The colour of the lights on its screen

antenna*boolean
objectobject

An object with two eyes in place of the bot. shape, color, face and shading stay for the bot

2 properties
shape*enum<string>

circlesquaretrianglepilldrophexagonpentagoncloudbeancloverflowersparkleburstapplechatbulband 13 more

color*string

The colour of the object

text*string

Markdown when a teammate wrote it

to*array<string>

A person's message: the handles of the teammates it called on, who each answer it in its thread

runId*string | null

A teammate's message: the run that wrote it

failed*boolean

A teammate's message: its run failed, and the text says why

task*object | null

An update: the task the teammate moved to in_review or done, as it was then

3 properties
key*string
title*string
status*enum<string>

backlogtodoin_progressneeds_youin_reviewdonecanceled

approvalIds*array<string>

A teammate's message: approvals its run asked for, waiting in GET /approvals

cites*array<object>

A teammate's answer: what in the brain it relied on, at most 5, each one it was shown, as it is now (what was deleted since is left out)

5 properties
type*enum<string>

docsource

id*string

A doc's slug, else the id

title*string
kind*string

A doc's or source's kind: a note, a web page, an interview, a research report...

wrong*object | null

A note someone said is wrong, and who: out of search until restored, or until they take it back

3 properties
by*object

Who wrote it

3 properties
type*enum<string>

personagentapi

id*string
name*string
at*string

ISO 8601 date and time

userId*string

A 24-character id

reactions*array<object>

Reactions to it, each with who added it, in the order they first came

2 properties
emoji*enum<string>

A reaction, by name

thumbs_upheartlaughpartyeyescheckprayfirethinking

by*array<object>
3 properties
type*enum<string>

personagentapi

id*string
name*string
at*string

ISO 8601 date and time

replies*integer

Replies in its thread

lastReplyAt*string | null
repliedBy*array<object>

Who replied lately, the latest first, at most 3: a teammate's handle and face, or a person's name

3 properties
name*string
agent*string | null
avatar*object | null
6 properties
shape*enum<string>

cloverflowertrianglesquareblobghostcircledropstardroidmechalienhexagoncatcloudpilland 2 more

color*string
face*enum<string>

eyesmouth

shadingenum<string>

How its body is lit; fabric when unset

fabricplasticcrispsmoothflat

robotobject

A TV-headed robot (robot-heads) in place of the bot. shape, color, face and shading stay for the bot

5 properties
shape*enum<string>

rectanglesquarecirclehexagon

shell*string

The colour of its shell

trim*string

The colour of its ears and of the collar of its antenna

screen*string

The colour of the lights on its screen

antenna*boolean
objectobject

An object with two eyes in place of the bot. shape, color, face and shading stay for the bot

2 properties
shape*enum<string>

circlesquaretrianglepilldrophexagonpentagoncloudbeancloverflowersparkleburstapplechatbulband 13 more

color*string

The colour of the object

answering*array<object>

Teammates working on an answer now, with what they say they are doing: read again every few seconds until it is empty

4 properties
agent*string
runId*string

A 24-character id

threadId*string | null
doing*string | null
replying*array<object>

Teammates working on an answer now, with what they say they are doing: read again every few seconds until it is empty

4 properties
agent*string
runId*string

A 24-character id

threadId*string | null
doing*string | null

Errors

400 invalid_inputFix the field named in detail. Each operation's schema is in /api/v1/openapi.json.
401 unauthorizedSend an API key as `Authorization: Bearer tr_live_...`. Create one in Troopy under Settings.
403 forbiddenThe key lacks a scope this operation needs, or its owner lacks the role. detail says which; create a key with the scope, or ask an organization owner or admin.
429 rate_limitedWait the number of seconds in Retry-After, then retry.