List commit history
GET/api/repos/{owner}/{repo}/commits
listRepositoryCommits
Returns a paginated commit log walking from the selected bookmark. Raw commit cursors must be reachable from the selected repository.
Authentication is not described for this operation in the spec — that does not mean it is public. Check tokens and scopes.
curl
curl -X GET 'https://neosource.dev/api/repos/OWNER/REPO/commits'fetch
fetch("https://neosource.dev/api/repos/OWNER/REPO/commits", {
method: "GET",
});Path parameters
ownerrequiredRepository owner or organization slug.
reporequiredRepository name.
Query parameters
refBookmark name to walk from. Defaults to the repository default branch.
per_pageNumber of commits per page (max 100, default 30).
afterCommit OID to start listing after (exclusive cursor for pagination). Must be reachable from the selected repository.
authorFilter to commits whose author name or email contains this string (case-insensitive). Applied along the branch-scoped walk.
sinceOnly commits authored at/after this RFC3339 timestamp.
untilOnly commits authored at/before this RFC3339 timestamp.
Responses
200Commit list
application/json
Standard errors
Bodies documented once for the whole API — see standard errors.
- 400Bad Request — one of: invalid_input
- 403Forbidden — one of: forbidden
- 404Not Found — one of: not_found
- 423Locked — one of: busy
- 429Rate limited — retry after the interval in the `Retry-After` header
- 500Internal server error
- 503Service temporarily unavailable / at capacity — retry after the `Retry-After` header
- 504Gateway timeout — the request exceeded the server's handling budget
Schemas
Referenced above. Listed here rather than expanded inline, so the same definition is not repeated at every level.
CommitSignatureResponse
emailrequirednamerequiredtimestamprequired
CommitChecksSummary
Rollup of everything that checked a commit: workflow runs it triggered plus external statuses posted against it. `state` follows [`CommitStatusState::rollup`] — `failure` if anything failed, `pending` while anything is still in flight, `success` only when all green. The counts and `state` are PER RUN: every run on the commit, a re-run's superseded earlier attempts included, so a failed attempt re-run green still counts as failed here. `workflows` is the newest attempt of each workflow and can therefore disagree with them; a row's colours come from `workflows` + `statuses` alone.
failedrequiredpendingrequiredIncludes `superseded`.
staterequiredstatuses- one of
succeededrequiredsupersededrequiredRuns the merge queue superseded and cancelled (ADR 0160): they roll `state` up as `pending` (never green, never red) and are a SUBSET of `pending` (`superseded <= pending`) — the ones that will not resolve on their own.
totalrequiredworkflowsrequiredThe same runs split by workflow: each workflow's newest run (latest attempt) on this commit, in row order (by path, then id). What a commit row paints one icon per; the counts above stay the roll-up.
items
CommitPullRequestRef
The pull request a commit belongs to, resolved at read time by matching the commit against PR heads (`is_head = true`) and historical revision heads (`is_head = false`). `None` when the commit is not any PR's (current or past) head.
is_headrequired`true` if this commit is the PR's current head; `false` if it is only a historical revision head.
numberrequiredstatusrequiredtitlerequired