Leer la salud
GET https://seerepo.com/api/v1/repos/:repo/health
Devuelve Salud como se lee en la app: la nota de 0 a 100 con su banda y lo que le quita cada dimensión (pruebas, limpieza, riesgo del cambio, seguridad y errores reales), y las tareas abiertas, la primera primero, cada una con su porqué, sus archivos y el prompt para tu agente. Para tus agentes trae además si se puede publicar y qué lo impide. Los textos van en inglés, como el resto de la API.
Petición
| Parámetro | Dónde | Descripción |
|---|---|---|
repo |
ruta | El id del repo, o owner/name con %2F. |
curl "https://seerepo.com/api/v1/repos/6ad79fd8e89233277ded17c9/health" \
-H "Authorization: Bearer $SEEREPO_KEY"
Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
data.repo |
object | El repo: su id, su nombre y su owner/name. |
data.score |
object | La nota: value (0 a 100), band (good, regular o attention, la decide lo más grave abierto), dims (los puntos que quita cada dimensión que quita alguno) y, cuando la banda topa la cifra, ceiling; trend es cuánto se movió en la semana (change contra la foto diaria de since, de hace 7 a 14 días), o null sin una foto tan vieja. Los puntos y el tope dan la cifra exacta. |
data.gate |
object | ¿Se puede publicar?: pass, rows[] (lo que lo impide o todavía no se comprueba: tests, las pruebas fallan; noCi, no corren solas; ciUnseen, están montadas y todavía no se vieron correr; grave, algo grave abierto; hidden, páginas que Google no ve, con n) y passing[] (lo que pasa). |
data.hasCi |
boolean | Si las pruebas del repo corren solas en cada push. |
data.open |
number | Cuántas tareas hay abiertas. |
data.bySeverity |
object | Cuántas son graves (high), moderadas (medium) y leves (low). |
data.tasks[] |
object | Cada tarea, la primera primero: su key, kind, severity, dimension, points (lo que gana la nota al arreglarla), title, why, files, prompt y openedAt; past cuando su dimensión pasó su techo (of, lo que suma la dimensión, su ceiling, y without, lo que sumaría sin esta tarea: la nota no se mueve hasta bajar del techo); y falseFiles cuando algunos de sus archivos se marcaron como falsos (cada uno con su path, why, via, at, by y changeId). Vacío en un repo gratis. |
data.marked[] |
object | Las tareas que el dueño marcó como falsas, pospuso o aceptó enteras: no quitan puntos. Cada una con su key, kind, severity, title, files y mark (kind: false, snooze o accept; until, why, via, at, by y changeId). Mira los cambios del MCP. |
data.todos |
number | Cuántas notas pendientes hay en el código: un TODO o un FIXME que abre un comentario o va pegado a «:» o «(». Cada una sale también en la tarea todos. |
data.plan |
string | full, o free en un repo del vistazo gratis: la nota, su banda, la puerta, cuántas tareas hay y el título de la primera, como en la app. |
data.firstTitle |
string o null | En un repo del vistazo gratis, el título de la primera tarea, sin sus archivos, su arreglo ni su prompt. Null en cualquier otro plan, y cuando no hay nada grave ni moderado abierto. |
Ejemplo
{
"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
}
}