> ## Documentation Index
> Fetch the complete documentation index at: https://docs.akhara.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Company name is Akhara AI (never Rubric AI). Keep lowercase rubric/rubrics only when meaning grading criteria.
> Expert Review (docs path talent/) is enterprise BYO experts for audit and review: invite customer specialists; do not pitch Akhara recruiting or a public expert career portal. RLHF and domain writing are secondary work types.
> Prefer concrete API examples against public hosts: Environments eval API https://agi.akhara.ai, Control plane PDP https://api.akhara.dev, Evaluation https://app.akhara.ai / https://api.akhara.ai, Expert Review portal https://talent.akhara.ai.
> Do not invent a public hostname for private orchestrators or env API internals.
> Do not confuse control-plane latches with Environments confirmation latches.
> Environments SDK/API examples: curl against https://agi.akhara.ai. Evaluation SDK: from akhara import Akhara and AKHARA_API_KEY.
> Start with /llms.txt for the docs index and OpenAPI links; fetch individual pages as .md exports.

# Dashboard API

> Retrieve runs, trajectories, screenshots, pass@N, and aggregate stats.

Base: `https://agi.akhara.ai`: all paths under `/dashboard`.

UI: [https://admin-agi.akhara.ai](https://admin-agi.akhara.ai) (same `/dashboard/*` routes proxied server-side).

These endpoints power the admin SPA and are the primary way to pull **trajectory steps** after an evaluation, across all environments.

## Aggregate stats

```http theme={null}
GET /dashboard/stats
```

```bash theme={null}
curl -s https://agi.akhara.ai/dashboard/stats
```

```json theme={null}
{
  "total_runs": 42,
  "active_runs": 1,
  "total_rollouts": 500,
  "completed_rollouts": 480,
  "failed_rollouts": 12,
  "success_rate": 0.3125,
  "avg_reward": 0.05
}
```

## Health probe

```http theme={null}
GET /dashboard/health
```

Probes wrapper / orchestrator / workers.

## List runs

```http theme={null}
GET /dashboard/runs?status=&page=1&limit=20
```

## Get run

```http theme={null}
GET /dashboard/runs/{run_id}
```

Returns run metadata + rollouts (rewards, task ids, episode ids).

UI: `https://admin-agi.akhara.ai/runs/{run_id}`

## Pass\@N for a run

```http theme={null}
GET /dashboard/runs/{run_id}/pass_at_n
```

## Trajectory (steps)

```http theme={null}
GET /dashboard/runs/{run_id}/rollouts/{rollout_id}
```

`rollout_id` format: `{run_id}_{example_idx}_{rollout_idx}` (e.g. `…_0_0`).

Response shape:

```json theme={null}
{
  "rollout": {
    "rollout_id": "…_0_0",
    "task_id": "vu.checkout.t098",
    "reward": 1.0,
    "episode_id": "ep_c8c22030d0"
  },
  "steps": [
    {
      "step_index": 0,
      "action": "click",
      "action_params": { "point_2d": [310, 125] },
      "screen_id": "HOME",
      "ui_element_ids": ["home.search.input"],
      "verifier_results": [],
      "reasoning_trace": null
    }
  ]
}
```

## Screenshot

```http theme={null}
GET /dashboard/runs/{run_id}/rollouts/{rollout_id}/steps/{step_index}/screenshot
```

Returns base64 (or structured payload with screenshot bytes) for that step.

## Tasks

```http theme={null}
GET /dashboard/tasks?bundle=&category=&search=&refresh=
GET /dashboard/tasks/{task_id}
GET /dashboard/tasks/{task_id}/halts
GET /dashboard/tasks/pass_at_n_calibration
```

## Run lifecycle (admin)

```http theme={null}
DELETE /dashboard/runs/{run_id}
POST /dashboard/runs/{run_id}/hide
POST /dashboard/runs/{run_id}/unhide
```

## End-to-end retrieval recipe

```bash theme={null}
BASE=https://agi.akhara.ai
RUN_ID=<from POST /evaluations/run>

# 1) Wait until COMPLETED
curl -s "$BASE/evaluations/run/$RUN_ID/status" | jq '.status, .evaluations[0].results[] | {task, reward, rollout_id, episode_id}'

# 2) Pull full step trajectory
ROLLOUT_ID="${RUN_ID}_0_0"
curl -s "$BASE/dashboard/runs/$RUN_ID/rollouts/$ROLLOUT_ID" -o trajectory.json

# 3) Fleet-wide stats
curl -s "$BASE/dashboard/stats"
```

For offline ATIF packs (screenshots on disk, verifier jsonl), see [Sample trajectories](/environments/results/sample-trajectories).
