---
title: "Get Commit Evolution"
method: GET
path: "/snapshots/{snapshot_id}/commits/evolution"
tags: ["git"]
---

# Get Commit Evolution

`GET /snapshots/{snapshot_id}/commits/evolution`

The repo's development "story arc" — commit-category mix over time.

Each commit was classified into exactly one category (feature / fix /
refactor / docs / test / deps / chore / other) at index time and stamped
onto its `git_commits.json` row. We bucket by month (or week on
short-history repos) and stack the categories so the UI can show how the
development emphasis shifts as the repo matures.

Declared before ``/commits/{sha}`` so the literal path wins over the
SHA wildcard.

## Path parameters

- `snapshot_id` string, required

## Query parameters

- `granularity` string

## Response `200`

Successful Response

- CommitEvolutionResponse — Commit-category mix over time — the repo's development "story arc".
  - `buckets` CommitEvolutionBucket[]
    - `period` string, required
    - `start` string, required
    - `total` integer
    - `counts` object
  - `categories` string[]
  - `totals` object
  - `total_commits` integer
  - `granularity` string
  - `first_commit_at` string, nullable
  - `last_commit_at` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/repowise/apis/repowise-hosted-api.md) · [All operations](https://skmtc.dev/repowise/apis/repowise-hosted-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/repowise/repowise-hosted-api/revisions/1e57283a9737/schema)
