Draw my repo

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.
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.
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

{
  "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
  }
}