Skip to navigation

Commits across several projects and branches

Built for a time-tracker: what was committed while a timer ran, across whatever projects and branches you name.

Commits are deduplicated by hash and annotated with every branch they were found on, so work merged develop → main is billed once. A project that fails carries an error and a zero count while the others still return their commits.

Authentication

X-API-Keystring

Create one in the app under Settings → API keys. It is shown once and stored only as a hash, so it cannot be recovered — losing it means issuing a new one.

A key reads the endpoints below and nothing else. It is not a session: it cannot create or delete projects, change settings, or issue another API key. It sees exactly what its owner sees, re-checked on every request, so removing someone’s access to a project removes it from their key on the very next call.

OR
AuthorizationBearer

The same key, sent as Authorization: Bearer <key>.

Query parameters

projectsstringOptional

Comma-separated project ids or names. Default: every project the key can read. Maximum 60 per call. An unknown name is a 404, not an empty list — a typo that returned nothing would look exactly like a quiet week.

fromstringOptional

ISO-8601. Filters on COMMIT date.

tostringOptional

ISO-8601.

branchesstringOptionalDefaults to all

all, or a comma-separated list such as develop,main. A branch a project does not have is skipped quietly. all cannot be combined with named branches.

limitintegerOptional<=1000Defaults to 200
Per project, not per response.
statsbooleanOptionalDefaults to true

Files changed / insertions / deletions. false is faster.

Response

OK
brancheslist of stringsOptional
dateFieldenumOptional
Which date the range filtered on.
Allowed values:
fromstring or nullOptional
The instant actually used, after a zoneless input was read as UTC.
projectCountintegerOptional
projectslist of objectsOptional
tostring or nullOptional
totalCommitsintegerOptional

Errors

400
Bad Request Error
401
Unauthorized Error
404
Not Found Error
429
Too Many Requests Error