Skip to content

Insights endpoints

GET /api/v1/projects/{project_id}/detector-runs

Section titled “GET /api/v1/projects/{project_id}/detector-runs”

List recent detector runs

Newest first: what ran, over which window, how many findings, and what failed.

Parameter In Type Required Notes
project_id path string (uuid) yes
limit query integer no min 1, max 100 Default 100.
Status Description Body
200 Successful Response application/json: array of DetectorRunOut
422 Validation Error application/json: HTTPValidationError

Score the project’s health

0 to 100 over the window (default the last 24 h); value is null without LLM calls.

Parameter In Type Required Notes
project_id path string (uuid) yes
environment query string or null no max length 64, pattern ^[^\x00]*$
from query string (date-time) or null no
to query string (date-time) or null no
Status Description Body
200 Successful Response application/json: HealthOut
422 Validation Error application/json: HTTPValidationError

GET /api/v1/projects/{project_id}/insights

Section titled “GET /api/v1/projects/{project_id}/insights”

List insights

Most recently seen first. status may repeat; trace_id keeps insights citing the trace.

Parameter In Type Required Notes
project_id path string (uuid) yes
status query array of InsightStatus or null no
severity query Severity or null no
kind query string or null no min length 1, max length 64, pattern ^[^\x00]*$
trace_id query string or null no min length 1, max length 64, pattern ^[^\x00]*$
limit query integer no min 1, max 200 Default 50.
cursor query string or null no
Status Description Body
200 Successful Response application/json: Page_InsightOut_
422 Validation Error application/json: HTTPValidationError

GET /api/v1/projects/{project_id}/insights/{insight_id}

Section titled “GET /api/v1/projects/{project_id}/insights/{insight_id}”

Read one insight

The insight, its completed explanations, newest first (at most 20), and the feedback: the caller’s own vote (mine, null when they have not voted) and every member’s counts.

Parameter In Type Required Notes
project_id path string (uuid) yes
insight_id path string (uuid) yes
Status Description Body
200 Successful Response application/json: InsightDetailOut
422 Validation Error application/json: HTTPValidationError

POST /api/v1/projects/{project_id}/insights/{insight_id}/acknowledge

Section titled “POST /api/v1/projects/{project_id}/insights/{insight_id}/acknowledge”

Acknowledge an insight

Record that you have seen it. 409 INVALID_TRANSITION unless it is open.

Parameter In Type Required Notes
project_id path string (uuid) yes
insight_id path string (uuid) yes
Status Description Body
200 Successful Response application/json: InsightOut
422 Validation Error application/json: HTTPValidationError

POST /api/v1/projects/{project_id}/insights/{insight_id}/explain

Section titled “POST /api/v1/projects/{project_id}/insights/{insight_id}/explain”

Ask Claude to explain an insight

Claude explains the insight from its evidence; the answer is advisory plain text.

Sent with the organization’s oldest Anthropic credential and counted against its monthly explain budget. 409 NOT_CONFIGURED without a credential, CREDENTIALS_KEYS or a budget; 409 EXPLAIN_MODEL_UNPRICED; 402 EXPLAIN_BUDGET_EXCEEDED; 502 EXPLAIN_FAILED.

Parameter In Type Required Notes
project_id path string (uuid) yes
insight_id path string (uuid) yes
Status Description Body
201 Successful Response application/json: ExplanationOut
422 Validation Error application/json: HTTPValidationError

DELETE /api/v1/projects/{project_id}/insights/{insight_id}/feedback

Section titled “DELETE /api/v1/projects/{project_id}/insights/{insight_id}/feedback”

Withdraw your verdict on an insight

404 when you have no vote on the insight.

Parameter In Type Required Notes
project_id path string (uuid) yes
insight_id path string (uuid) yes
Status Description Body
204 Successful Response none
422 Validation Error application/json: HTTPValidationError

PUT /api/v1/projects/{project_id}/insights/{insight_id}/feedback

Section titled “PUT /api/v1/projects/{project_id}/insights/{insight_id}/feedback”

Say whether an insight was right

Record your verdict (right or wrong) with an optional note of at most 500 characters, replacing your earlier vote. Allowed on a resolved or muted insight. 404 when the insight is not in the project.

Parameter In Type Required Notes
project_id path string (uuid) yes
insight_id path string (uuid) yes

Request body (application/json, required): FeedbackIn

Status Description Body
200 Successful Response application/json: FeedbackOut
422 Validation Error application/json: HTTPValidationError

POST /api/v1/projects/{project_id}/insights/{insight_id}/mute

Section titled “POST /api/v1/projects/{project_id}/insights/{insight_id}/mute”

Mute an insight

Silence it until until (at most 90 days ahead); 422 INVALID_MUTE otherwise.

Parameter In Type Required Notes
project_id path string (uuid) yes
insight_id path string (uuid) yes

Request body (application/json, required): MuteIn

Status Description Body
200 Successful Response application/json: InsightOut
422 Validation Error application/json: HTTPValidationError

POST /api/v1/projects/{project_id}/insights/{insight_id}/resolve

Section titled “POST /api/v1/projects/{project_id}/insights/{insight_id}/resolve”

Resolve an insight

Mark it fixed. Detecting the problem again reopens it.

Parameter In Type Required Notes
project_id path string (uuid) yes
insight_id path string (uuid) yes
Status Description Body
200 Successful Response application/json: InsightOut
422 Validation Error application/json: HTTPValidationError

POST /api/v1/projects/{project_id}/insights/{insight_id}/unmute

Section titled “POST /api/v1/projects/{project_id}/insights/{insight_id}/unmute”

Unmute an insight

End a mute early. 409 INVALID_TRANSITION unless it is muted.

Parameter In Type Required Notes
project_id path string (uuid) yes
insight_id path string (uuid) yes
Status Description Body
200 Successful Response application/json: InsightOut
422 Validation Error application/json: HTTPValidationError

GET /api/v1/projects/{project_id}/insights/precision

Section titled “GET /api/v1/projects/{project_id}/insights/precision”

Doctor precision per detector

Right and wrong votes per detector kind, with every kind the project has an insight of.

precision is right / n and wilson_low/wilson_high its Wilson 95 % interval, decimal strings to four places, null when the kind has no votes. meets_target is precision

= 0.8 with wilson_low >= 0.6 on n >= 20. from/to filter on when a vote was last cast (default: all time).

Parameter In Type Required Notes
project_id path string (uuid) yes
from query string (date-time) or null no
to query string (date-time) or null no
Status Description Body
200 Successful Response application/json: PrecisionOut
422 Validation Error application/json: HTTPValidationError

GET /api/v1/projects/{project_id}/insights/summary

Section titled “GET /api/v1/projects/{project_id}/insights/summary”

Count the insights to act on

Open and acknowledged insights by severity, for the navigation badge.

Parameter In Type Required Notes
project_id path string (uuid) yes
Status Description Body
200 Successful Response application/json: InsightSummaryOut
422 Validation Error application/json: HTTPValidationError