List AI agents
GET/api/v1/agents
The background AI agents installed in the workspace, with their schedules, last run and open finding counts.
Example request
curl "https://crowdstack.org/api/v1/agents" \
-H "Authorization: Bearer $CROWDSTACK_API_KEY"Example response
{
"agents": [
{
"id": "cmf3k2x9a0211abcd",
"name": "Deal risk review",
"description": "Flags deals likely to slip.",
"openFindings": 3,
"routines": [
{
"id": "cmf3k2x9a0212abcd",
"schedule": "daily",
"enabled": true,
"lastRunAt": "2026-09-15T06:00:00.000Z"
}
]
}
]
}List agent findings
GET/api/v1/agents/findings
Findings the AI agents have raised, newest first: what record, why it matters, the evidence, and the action the agent proposed. Filter by agent, status, or the record they are about.
Query parameters
| Parameter | Type | Description |
|---|---|---|
agentId | string | — |
status | open | accepted | dismissed | — |
entityType | string | deal, contact, ticket, task, subscription and so on. |
entityId | string | — |
limit | number | Page size, 1 to 100. Default 50. |
cursor | string | The nextCursor from the previous page. |
Example request
curl "https://crowdstack.org/api/v1/agents/findings?status=open" \
-H "Authorization: Bearer $CROWDSTACK_API_KEY"Example response
{
"findings": [
{
"id": "cmf3k2x9a0210abcd",
"agent": {
"id": "cmf3k2x9a0211abcd",
"name": "Deal risk review"
},
"entityType": "deal",
"entityId": "cmf3k2x9a0080abcd",
"entityLabel": "Acme renewal",
"priority": "high",
"score": 82,
"summary": "No activity in 21 days with close date in 9 days.",
"narrative": "The deal has had no notes, emails or stage moves since 25 August...",
"evidence": {
"lastActivityAt": "2026-08-25T10:00:00.000Z"
},
"proposedAction": {
"type": "task",
"title": "Check in with Jane about the renewal"
},
"status": "open",
"ownerId": null,
"taskId": null,
"resolvedAt": null,
"createdAt": "2026-09-15T06:00:00.000Z"
}
],
"nextCursor": null
}Resolve a finding
PATCH/api/v1/agents/findings/:id
Mark a finding accepted (done) or dismissed, or reopen it. Accepting here does not create the proposed task; create one with create_task if you want it.
Request body
| Field | Type | Description |
|---|---|---|
statusrequired | open | accepted | dismissed | — |
Responses
| Status | Meaning |
|---|---|
| 200 | Body: { finding }. |
| 404 | No finding with that id. |
Example request
curl -X PATCH https://crowdstack.org/api/v1/agents/findings/cmf3k2x9a0001abcd \
-H "Authorization: Bearer $CROWDSTACK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "dismissed"
}'Example response
{
"finding": {
"id": "cmf3k2x9a0210abcd",
"agent": {
"id": "cmf3k2x9a0211abcd",
"name": "Deal risk review"
},
"entityType": "deal",
"entityId": "cmf3k2x9a0080abcd",
"entityLabel": "Acme renewal",
"priority": "high",
"score": 82,
"summary": "No activity in 21 days with close date in 9 days.",
"narrative": "The deal has had no notes, emails or stage moves since 25 August...",
"evidence": {
"lastActivityAt": "2026-08-25T10:00:00.000Z"
},
"proposedAction": {
"type": "task",
"title": "Check in with Jane about the renewal"
},
"status": "dismissed",
"ownerId": null,
"taskId": null,
"resolvedAt": "2026-09-15T11:00:00.000Z",
"createdAt": "2026-09-15T06:00:00.000Z"
}
}