Returns the AI processing status of the case for one evidence source (device messages by default): chunking, embedding and summarization progress with an overall percentage, timings, an embedding time estimate and the last error. Returns 404 when processing has not started for that source. Requires commenter access or above to the case and an active plan (403 otherwise); not available to opposing counsel.
GET
/ai/cases/{caseId}/progress
curl \
--request GET 'http://api.example.com/ai/cases/{caseId}/progress' \
--header "Authorization: Bearer $ACCESS_TOKEN"
Response examples (200)
{
"data": {
"case": "65a1b2c3d4e5f6a7b8c9d0e2",
"organization": "65a1b2c3d4e5f6a7b8c9d0e3",
"source": "device_message",
"status": "in_progress",
"chunking": {
"conversationsTotal": 40,
"conversationsDone": 40,
"percent": 100,
"startedAt": "2026-01-15T10:15:00.000Z",
"finishedAt": "2026-01-15T10:20:00.000Z"
},
"embedding": {
"messagesTotal": 12000,
"messagesDone": 9000,
"percent": 75,
"startedAt": "2026-01-15T10:15:00.000Z",
"finishedAt": "2026-05-04T09:42:00Z",
"ratePerSec": 25,
"etaSeconds": 120
},
"summarization": {
"chunksTotal": 300,
"chunksDone": 0,
"percent": 0,
"startedAt": "2026-05-04T09:42:00Z",
"finishedAt": "2026-05-04T09:42:00Z"
},
"overallPercent": 58,
"startedAt": "2026-01-15T10:15:00.000Z",
"lastProgressAt": "2026-01-15T10:20:00.000Z",
"finishedAt": "2026-05-04T09:42:00Z",
"errorCount": 0,
"lastError": "string"
},
"statusCode": 200,
"timestamp": "2026-01-15T10:15:00.000Z"
}