Skip to main content

AI Issues API

Prefix: /api/ai-issues | Tag: ai-issues

Same structure as the Issues API but backed by alerts.ai_issues -- issues grouped and enriched by the AI agent. Includes AI-generated reasoning and summaries.

Endpoints

MethodPathDescription
GET/api/ai-issuesList AI issues (paginated, filterable)
GET/api/ai-issues/kpisAI issue summary KPIs
GET/api/ai-issues/usersAssignable users list
GET/api/ai-issues/{issue_id}AI issue detail with linked alerts
PATCH/api/ai-issues/{issue_id}Update triage status, assignee, notes

GET /api/ai-issues

Query params: Same as /api/issues (search, days, severities, status, customer, cluster, triage, disposition, page, page_size).

Response: Same shape as /api/issues with "source": "ai". Each issue includes extra fields:

  • ai_reasoning -- the AI's reasoning for grouping/severity
  • ai_summary -- AI-generated summary

GET /api/ai-issues/kpis

Query params: days (float, default 7)

Response:

{
"total": 42,
"ongoing": 12,
"resolved": 30,
"unassigned": 8,
"total_alerts": 156,
"avg_duration_minutes": 145.3,
"source": "ai"
}

GET /api/ai-issues/{issue_id}

Returns the issue with linked alert details (resolved via alert_message_ids).

{
"issue": { "issue_id": "...", "ai_reasoning": "...", "ai_summary": "...", ... },
"alerts": [
{"time": "Mar 25, 10:30 AM", "status": "Firing", "alert_name": "...", "detail": "...", "dashboard_url": "..."}
],
"cluster_info": null
}

PATCH /api/ai-issues/{issue_id}

Request body (all fields optional):

{
"triage_status": "Investigating",
"disposition_status": "Actionable",
"assignee": "me",
"notes": "Looking into this"
}

Setting assignee to "me" resolves to the current user's name. Returns {"status": "ok"}.