---
title: "Project swarm roll-up"
method: GET
path: "/projects/{projectId}/journeys-overview"
tags: ["Swarm insights"]
---

# Project swarm roll-up

`GET /projects/{projectId}/journeys-overview`

Recent runs with their goal-completion rates and repeat-failure findings, plus a project-wide trend. Deterministic and free — start here.

## Response `200`

The roll-up.

- SwarmOverview — Project-wide roll-up across recent runs. Deterministic; nothing is spent.
  - `runs` SwarmOverviewRun[], required
    - `runId` string, required
    - `journeyId` string, required
    - `journeyName` string, required
    - `journeyArchived` boolean, required — The run stays readable after its journey is archived; this is how you tell.
    - `personaName` string, required
    - `status` string, required
    - `waveId` string
    - `summary` JourneyRunSummary, required
      - `total` integer, required — Targets × `sessionsPerTarget`, fixed at launch.
      - `succeeded` integer, required
      - `failed` integer, required
      - `rateLimited` integer, required
    - `goalCompletion` object, nullable, required — `null` when nothing has been graded — never zeroes, which would read as "everything failed".
      - `gradedCount` integer, required
      - `passedCount` integer, required
      - `avgScore` number, nullable, required
      - `pendingCount` integer, nullable, required
      - `failedCount` integer, nullable, required
    - `findings` SwarmOverviewFinding[], required
      - `criterionId` string, required
      - `label` string, nullable, required
      - `kind` string, nullable, required
      - `failCount` integer, required
      - `pendingCount` integer, required
      - `failedGradingCount` integer, required
      - `sessionsGraded` integer, required — The DENOMINATOR for any rate you compute. Never divide by the session total.
      - `runStreak` integer, required — Consecutive runs of this journey where the criterion failed.
    - `targets` object[], required
      - `hostName` string, required
      - `modelId` string, required
      - `environmentName` string
    - `createdAt` number, required — Epoch milliseconds.
  - `runsConsidered` integer, required — How many runs the roll-up scanned. Bounded — this is not "all runs ever".
  - `goalCompletion` object, required
    - `gradedCount` integer, required
    - `passedCount` integer, required
    - `passRate` number, nullable, required — `null` when nothing is graded yet — never `0`, which would read as "everything failed".
    - `runsWithGrades` integer, required
    - `trend` object[], required
      - `dayStartMs` number, required — UTC day start, epoch milliseconds.
      - `gradedCount` integer, required
      - `passedCount` integer, required
      - `passRate` number, required

## Other responses

- `401` — Missing, invalid, revoked, or orphaned key (`UNAUTHORIZED`) — or the **target MCP server** needs an OAuth grant (`OAUTH_REQUIRED`), which is a property of the server, not your key.
- `403` — Key is valid but not allowed to do this.
- `404` — Unknown project, server, or resource.
- `429` — Per-key rate limit exceeded (60 requests/minute sustained, bursts up to 10). Honor `Retry-After` and back off with jitter.
- `500` — Something failed on MCPJam's side.

---

[API](https://skmtc.net/mcpjam/apis/mcpjam-api.md) · [All operations](https://skmtc.net/mcpjam/apis/mcpjam-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mcpjam/mcpjam-api/revisions/d3adfe49fbbf/schema)
