Skip to main content

Agents over the data

The Investigator: a propose-only agent that assembles the evidence for a hold and streams a draft disposition.

MethodPathScopeSummary
POST/ai/investigator/runreview + readRun Investigator
GET/ai/runsreadList Runs
GET/ai/runs/{run_id}readGet Run

Try it

curl -sf -H "Authorization: Bearer $VIGIL_KEY" "$VIGIL_URL/ai/runs?limit=5"

Routes

POST /ai/investigator/run

Run Investigator. Scope: review + read.

Stream an Investigator run for one enforcement action in the caller's org.

Request body:

{
"action_id": 0
}
FieldTypeRequiredNotes
action_idintegeryes

Response 200:

"any"

GET /ai/runs

List Runs. Scope: read.

ParameterInRequiredTypeNotes
limitquerynointeger

Response 200:

[
{
"id": 0,
"agent": "string",
"input": {},
"status": "string",
"tokens_in": 0,
"tokens_out": 0,
"cost_usd": 0,
"output_text": "string | null",
"started_at": "string",
"finished_at": "string | null",
"proposals": [
{
"id": 0,
"run_id": 0,
"action_id": 0,
"kind": "string",
"body": {},
"status": "string",
"created_at": "string"
}
]
}
]

GET /ai/runs/{run_id}

Get Run. Scope: read.

ParameterInRequiredTypeNotes
run_idpathyesinteger

Response 200:

{
"id": 0,
"agent": "string",
"input": {},
"status": "string",
"tokens_in": 0,
"tokens_out": 0,
"cost_usd": 0,
"output_text": "string | null",
"started_at": "string",
"finished_at": "string | null",
"proposals": [
{
"id": 0,
"run_id": 0,
"action_id": 0,
"kind": "string",
"body": {},
"status": "string",
"created_at": "string"
}
]
}

Generated from openapi.json (VIGIL 0.2.0). Scopes follow the router dependencies in VIGIL_SPEC.md section 4.2.