neosourceDocs
Search docs

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

ownerrequired

Repository owner or organization slug.

string

reporequired

Repository name.

string

Query parameters

ref

Bookmark name to walk from. Defaults to the repository default branch.

string

per_page

Number of commits per page (max 100, default 30).

integerint32

after

Commit OID to start listing after (exclusive cursor for pagination). Must be reachable from the selected repository.

string

author

Filter to commits whose author name or email contains this string (case-insensitive). Applied along the branch-scoped walk.

string

since

Only commits authored at/after this RFC3339 timestamp.

string

until

Only commits authored at/before this RFC3339 timestamp.

string

Responses

200Commit list

application/json

CommitListResponse

object

commitsrequired

array

items

CommitResponse

object

author_account
one of
checks
committerrequired
CommitSignatureResponse
committer_account
one of
messagerequired

string

oidrequired

string

parentsrequired

array

items

string

pull_request
treerequired

string

has_morerequired

boolean

next_cursor

string | null

Explicit cursor to pass as `after` for the next page (the deepest commit walked). Present when `has_more`. Absent → use the last commit's `oid` (back-compat for the unfiltered path).

searched

integer | nullint32

Commits examined to produce this page — present only when a filter is active, so the UI can show "searched N commits".

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

object

emailrequired

string

namerequired

string

timestamprequired

integerint64

AuthorRef

object

A commit author/committer resolved to a platform account, matched at read time on a **verified** email. `None` when the commit's email is not a verified account (imported history, an unverified address, a bot) — the raw `name`/`email` on the signature is still rendered, as GitHub does.

account_idrequired

string

display_namerequired

string

emailrequired

string

handlerequired

string

CommitChecksSummary

object

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.

failedrequired

integerint64

pendingrequired

integerint64

staterequired

CommitStatusState

string

State of a single commit status, GitHub-shaped. `Error` is distinct from `Failure` on individual statuses (infrastructure/tooling breakage vs. a real red result) but the combined rollup folds both into `Failure`.

"pending""success""failure""error"

succeededrequired

integerint64

totalrequired

integerint64

CommitPullRequestRef

object

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

boolean

`true` if this commit is the PR's current head; `false` if it is only a historical revision head.

numberrequired

integerint32

statusrequired

PullRequestStatus

string

Lifecycle status of a pull request.

"open""merged""closed"

titlerequired

string