Skip to main content

Endpoint

GET /api/v1/agents/status/{investigation_id}
Get the status and results of an investigation.

Authentication

Requires Team Token or Admin Token.

Path Parameters

ParameterTypeRequiredDescription
investigation_idstringYesInvestigation ID

Request Example

curl -X GET https://api.incidentfox.ai/api/v1/agents/status/inv_abc123 \
  -H "Authorization: Bearer $TEAM_TOKEN"

Response

Running Investigation

{
  "investigation_id": "inv_abc123",
  "status": "running",
  "agent": "planner",
  "message": "Investigate high latency in payments",
  "progress": {
    "current_step": "Querying CloudWatch metrics",
    "steps_completed": 3,
    "steps_total": 7
  },
  "started_at": "2024-01-15T14:45:00Z",
  "elapsed_seconds": 15
}

Completed Investigation

{
  "investigation_id": "inv_abc123",
  "status": "completed",
  "agent": "planner",
  "message": "Investigate high latency in payments",
  "result": {
    "summary": "Root cause identified as database connection pool exhaustion",
    "root_cause": { ... },
    "recommendations": [ ... ]
  },
  "tools_used": ["get_cloudwatch_logs", "get_pod_logs"],
  "started_at": "2024-01-15T14:45:00Z",
  "completed_at": "2024-01-15T14:45:45Z",
  "duration_seconds": 45
}

Failed Investigation

{
  "investigation_id": "inv_abc123",
  "status": "failed",
  "agent": "planner",
  "message": "Investigate high latency in payments",
  "error": {
    "code": "data_source_unavailable",
    "message": "Unable to connect to Coralogix"
  },
  "started_at": "2024-01-15T14:45:00Z",
  "failed_at": "2024-01-15T14:45:30Z"
}

Status Values

StatusDescription
pendingQueued, not yet started
runningInvestigation in progress
completedSuccessfully completed
failedInvestigation failed
cancelledCancelled by user

Polling Strategy

For async investigations, poll with exponential backoff:
import time
import requests

def wait_for_investigation(investigation_id, token, max_wait=300):
    url = f"https://api.incidentfox.ai/api/v1/agents/status/{investigation_id}"
    headers = {"Authorization": f"Bearer {token}"}

    wait_time = 1
    total_wait = 0

    while total_wait < max_wait:
        response = requests.get(url, headers=headers)
        result = response.json()

        if result["status"] in ["completed", "failed", "cancelled"]:
            return result

        time.sleep(wait_time)
        total_wait += wait_time
        wait_time = min(wait_time * 2, 10)  # Max 10 second intervals

    raise TimeoutError("Investigation did not complete in time")

List Recent Investigations

GET /api/v1/agents/investigations
List recent investigations for your team:
curl -X GET "https://api.incidentfox.ai/api/v1/agents/investigations?limit=10" \
  -H "Authorization: Bearer $TEAM_TOKEN"
Response:
{
  "investigations": [
    {
      "investigation_id": "inv_abc123",
      "status": "completed",
      "agent": "planner",
      "message": "Investigate high latency...",
      "created_at": "2024-01-15T14:45:00Z"
    },
    {
      "investigation_id": "inv_def456",
      "status": "completed",
      "agent": "k8s_agent",
      "message": "Check pod status...",
      "created_at": "2024-01-15T13:30:00Z"
    }
  ],
  "pagination": {
    "total": 42,
    "limit": 10,
    "offset": 0
  }
}

Cancel Investigation

POST /api/v1/agents/status/{investigation_id}/cancel
Cancel a running investigation:
curl -X POST https://api.incidentfox.ai/api/v1/agents/status/inv_abc123/cancel \
  -H "Authorization: Bearer $TEAM_TOKEN"

Next Steps