# 存储库统计信息的 REST API 终结点

使用 REST API 获取 GitHub 用于可视化不同类型存储库活动的数据。

## 关于存储库统计信息

可使用 REST API 获取 GitHub 用于可视化不同类型存储库活动的数据。

### 缓存最佳做法

计算存储库统计信息是一项昂贵的操作，所以我们尽可能返回缓存的数据。 如果你查询存储库的统计信息时数据尚未缓存，你将会收到 `202` 响应；同时触发后台作业以开始编译这些统计信息。 应留出片刻时间让作业完成，然后再次提交请求。 如果作业已完成，该请求将返回 `200` 响应，响应正文中包含统计信息。

仓库统计信息由仓库默认分支的 SHA 缓存；推送到默认分支将重置统计信息缓存。

### 统计排除某些类型的提交

API 公开的统计信息与[不同存储库图](/zh/enterprise-server@3.22/repositories/viewing-activity-and-data-for-your-repository/about-repository-graphs)显示的统计信息匹配。

总结：

* 所有统计数据均不包括合并提交。
* 参与者统计信息还排除空提交。

> \[!NOTE]
> Most endpoints use `Authorization: Bearer <YOUR-TOKEN>` and `Accept: application/vnd.github+json` headers, plus `X-GitHub-Api-Version: 2026-03-10`. Curl examples below omit these standard headers for brevity.

## Get the weekly commit activity

```
GET /repos/{owner}/{repo}/stats/code_frequency
```

Returns a weekly aggregate of the number of additions and deletions pushed to a repository.

### Parameters

#### Headers

* **`accept`** (string)
  Setting to `application/vnd.github+json` is recommended.

#### Path and query parameters

* **`owner`** (string) (required)
  The account owner of the repository. The name is not case sensitive.

* **`repo`** (string) (required)
  The name of the repository without the .git extension. The name is not case sensitive.

### HTTP response status codes

* **200** - Returns a weekly aggregate of the number of additions and deletions pushed to a repository.

* **202** - Accepted

* **204** - A header with no content is returned.

### Code examples

#### Example

**Request:**

```curl
curl -L \
  -X GET \
  http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/stats/code_frequency
```

**Response schema (Status: 200):**

Array of array

## Get the last year of commit activity

```
GET /repos/{owner}/{repo}/stats/commit_activity
```

Returns the last year of commit activity grouped by week. The days array is a group of commits per day, starting on Sunday.

### Parameters

#### Headers

* **`accept`** (string)
  Setting to `application/vnd.github+json` is recommended.

#### Path and query parameters

* **`owner`** (string) (required)
  The account owner of the repository. The name is not case sensitive.

* **`repo`** (string) (required)
  The name of the repository without the .git extension. The name is not case sensitive.

### HTTP response status codes

* **200** - OK

* **202** - Accepted

* **204** - A header with no content is returned.

### Code examples

#### Example

**Request:**

```curl
curl -L \
  -X GET \
  http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/stats/commit_activity
```

**Response schema (Status: 200):**

Array of `Commit Activity`:

* `days`: required, array of integer
* `total`: required, integer
* `week`: required, integer

## Get all contributor commit activity

```
GET /repos/{owner}/{repo}/stats/contributors
```

Returns the total number of commits authored by the contributor. In addition, the response includes a Weekly Hash (weeks array) with the following information:

w - Start of the week, given as a Unix timestamp.
a - Number of additions
d - Number of deletions
c - Number of commits

### Parameters

#### Headers

* **`accept`** (string)
  Setting to `application/vnd.github+json` is recommended.

#### Path and query parameters

* **`owner`** (string) (required)
  The account owner of the repository. The name is not case sensitive.

* **`repo`** (string) (required)
  The name of the repository without the .git extension. The name is not case sensitive.

### HTTP response status codes

* **200** - OK

* **202** - Accepted

* **204** - A header with no content is returned.

### Code examples

#### Example

**Request:**

```curl
curl -L \
  -X GET \
  http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/stats/contributors
```

**Response schema (Status: 200):**

Array of `Contributor Activity`:

* `author`: required, any of:
  * **null**
  * **Simple User**
    * `name`: string or null
    * `email`: string or null
    * `login`: required, string
    * `id`: required, integer, format: int64
    * `node_id`: required, string
    * `avatar_url`: required, string, format: uri
    * `gravatar_id`: required, string or null
    * `url`: required, string, format: uri
    * `html_url`: required, string, format: uri
    * `followers_url`: required, string, format: uri
    * `following_url`: required, string
    * `gists_url`: required, string
    * `starred_url`: required, string
    * `subscriptions_url`: required, string, format: uri
    * `organizations_url`: required, string, format: uri
    * `repos_url`: required, string, format: uri
    * `events_url`: required, string
    * `received_events_url`: required, string, format: uri
    * `type`: required, string
    * `site_admin`: required, boolean
    * `starred_at`: string
    * `user_view_type`: string
* `total`: required, integer
* `weeks`: required, array of objects:
  * `w`: integer
  * `a`: integer
  * `d`: integer
  * `c`: integer

## Get the weekly commit count

```
GET /repos/{owner}/{repo}/stats/participation
```

Returns the total commit counts for the owner and total commit counts in all. all is everyone combined, including the owner in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract owner from all.
The array order is oldest week (index 0) to most recent week.
The most recent week is seven days ago at UTC midnight to today at UTC midnight.

### Parameters

#### Headers

* **`accept`** (string)
  Setting to `application/vnd.github+json` is recommended.

#### Path and query parameters

* **`owner`** (string) (required)
  The account owner of the repository. The name is not case sensitive.

* **`repo`** (string) (required)
  The name of the repository without the .git extension. The name is not case sensitive.

### HTTP response status codes

* **200** - The array order is oldest week (index 0) to most recent week.

* **404** - Resource not found

### Code examples

#### Example

**Request:**

```curl
curl -L \
  -X GET \
  http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/stats/participation
```

**Response schema (Status: 200):**

* `all`: required, array of integer
* `owner`: required, array of integer

## Get the hourly commit count for each day

```
GET /repos/{owner}/{repo}/stats/punch_card
```

Each array contains the day number, hour number, and number of commits:

0-6: Sunday - Saturday
0-23: Hour of day
Number of commits

For example, \[2, 14, 25] indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits.

### Parameters

#### Headers

* **`accept`** (string)
  Setting to `application/vnd.github+json` is recommended.

#### Path and query parameters

* **`owner`** (string) (required)
  The account owner of the repository. The name is not case sensitive.

* **`repo`** (string) (required)
  The name of the repository without the .git extension. The name is not case sensitive.

### HTTP response status codes

* **200** - For example, \[2, 14, 25] indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits.

* **204** - A header with no content is returned.

### Code examples

#### Example

**Request:**

```curl
curl -L \
  -X GET \
  http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/stats/punch_card
```

**Response schema (Status: 200):**

Same response schema as [Get the weekly commit activity](#get-the-weekly-commit-activity).