Self-hosted runner groups
The Self-hosted Runners Groups API allows you manage groups of self-hosted runners.
About the Self-hosted runner groups API
The Self-hosted runners groups API allows you manage groups of self-hosted runners. For more information, see "Managing access to self-hosted runners using groups."
This API is available for authenticated users, OAuth Apps, and GitHub Apps. Access tokens require repo
scope for private repositories and public_repo
scope for internal repositories. GitHub Apps must have the administration
permission for repositories or the organization_self_hosted_runners
permission for organizations. Authenticated users must have admin access to repositories or organizations, or the manage_runners:enterprise
scope for enterprises to use this API.
List self-hosted runner groups for an enterprise
Lists all self-hosted runner groups for an enterprise.
You must authenticate using an access token with the manage_runners:enterprise
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
enterprise stringRequiredThe slug version of the enterprise name. You can also substitute this value with the enterprise id. |
Query parameters |
Name, Type, Description |
per_page integerThe number of results per page (max 100). Default: |
page integerPage number of the results to fetch. Default: |
HTTP response status codes
Status code | Description |
---|---|
200 | OK |
Code samples
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups
Response
Status: 200
{
"total_count": 3,
"runner_groups": [
{
"id": 1,
"name": "Default",
"visibility": "all",
"default": true,
"runners_url": "https://api.github.com/enterprises/octo-corp/actions/runner_groups/1/runners",
"allows_public_repositories": false
},
{
"id": 2,
"name": "octo-runner-group",
"visibility": "selected",
"default": false,
"selected_organizations_url": "https://api.github.com/enterprises/octo-corp/actions/runner_groups/2/organizations",
"runners_url": "https://api.github.com/enterprises/octo-corp/actions/runner_groups/2/runners",
"allows_public_repositories": true
},
{
"id": 3,
"name": "expensive-hardware",
"visibility": "private",
"default": false,
"runners_url": "https://api.github.com/enterprises/octo-corp/actions/runner_groups/3/runners",
"allows_public_repositories": true
}
]
}
Create a self-hosted runner group for an enterprise
Creates a new self-hosted runner group for an enterprise.
You must authenticate using an access token with the manage_runners:enterprise
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
enterprise stringRequiredThe slug version of the enterprise name. You can also substitute this value with the enterprise id. |
Body parameters |
Name, Type, Description |
name stringRequiredName of the runner group. |
visibility stringVisibility of a runner group. You can select all organizations or select individual organization. Can be one of: |
selected_organization_ids array of integersList of organization IDs that can access the runner group. |
runners array of integersList of runner IDs to add to the runner group. |
allows_public_repositories booleanWhether the runner group can be used by Default: |
HTTP response status codes
Status code | Description |
---|---|
201 | Created |
Code samples
curl \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups \
-d '{"name":"Expensive hardware runners","visibility":"selected","selected_organization_ids":[32,91],"runners":[9,2]}'
Response
Status: 201
{
"id": 2,
"name": "octo-runner-group",
"visibility": "selected",
"default": false,
"selected_organizations_url": "https://api.github.com/enterprises/octo-corp/actions/runner-groups/2/organizations",
"runners_url": "https://api.github.com/enterprises/octo-corp/actions/runner-groups/2/runners",
"allows_public_repositories": false
}
Get a self-hosted runner group for an enterprise
Gets a specific self-hosted runner group for an enterprise.
You must authenticate using an access token with the manage_runners:enterprise
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
enterprise stringRequiredThe slug version of the enterprise name. You can also substitute this value with the enterprise id. |
runner_group_id integerRequiredUnique identifier of the self-hosted runner group. |
HTTP response status codes
Status code | Description |
---|---|
200 | OK |
Code samples
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups/RUNNER_GROUP_ID
Response
Status: 200
{
"id": 2,
"name": "octo-runner-group",
"visibility": "selected",
"default": false,
"selected_organizations_url": "https://api.github.com/enterprises/octo-corp/actions/runner-groups/2/organizations",
"runners_url": "https://api.github.com/enterprises/octo-corp/actions/runner-groups/2/runners",
"allows_public_repositories": false
}
Update a self-hosted runner group for an enterprise
Updates the name
and visibility
of a self-hosted runner group in an enterprise.
You must authenticate using an access token with the manage_runners:enterprise
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
enterprise stringRequiredThe slug version of the enterprise name. You can also substitute this value with the enterprise id. |
runner_group_id integerRequiredUnique identifier of the self-hosted runner group. |
Body parameters |
Name, Type, Description |
name stringName of the runner group. |
visibility stringVisibility of a runner group. You can select all organizations or select individual organizations. Default: Can be one of: |
allows_public_repositories booleanWhether the runner group can be used by Default: |
HTTP response status codes
Status code | Description |
---|---|
200 | OK |
Code samples
curl \
-X PATCH \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups/RUNNER_GROUP_ID \
-d '{"name":"Expensive hardware runners","visibility":"selected"}'
Response
Status: 200
{
"id": 2,
"name": "Expensive hardware runners",
"visibility": "selected",
"default": false,
"selected_organizations_url": "https://api.github.com/enterprises/octo-corp/actions/runner-groups/2/organizations",
"runners_url": "https://api.github.com/enterprises/octo-corp/actions/runner-groups/2/runners",
"allows_public_repositories": true
}
Delete a self-hosted runner group from an enterprise
Deletes a self-hosted runner group for an enterprise.
You must authenticate using an access token with the manage_runners:enterprise
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
enterprise stringRequiredThe slug version of the enterprise name. You can also substitute this value with the enterprise id. |
runner_group_id integerRequiredUnique identifier of the self-hosted runner group. |
HTTP response status codes
Status code | Description |
---|---|
204 | No Content |
Code samples
curl \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups/RUNNER_GROUP_ID
Response
Status: 204
List self-hosted runners in a group for an enterprise
Lists the self-hosted runners that are in a specific enterprise group.
You must authenticate using an access token with the manage_runners:enterprise
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
enterprise stringRequiredThe slug version of the enterprise name. You can also substitute this value with the enterprise id. |
runner_group_id integerRequiredUnique identifier of the self-hosted runner group. |
Query parameters |
Name, Type, Description |
per_page integerThe number of results per page (max 100). Default: |
page integerPage number of the results to fetch. Default: |
HTTP response status codes
Status code | Description |
---|---|
200 | OK |
Code samples
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups/RUNNER_GROUP_ID/runners
Response
Status: 200
{
"total_count": 2,
"runners": [
{
"id": 23,
"name": "linux_runner",
"os": "linux",
"status": "online",
"busy": true,
"labels": [
{
"id": 5,
"name": "self-hosted",
"type": "read-only"
},
{
"id": 7,
"name": "X64",
"type": "read-only"
},
{
"id": 11,
"name": "Linux",
"type": "read-only"
}
]
},
{
"id": 24,
"name": "mac_runner",
"os": "macos",
"status": "offline",
"busy": false,
"labels": [
{
"id": 5,
"name": "self-hosted",
"type": "read-only"
},
{
"id": 7,
"name": "X64",
"type": "read-only"
},
{
"id": 20,
"name": "macOS",
"type": "read-only"
},
{
"id": 21,
"name": "no-gpu",
"type": "custom"
}
]
}
]
}
Set self-hosted runners in a group for an enterprise
Replaces the list of self-hosted runners that are part of an enterprise runner group.
You must authenticate using an access token with the manage_runners:enterprise
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
enterprise stringRequiredThe slug version of the enterprise name. You can also substitute this value with the enterprise id. |
runner_group_id integerRequiredUnique identifier of the self-hosted runner group. |
Body parameters |
Name, Type, Description |
runners array of integersRequiredList of runner IDs to add to the runner group. |
HTTP response status codes
Status code | Description |
---|---|
204 | No Content |
Code samples
curl \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups/RUNNER_GROUP_ID/runners \
-d '{"runners":[9,2]}'
Response
Status: 204
Add a self-hosted runner to a group for an enterprise
Adds a self-hosted runner to a runner group configured in an enterprise.
You must authenticate using an access token with the manage_runners:enterprise
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
enterprise stringRequiredThe slug version of the enterprise name. You can also substitute this value with the enterprise id. |
runner_group_id integerRequiredUnique identifier of the self-hosted runner group. |
runner_id integerRequiredUnique identifier of the self-hosted runner. |
HTTP response status codes
Status code | Description |
---|---|
204 | No Content |
Code samples
curl \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups/RUNNER_GROUP_ID/runners/RUNNER_ID
Response
Status: 204
Remove a self-hosted runner from a group for an enterprise
Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group.
You must authenticate using an access token with the manage_runners:enterprise
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
enterprise stringRequiredThe slug version of the enterprise name. You can also substitute this value with the enterprise id. |
runner_group_id integerRequiredUnique identifier of the self-hosted runner group. |
runner_id integerRequiredUnique identifier of the self-hosted runner. |
HTTP response status codes
Status code | Description |
---|---|
204 | No Content |
Code samples
curl \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups/RUNNER_GROUP_ID/runners/RUNNER_ID
Response
Status: 204
List self-hosted runner groups for an organization
Lists all self-hosted runner groups configured in an organization and inherited from an enterprise.
You must authenticate using an access token with the admin:org
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
org stringRequiredThe organization name. The name is not case sensitive. |
Query parameters |
Name, Type, Description |
per_page integerThe number of results per page (max 100). Default: |
page integerPage number of the results to fetch. Default: |
HTTP response status codes
Status code | Description |
---|---|
200 | OK |
Code samples
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups
Response
Status: 200
{
"total_count": 3,
"runner_groups": [
{
"id": 1,
"name": "Default",
"visibility": "all",
"default": true,
"runners_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/1/runners",
"inherited": false,
"allows_public_repositories": true
},
{
"id": 2,
"name": "octo-runner-group",
"visibility": "selected",
"default": false,
"selected_repositories_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/2/repositories",
"runners_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/2/runners",
"inherited": true,
"allows_public_repositories": true
},
{
"id": 3,
"name": "expensive-hardware",
"visibility": "private",
"default": false,
"runners_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/3/runners",
"inherited": false,
"allows_public_repositories": true
}
]
}
Create a self-hosted runner group for an organization
The self-hosted runner groups REST API is available with GitHub Enterprise Cloud and GitHub Enterprise Server. For more information, see "GitHub's products."
Creates a new self-hosted runner group for an organization.
You must authenticate using an access token with the admin:org
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
org stringRequiredThe organization name. The name is not case sensitive. |
Body parameters |
Name, Type, Description |
name stringRequiredName of the runner group. |
visibility stringVisibility of a runner group. You can select all repositories, select individual repositories, or limit access to private repositories. Default: Can be one of: |
selected_repository_ids array of integersList of repository IDs that can access the runner group. |
runners array of integersList of runner IDs to add to the runner group. |
allows_public_repositories booleanWhether the runner group can be used by Default: |
HTTP response status codes
Status code | Description |
---|---|
201 | Created |
Code samples
curl \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups \
-d '{"name":"Expensive hardware runners","visibility":"selected","selected_repository_ids":[32,91],"runners":[9,2]}'
Response
Status: 201
{
"id": 2,
"name": "octo-runner-group",
"visibility": "selected",
"default": false,
"selected_repositories_url": "https://api.github.com/orgs/octo-org/actions/runner-groups/2/repositories",
"runners_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/2/runners",
"inherited": false,
"allows_public_repositories": true
}
Get a self-hosted runner group for an organization
Gets a specific self-hosted runner group for an organization.
You must authenticate using an access token with the admin:org
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
org stringRequiredThe organization name. The name is not case sensitive. |
runner_group_id integerRequiredUnique identifier of the self-hosted runner group. |
HTTP response status codes
Status code | Description |
---|---|
200 | OK |
Code samples
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups/RUNNER_GROUP_ID
Response
Status: 200
{
"id": 2,
"name": "octo-runner-group",
"visibility": "selected",
"default": false,
"selected_repositories_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/2/repositories",
"runners_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/2/runners",
"inherited": false,
"allows_public_repositories": true
}
Update a self-hosted runner group for an organization
The self-hosted runner groups REST API is available with GitHub Enterprise Cloud. For more information, see "GitHub's products."
Updates the name
and visibility
of a self-hosted runner group in an organization.
You must authenticate using an access token with the admin:org
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
org stringRequiredThe organization name. The name is not case sensitive. |
runner_group_id integerRequiredUnique identifier of the self-hosted runner group. |
Body parameters |
Name, Type, Description |
name stringRequiredName of the runner group. |
visibility stringVisibility of a runner group. You can select all repositories, select individual repositories, or all private repositories. Can be one of: |
allows_public_repositories booleanWhether the runner group can be used by Default: |
HTTP response status codes
Status code | Description |
---|---|
200 | OK |
Code samples
curl \
-X PATCH \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups/RUNNER_GROUP_ID \
-d '{"name":"Expensive hardware runners","visibility":"selected"}'
Response
Status: 200
{
"id": 2,
"name": "octo-runner-group",
"visibility": "selected",
"default": false,
"selected_repositories_url": "https://api.github.com/orgs/octo-org/actions/runner-groups/2/repositories",
"runners_url": "https://api.github.com/orgs/octo-org/actions/runner_groups/2/runners",
"inherited": false,
"allows_public_repositories": true
}
Delete a self-hosted runner group from an organization
Deletes a self-hosted runner group for an organization.
You must authenticate using an access token with the admin:org
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
org stringRequiredThe organization name. The name is not case sensitive. |
runner_group_id integerRequiredUnique identifier of the self-hosted runner group. |
HTTP response status codes
Status code | Description |
---|---|
204 | No Content |
Code samples
curl \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups/RUNNER_GROUP_ID
Response
Status: 204
Add a self-hosted runner to a group for an organization
Adds a self-hosted runner to a runner group configured in an organization.
You must authenticate using an access token with the admin:org
scope to use this endpoint.
Parameters
Headers |
---|
Name, Type, Description |
accept stringSetting to |
Path parameters |
Name, Type, Description |
org stringRequiredThe organization name. The name is not case sensitive. |
runner_group_id integerRequiredUnique identifier of the self-hosted runner group. |
runner_id integerRequiredUnique identifier of the self-hosted runner. |
HTTP response status codes
Status code | Description |
---|---|
204 | No Content |
Code samples
curl \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token <TOKEN>" \
https://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups/RUNNER_GROUP_ID/runners/RUNNER_ID
Response
Status: 204