Source: https://seerepo.com/docs/api-health
Markdown source: https://seerepo.com/docs/api-health.md
Description: The repo's score, whether it can ship and what's worth fixing, with each task's prompt.

# Read the health

`GET https://seerepo.com/api/v1/repos/:repo/health`

Returns Health as the app reads it: the score from 0 to 100 with its band and what each dimension takes from it (tests, cleanup, change risk, security and real errors), and the open tasks, the first one first, each with its why, its files and the prompt for your agent. For your agents it also says whether it can ship and what stops it.

## Request

| Parameter | Where | Description |
|---|---|---|
| `repo` | path | The repo's id, or owner/name with %2F. |

```sh
curl "https://seerepo.com/api/v1/repos/6ad79fd8e89233277ded17c9/health" \
  -H "Authorization: Bearer $SEEREPO_KEY"
```

## Response

| Field | Type | Description |
|---|---|---|
| `data.repo` | object | The repo: its id, its name and its owner/name. |
| `data.score` | object | The score: `value` (0 to 100), `band` (`good`, `regular` or `attention`, decided by the most serious thing open), `dims` (the points each dimension that takes any takes) and, when the band caps the figure, `ceiling`; `trend` is how it moved in the week (`change` against the daily photo of `since`, 7 to 14 days ago), or `null` without a photo that old. The points and the cap give the exact figure. |
| `data.gate` | object | Can it ship?: `pass`, `rows[]` (what stops it or isn't checked yet: `tests`, the tests fail; `noCi`, they don't run on their own; `ciUnseen`, they're set up and haven't been seen running yet; `grave`, something serious is open; `hidden`, pages Google can't see, with `n`) and `passing[]` (what passes). |
| `data.hasCi` | boolean | Whether the repo's tests run on their own on each push. |
| `data.open` | number | How many tasks are open. |
| `data.bySeverity` | object | How many are serious (`high`), moderate (`medium`) and minor (`low`). |
| `data.tasks[]` | object | Each task, the first one first: its `key`, `kind`, `severity`, `dimension`, `points` (what fixing it gains in the score), `title`, `why`, `files`, `prompt` and `openedAt`; `past` when its dimension is past its ceiling (`of`, what the dimension adds up to, its `ceiling`, and `without`, what it would add up to without this task: the score doesn't move until it drops under the ceiling); and `falseFiles` when some of its files were marked false (each with its `path`, `why`, `via`, `at`, `by` and `changeId`). Empty on a free repo. |
| `data.marked[]` | object | The tasks the owner marked false, put off or accepted, whole: they take no points. Each with its `key`, `kind`, `severity`, `title`, `files` and `mark` (`kind`: `false`, `snooze` or `accept`; `until`, `why`, `via`, `at`, `by` and `changeId`). See [the MCP's changes](/docs/mcp). |
| `data.todos` | number | How many pending notes the code has: a TODO or a FIXME that opens a comment or comes right before ":" or "(". Each one is also in the `todos` task. |
| `data.plan` | string | `full`, or `free` on a free glance repo: the score, its band, the gate, how many tasks are open and the title of the first, as in the app. |
| `data.firstTitle` | string or null | On a free glance repo, the title of the first task, without its files, its fix or its prompt. Null on any other plan, and when nothing serious or moderate is open. |

### Example

```json
{
  "status": "success",
  "data": {
    "repo": { "id": "6ad79fd8e89233277ded17c9", "name": "shop", "fullName": "you/shop" },
    "score": { "value": 54, "band": "attention", "dims": { "tests": 15, "cleanup": 10 }, "ceiling": 54 },
    "gate": { "pass": false, "rows": [{ "key": "tests", "state": "fail" }], "passing": [{ "key": "grave" }, { "key": "hidden", "n": 12 }] },
    "hasCi": true,
    "open": 3,
    "bySeverity": { "high": 1, "medium": 0, "low": 2 },
    "tasks": [
      {
        "key": "ci",
        "kind": "ci",
        "severity": "high",
        "dimension": "tests",
        "points": 15,
        "title": "The automatic tests fail",
        "why": "They failed the last time they ran, on the main branch.",
        "files": [],
        "prompt": "The automatic tests of my project shop fail (CI): …",
        "openedAt": "2026-10-18T14:02:11.000Z"
      }
    ],
    "todos": 1,
    "plan": "full",
    "firstTitle": null
  }
}
```
