Draw my repo

Get the documentation

GET https://seerepo.com/api/v1/repos/:repo/docs and GET https://seerepo.com/api/v1/repos/:repo/docs/:page

Returns the Documentation folder as it reads in the app. The first gives the wiki's tree: each page's key, title and level, and the commit recorded by the documentation scan. The second gives one page: its markdown, where each claim ends with the file and lines it comes from, the outline of its sections, its sources with the part of the map that holds each file and its link to GitHub at the commit that wrote the page, and the diagram SeeRepo drew from the map. Every page is written first from what SeeRepo read, without AI; the prose of a page with a plan comes later and replaces its opening.

Request

Parameter Where Description
repo path The repo's id, or owner/name with %2F.
page path A page's key from the tree: 1 is the project, 2 a world, 2.3 a world inside it.
curl "https://seerepo.com/api/v1/repos/6ad79fd8e89233277ded17c9/docs/2" \
  -H "Authorization: Bearer $SEEREPO_KEY"

Response

The tree:

Field Type Description
data.repo object The repo: its id and its name.
data.sha string|null The commit recorded by the documentation scan. Null until its first writing.
data.at string|null When it was last written.
data.pages[] object Each page in order: its key, title, level (1 or 2), parent, factsAt (when what it says last changed, null if that was before SeeRepo kept this), locked (true for the pages a free repo opens with a plan) and phrase (what its module does, in the map's sentence; null for the project, the glossary and a locked page).

A page:

Field Type Description
data.key, data.title, data.level, data.parent Where the page is in the tree.
data.world string|null The world of the map it tells. Null for the project and the glossary.
data.body string The page in markdown. Each claim ends with [path from-to].
data.outline[] object Each section's id, level and title, in order.
data.sources[] object Each file the page cites: its path, from, to, its url on GitHub at the commit that wrote the page, and its part in the map (world and id), or null.
data.diagram string|null The page's diagram in Mermaid, drawn by SeeRepo from the map's connections.
data.lang string The chapter's recorded language.
data.by string facts while the page is written from what SeeRepo read alone; else the model that wrote its prose.
data.sha, data.at The chapter's source commit and document writing time (not the commit date). Unchanged chapters can retain an earlier version.
data.changes[] object What the page's shape gained and lost each time what it says changed, newest first, ten at most. Each one: at, sha (the commit of that reading), parts (added, each with its name and its part in the map, or null; removed, the names), connections (added and removed, as numbers), and pages, data, services and modules (added and removed, the names). A list of names holds five at most, with the rest counted in addedMore and removedMore. touched is true when what it says changed and its shape didn't. Empty until that happens after SeeRepo started keeping it, and on a free repo.

Example

{
  "status": "success",
  "data": {
    "key": "2",
    "title": "Billing",
    "level": 1,
    "parent": null,
    "world": "/billing",
    "body": "# Billing\n\nCharges people [app/api/pay/route.ts 1-25]. It has 3 parts; open to anyone through `/pricing` [app/pricing/page.tsx 3-3].\n\n## Its parts\n- **/pricing** — Shows the plans [app/pricing/page.tsx 1-40]\n",
    "outline": [{ "id": "parts", "level": 2, "title": "Its parts" }],
    "sources": [{ "path": "app/pricing/page.tsx", "from": 1, "to": 40, "url": "https://github.com/acme/shop/blob/abc1234/app/pricing/page.tsx#L1-L40", "part": { "world": "/billing", "id": "app/pricing/page.tsx" } }],
    "diagram": "flowchart LR\n  n0([\"Visitors\"])\n  n1[\"/pricing\"]\n  n0 -->|enters| n1",
    "lang": "en",
    "by": "facts",
    "sha": "abc1234",
    "at": "2026-10-22T05:40:39.836Z",
    "changes": [{ "at": "2026-10-22T05:40:39.836Z", "sha": "abc1234", "parts": { "added": [{ "name": "/pricing", "part": { "world": "/billing", "id": "app/pricing/page.tsx" } }], "addedMore": 0, "removed": [], "removedMore": 0 }, "connections": { "added": 1, "removed": 0 }, "pages": { "added": ["/pricing"], "addedMore": 0, "removed": [], "removedMore": 0 }, "data": { "added": [], "addedMore": 0, "removed": [], "removedMore": 0 }, "services": { "added": [], "addedMore": 0, "removed": [], "removedMore": 0 }, "modules": { "added": [], "addedMore": 0, "removed": [], "removedMore": 0 }, "touched": false }]
  }
}

A free repo gets the whole tree and the project's page; any other page is a not_found, as in the app.

Authentication

An API key as Authorization: Bearer sr_…. See Authentication.