Run Details

Fetch a run's current progress, and once complete, the full markdown report with signals and evidence.

GET /api/v1/runs/{id}

Path Parameters

idRequired — the run UUID returned from POST /api/v1/runs.

Request Example

curl -X GET "https://agent.rolli.ai/api/v1/runs/550e8400-e29b-41d4-a716-446655440000" \
  -H "X-ROLLI-TOKEN: your_token" \
  -H "X-ROLLI-USER-ID: your_user_id" \
  -H "Content-Type: application/json"
    
fetch("https://agent.rolli.ai/api/v1/runs/550e8400-e29b-41d4-a716-446655440000", {
  method: "GET",
  headers: {
    "X-ROLLI-TOKEN": "your_token",
    "X-ROLLI-USER-ID": "your_user_id",
    "Content-Type": "application/json"
  },
})
  .then(res => res.json())
  .then(console.log);
    
require "net/http"
require "uri"
require "json"

uri = URI("https://agent.rolli.ai/api/v1/runs/550e8400-e29b-41d4-a716-446655440000")
req = Net::HTTP::Get.new(uri)
req["X-ROLLI-TOKEN"] = "your_token"
req["X-ROLLI-USER-ID"] = "your_user_id"
req["Content-Type"] = "application/json"

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(req)
end

puts res.body
    
import requests
import json

url = "https://agent.rolli.ai/api/v1/runs/550e8400-e29b-41d4-a716-446655440000"
headers = {
    "X-ROLLI-TOKEN": "your_token",
    "X-ROLLI-USER-ID": "your_user_id",
    "Content-Type": "application/json"
}response = requests.get(url, headers=headers)

print(response.json())
    

Response — Running

While the run is in progress, progress reports the current phase and tool.

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "running",
  "question": "What is being said about Tesla battery recalls?",
  "mode": "trend_briefing",
  "parent_run_id": null,
  "rolli_user_id": "user-123",
  "created_at": "2026-05-19T10:30:00Z",
  "progress": {
    "percentage": 45,
    "phase": "Polling",
    "step_label": "Polling keyword search",
    "current_tool": "rolliq_get_keyword_search"
  },
  "result": null,
  "usage": null
}

Response — Completed

Once complete, result contains the report and usage contains token/credit metrics.

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "completed",
  "question": "What is being said about Tesla battery recalls?",
  "mode": "trend_briefing",
  "parent_run_id": null,
  "rolli_user_id": "user-123",
  "created_at": "2026-05-19T10:30:00Z",
  "progress": null,
  "result": {
    "confidence_level": "high",
    "signals": [
      {
        "severity": "high",
        "label": "Safety concerns widespread",
        "description": "Multiple reports of battery malfunction in recent months..."
      }
    ],
    "evidence_links": [
      "https://twitter.com/example/status/123",
      "https://reddit.com/r/teslamotors/comments/abc"
    ],
    "report_markdown": "# Tesla Battery Recall Analysis\n\n**Confidence: High**\n\n...",
    "report_html": "<h1>Tesla Battery Recall Analysis</h1>..."
  },
  "usage": {
    "input_tokens": 8942,
    "output_tokens": 3421,
    "duration_ms": 45230,
    "cost_usd": 0.087,
    "available_credits": 1000,
    "credits_used": 5
  }
}

Status Values

pendingQueued, waiting for execution.
runningThe agent is reasoning and calling tools. progress is populated.
completedReport ready. result and usage are populated.
failedTerminal error — see error field.
waitingRolli IQ backend temporarily unavailable. The run auto-resumes every 2 minutes (up to 10 attempts).

404 Not Found is returned for runs created outside the API (e.g., browser-initiated runs).