Source: https://seerepo.com/docs/api-history
Markdown source: https://seerepo.com/docs/api-history.md
Description: The project's last 7 days, how it's worked against its usual, and its moments.

# Read the journey

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

Returns Journey as the app reads it: what happened in the project's last 7 days (its commits, who wrote them, where and what shipped), how it's worked against its usual, in days with work, and the moments worth telling, newest first. The words go in English, like the rest of the API.

## Request

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

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

## Response

| Field | Type | Description |
|---|---|---|
| `data.repo` | object | The repo: its id, its name and its owner/name. |
| `data.plan` | string | `full`, or `free` on a free glance repo: the week's count and the share AI signed, not which agent signed it, where, nor the moments, as in the app. |
| `data.firstCommitAt`, `data.lastCommitAt` | string | Its first and its last commit, as dates. |
| `data.week` | object | The last 7 days, today and the six before in the project's time zone, or, when they had no commits, the last week with work, the 7 days ending on its last commit (`lastWork: true`): `from`, `to`, `lastWork`, `commits`, `writtenWithAi` (a percentage; `null` for a week older than the 90 days whose authors are kept), `agents[]` (each agent with its commits, and `no agent` for the ones none signed), `modules[]` (the top-level modules most worked on, with their days with work, not their commits), `born[]` (the modules born), `deploys` (the times it reached production, each on its commit's day: what SeeRepo reads on your site, on GitHub or in your platform's notice, or what GitHub saw when there's no other source), `lastPush` (`published`, `publishing`, `late` when it didn't arrive in 30 minutes, or `failed`; `null` when SeeRepo doesn't know how you publish), `summary` (the week in words, in the project's language, when it exists), `summaryWritten` (when it was written and over how many commits: it's written once a day), `testsBroke` (the day the tests broke, if they did) and `lastActiveDay`. A member of a team, once Journey knows who they are, also gets `yours`. |
| `data.pace` | object | How it's worked, as Activity says it: `daysWorked` (the days with commits among the last `of`, which is 28), `usual` (how many are usual in its life, up to a year back; `null` when it's under 56 days old), `lifeDays` (its age in days) and `said` (the sentence). With no work in the 28 days, `daysWorked` is 0 and the sentence says since when. `null` on a free repo. |
| `data.log[]` | object | The moments and achievements, the biggest first: `kind` (`workdays`: a milestone of days with work; `streak`: the longest run of days in a row with work; `deploy`: the first deploy, only when it can be known; `founding`, `relay`, `agent`: the first commit an AI signed; `busiest`: the kept day the most modules were touched; `born`, `first`), `date`, `week` (told as the week of that date), `month` (told by its month: `date` is the month's first day), `ties` (on `busiest`, how many other days touched as many modules), `title` and `line`. `null` on a free repo. |

### Example

```json
{
  "status": "success",
  "data": {
    "repo": { "id": "6ad79fd8e89233277ded17c9", "name": "Seerepo", "fullName": "curetcore/seerepo" },
    "plan": "full",
    "firstCommitAt": "2026-10-15T05:48:14.000Z",
    "lastCommitAt": "2026-10-25T19:16:21.000Z",
    "week": {
      "from": "2026-10-20",
      "to": "2026-10-26",
      "commits": 943,
      "writtenWithAi": 100,
      "agents": [{ "name": "Claude", "commits": 943 }],
      "modules": [{ "name": "Shared pieces", "days": 7 }, { "name": "Repo dashboard", "days": 6 }],
      "born": [],
      "deploys": 33,
      "lastPush": "published",
      "summary": "Health checks and the health score got clearer, and the app now reads its data sources more accurately.",
      "testsBroke": null,
      "lastActiveDay": "2026-10-25"
    },
    "pace": { "daysWorked": 12, "of": 28, "usual": null, "lifeDays": 12, "said": "It's 12 days old and was worked on every day." },
    "log": [
      { "kind": "born", "date": "2026-10-22", "week": false, "title": "Notifications was born", "line": "" },
      { "kind": "founding", "date": "2026-10-15", "week": false, "title": "Seerepo was born", "line": "The first commit, and in its first week its first 10 modules: Access and account, Internal administration, GitHub connection and 7 more." }
    ]
  }
}
```
