REST API endpoints for labels

Use the REST API to manage labels for repositories, issues and pull requests.

About labels

You can use the REST API to manage labels for a repository and add or remove labels to issues and pull requests. Every pull request is an issue, but not every issue is a pull request. For this reason, "shared" actions for both features, like managing assignees, labels, and milestones, are provided within the Issues endpoints.

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.

List labels for an issue

GET /repos/{owner}/{repo}/issues/{issue_number}/labels

Lists all labels for an issue.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/repos/OWNER/REPO/issues/ISSUE_NUMBER/labels

Response schema (Status: 200):

Array of Label:

Add labels to an issue

POST /repos/{owner}/{repo}/issues/{issue_number}/labels

Adds labels to an issue.

Parameters

Headers

Path and query parameters

Body parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X POST \
  https://api.github.com/repos/OWNER/REPO/issues/ISSUE_NUMBER/labels \
  -d '{
  "labels": [
    "bug",
    "enhancement"
  ]
}'

Response schema (Status: 200):

Same response schema as List labels for an issue.

Set labels for an issue

PUT /repos/{owner}/{repo}/issues/{issue_number}/labels

Removes any previous labels and sets the new labels for an issue.

Parameters

Headers

Path and query parameters

Body parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X PUT \
  https://api.github.com/repos/OWNER/REPO/issues/ISSUE_NUMBER/labels \
  -d '{
  "labels": [
    "bug",
    "enhancement"
  ]
}'

Response schema (Status: 200):

Same response schema as List labels for an issue.

Remove all labels from an issue

DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels

Removes all labels from an issue.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X DELETE \
  https://api.github.com/repos/OWNER/REPO/issues/ISSUE_NUMBER/labels

Response schema (Status: 204):

Remove a label from an issue

DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}

Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a 404 Not Found status if the label does not exist.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X DELETE \
  https://api.github.com/repos/OWNER/REPO/issues/ISSUE_NUMBER/labels/NAME

Response schema (Status: 200):

Same response schema as List labels for an issue.

List labels for a repository

GET /repos/{owner}/{repo}/labels

Lists all labels for a repository.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/repos/OWNER/REPO/labels

Response schema (Status: 200):

Same response schema as List labels for an issue.

Create a label

POST /repos/{owner}/{repo}/labels

Creates a label for the specified repository with the given name and color. The name and color parameters are required. The color must be a valid hexadecimal color code.

Parameters

Headers

Path and query parameters

Body parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X POST \
  https://api.github.com/repos/OWNER/REPO/labels \
  -d '{
  "name": "bug",
  "description": "Something isn'\''t working",
  "color": "f29513"
}'

Response schema (Status: 201):

Get a label

GET /repos/{owner}/{repo}/labels/{name}

Gets a label using the given name.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/repos/OWNER/REPO/labels/NAME

Response schema (Status: 200):

Same response schema as Create a label.

Update a label

PATCH /repos/{owner}/{repo}/labels/{name}

Updates a label using the given label name.

Parameters

Headers

Path and query parameters

Body parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X PATCH \
  https://api.github.com/repos/OWNER/REPO/labels/NAME \
  -d '{
  "new_name": "bug :bug:",
  "description": "Small bug fix required",
  "color": "b01f26"
}'

Response schema (Status: 200):

Same response schema as Create a label.

Delete a label

DELETE /repos/{owner}/{repo}/labels/{name}

Deletes a label using the given label name.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X DELETE \
  https://api.github.com/repos/OWNER/REPO/labels/NAME

Response schema (Status: 204):

List labels for issues in a milestone

GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels

Lists labels for issues in a milestone.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/repos/OWNER/REPO/milestones/MILESTONE_NUMBER/labels

Response schema (Status: 200):

Same response schema as List labels for an issue.