Skip to main content

This version of GitHub Enterprise was discontinued on 2023-07-06. No patch releases will be made, even for critical security issues. For better performance, improved security, and new features, upgrade to the latest version of GitHub Enterprise. For help with the upgrade, contact GitHub Enterprise support.

After a site administrator upgrades your Enterprise Server instance to Enterprise Server 3.9 or later, the REST API will be versioned. To learn how to find your instance's version, see "About versions of GitHub Docs". For more information, see "About API versioning."

Self-hosted runner groups

Use the REST API to interact with self-hosted runner groups for GitHub Actions.

About self-hosted runner groups in GitHub Actions

You can use the REST API to manage groups of self-hosted runners in GitHub Actions. For more information, see "Managing access to self-hosted runners using groups."

These endpoints are available for authenticated users, OAuth apps, and GitHub Apps. Access tokens require repo scope for private repositories and public_repo scope for public 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 these endpoints.

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 for "List self-hosted runner groups for an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

Query parameters
Name, Type, Description
per_page integer

The number of results per page (max 100).

Default: 30

page integer

Page number of the results to fetch.

Default: 1

HTTP response status codes for "List self-hosted runner groups for an enterprise"

Status codeDescription
200

OK

Code samples for "List self-hosted runner groups for an enterprise"

get/enterprises/{enterprise}/actions/runner-groups
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://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://HOSTNAME/enterprises/octo-corp/actions/runner_groups/1/runners", "allows_public_repositories": false, "restricted_to_workflows": false, "selected_workflows": [], "workflow_restrictions_read_only": false }, { "id": 2, "name": "octo-runner-group", "visibility": "selected", "default": false, "selected_organizations_url": "https://HOSTNAME/enterprises/octo-corp/actions/runner_groups/2/organizations", "runners_url": "https://HOSTNAME/enterprises/octo-corp/actions/runner_groups/2/runners", "allows_public_repositories": true, "restricted_to_workflows": true, "selected_workflows": [ "octo-org/octo-repo/.github/workflows/deploy.yaml@refs/heads/main" ], "workflow_restrictions_read_only": false }, { "id": 3, "name": "expensive-hardware", "visibility": "private", "default": false, "runners_url": "https://HOSTNAME/enterprises/octo-corp/actions/runner_groups/3/runners", "allows_public_repositories": true, "restricted_to_workflows": false, "selected_workflows": [ "octo-org/octo-repo/.github/workflows/deploy.yaml@refs/heads/main" ], "workflow_restrictions_read_only": false } ] }

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 for "Create a self-hosted runner group for an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

Body parameters
Name, Type, Description
name string Required

Name of the runner group.

visibility string

Visibility of a runner group. You can select all organizations or select individual organization.

Can be one of: selected, all

selected_organization_ids array of integers

List of organization IDs that can access the runner group.

runners array of integers

List of runner IDs to add to the runner group.

allows_public_repositories boolean

Whether the runner group can be used by public repositories.

Default: false

restricted_to_workflows boolean

If true, the runner group will be restricted to running only the workflows specified in the selected_workflows array.

Default: false

selected_workflows array of strings

List of workflows the runner group should be allowed to run. This setting will be ignored unless restricted_to_workflows is set to true.

HTTP response status codes for "Create a self-hosted runner group for an enterprise"

Status codeDescription
201

Created

Code samples for "Create a self-hosted runner group for an enterprise"

post/enterprises/{enterprise}/actions/runner-groups
curl -L \ -X POST \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://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://HOSTNAME/enterprises/octo-corp/actions/runner-groups/2/organizations", "runners_url": "https://HOSTNAME/enterprises/octo-corp/actions/runner-groups/2/runners", "allows_public_repositories": false, "restricted_to_workflows": true, "selected_workflows": [ "octo-org/octo-repo/.github/workflows/deploy.yaml@refs/heads/main" ], "workflow_restrictions_read_only": 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 for "Get a self-hosted runner group for an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

HTTP response status codes for "Get a self-hosted runner group for an enterprise"

Status codeDescription
200

OK

Code samples for "Get a self-hosted runner group for an enterprise"

get/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://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://HOSTNAME/enterprises/octo-corp/actions/runner-groups/2/organizations", "runners_url": "https://HOSTNAME/enterprises/octo-corp/actions/runner-groups/2/runners", "allows_public_repositories": false, "restricted_to_workflows": true, "selected_workflows": [ "octo-org/octo-repo/.github/workflows/deploy.yaml@refs/heads/main" ], "workflow_restrictions_read_only": 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 for "Update a self-hosted runner group for an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

Body parameters
Name, Type, Description
name string

Name of the runner group.

visibility string

Visibility of a runner group. You can select all organizations or select individual organizations.

Default: all

Can be one of: selected, all

allows_public_repositories boolean

Whether the runner group can be used by public repositories.

Default: false

restricted_to_workflows boolean

If true, the runner group will be restricted to running only the workflows specified in the selected_workflows array.

Default: false

selected_workflows array of strings

List of workflows the runner group should be allowed to run. This setting will be ignored unless restricted_to_workflows is set to true.

HTTP response status codes for "Update a self-hosted runner group for an enterprise"

Status codeDescription
200

OK

Code samples for "Update a self-hosted runner group for an enterprise"

patch/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}
curl -L \ -X PATCH \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://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://HOSTNAME/enterprises/octo-corp/actions/runner-groups/2/organizations", "runners_url": "https://HOSTNAME/enterprises/octo-corp/actions/runner-groups/2/runners", "allows_public_repositories": true, "restricted_to_workflows": false, "selected_workflows": [ "octo-org/octo-repo/.github/workflows/deploy.yaml@refs/heads/main" ], "workflow_restrictions_read_only": false }

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 for "Delete a self-hosted runner group from an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

HTTP response status codes for "Delete a self-hosted runner group from an enterprise"

Status codeDescription
204

No Content

Code samples for "Delete a self-hosted runner group from an enterprise"

delete/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}
curl -L \ -X DELETE \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups/RUNNER_GROUP_ID

Response

Status: 204

List organization access to a self-hosted runner group in an enterprise

Lists the organizations with access to a self-hosted runner group.

You must authenticate using an access token with the manage_runners:enterprise scope to use this endpoint.

Parameters for "List organization access to a self-hosted runner group in an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

Query parameters
Name, Type, Description
per_page integer

The number of results per page (max 100).

Default: 30

page integer

Page number of the results to fetch.

Default: 1

HTTP response status codes for "List organization access to a self-hosted runner group in an enterprise"

Status codeDescription
200

OK

Code samples for "List organization access to a self-hosted runner group in an enterprise"

get/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups/RUNNER_GROUP_ID/organizations

Response

Status: 200
{ "total_count": 1, "organizations": [ { "login": "octocat", "id": 161335, "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", "url": "https://HOSTNAME/orgs/octo-org", "repos_url": "https://HOSTNAME/orgs/octo-org/repos", "events_url": "https://HOSTNAME/orgs/octo-org/events", "hooks_url": "https://HOSTNAME/orgs/octo-org/hooks", "issues_url": "https://HOSTNAME/orgs/octo-org/issues", "members_url": "https://HOSTNAME/orgs/octo-org/members{/member}", "public_members_url": "https://HOSTNAME/orgs/octo-org/public_members{/member}", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "description": "A great organization" } ] }

Set organization access for a self-hosted runner group in an enterprise

Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise.

You must authenticate using an access token with the manage_runners:enterprise scope to use this endpoint.

Parameters for "Set organization access for a self-hosted runner group in an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

Body parameters
Name, Type, Description
selected_organization_ids array of integers Required

List of organization IDs that can access the runner group.

HTTP response status codes for "Set organization access for a self-hosted runner group in an enterprise"

Status codeDescription
204

No Content

Code samples for "Set organization access for a self-hosted runner group in an enterprise"

put/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations
curl -L \ -X PUT \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups/RUNNER_GROUP_ID/organizations \ -d '{"selected_organization_ids":[32,91]}'

Response

Status: 204

Add organization access to a self-hosted runner group in an enterprise

Adds an organization to the list of selected organizations that can access a self-hosted runner group. The runner group must have visibility set to selected. For more information, see "Create 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 for "Add organization access to a self-hosted runner group in an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

org_id integer Required

The unique identifier of the organization.

HTTP response status codes for "Add organization access to a self-hosted runner group in an enterprise"

Status codeDescription
204

No Content

Code samples for "Add organization access to a self-hosted runner group in an enterprise"

put/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}
curl -L \ -X PUT \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups/RUNNER_GROUP_ID/organizations/ORG_ID

Response

Status: 204

Remove organization access to a self-hosted runner group in an enterprise

Removes an organization from the list of selected organizations that can access a self-hosted runner group. The runner group must have visibility set to selected. For more information, see "Create 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 for "Remove organization access to a self-hosted runner group in an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

org_id integer Required

The unique identifier of the organization.

HTTP response status codes for "Remove organization access to a self-hosted runner group in an enterprise"

Status codeDescription
204

No Content

Code samples for "Remove organization access to a self-hosted runner group in an enterprise"

delete/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations/{org_id}
curl -L \ -X DELETE \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/enterprises/ENTERPRISE/actions/runner-groups/RUNNER_GROUP_ID/organizations/ORG_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 for "List self-hosted runners in a group for an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

Query parameters
Name, Type, Description
per_page integer

The number of results per page (max 100).

Default: 30

page integer

Page number of the results to fetch.

Default: 1

HTTP response status codes for "List self-hosted runners in a group for an enterprise"

Status codeDescription
200

OK

Code samples for "List self-hosted runners in a group for an enterprise"

get/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://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 for "Set self-hosted runners in a group for an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

Body parameters
Name, Type, Description
runners array of integers Required

List of runner IDs to add to the runner group.

HTTP response status codes for "Set self-hosted runners in a group for an enterprise"

Status codeDescription
204

No Content

Code samples for "Set self-hosted runners in a group for an enterprise"

put/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners
curl -L \ -X PUT \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://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 for "Add a self-hosted runner to a group for an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

runner_id integer Required

Unique identifier of the self-hosted runner.

HTTP response status codes for "Add a self-hosted runner to a group for an enterprise"

Status codeDescription
204

No Content

Code samples for "Add a self-hosted runner to a group for an enterprise"

put/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}
curl -L \ -X PUT \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://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 for "Remove a self-hosted runner from a group for an enterprise"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
enterprise string Required

The slug version of the enterprise name. You can also substitute this value with the enterprise id.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

runner_id integer Required

Unique identifier of the self-hosted runner.

HTTP response status codes for "Remove a self-hosted runner from a group for an enterprise"

Status codeDescription
204

No Content

Code samples for "Remove a self-hosted runner from a group for an enterprise"

delete/enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners/{runner_id}
curl -L \ -X DELETE \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://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

Works with GitHub Apps

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 for "List self-hosted runner groups for an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

Query parameters
Name, Type, Description
per_page integer

The number of results per page (max 100).

Default: 30

page integer

Page number of the results to fetch.

Default: 1

HTTP response status codes for "List self-hosted runner groups for an organization"

Status codeDescription
200

OK

Code samples for "List self-hosted runner groups for an organization"

get/orgs/{org}/actions/runner-groups
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://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://HOSTNAME/orgs/octo-org/actions/runner_groups/1/runners", "inherited": false, "allows_public_repositories": true, "restricted_to_workflows": false, "selected_workflows": [], "workflow_restrictions_read_only": false }, { "id": 2, "name": "octo-runner-group", "visibility": "selected", "default": false, "selected_repositories_url": "https://HOSTNAME/orgs/octo-org/actions/runner_groups/2/repositories", "runners_url": "https://HOSTNAME/orgs/octo-org/actions/runner_groups/2/runners", "inherited": true, "allows_public_repositories": true, "restricted_to_workflows": true, "selected_workflows": [ "octo-org/octo-repo/.github/workflows/deploy.yaml@refs/heads/main" ], "workflow_restrictions_read_only": true }, { "id": 3, "name": "expensive-hardware", "visibility": "private", "default": false, "runners_url": "https://HOSTNAME/orgs/octo-org/actions/runner_groups/3/runners", "inherited": false, "allows_public_repositories": true, "restricted_to_workflows": false, "selected_workflows": [ "octo-org/octo-repo/.github/workflows/deploy.yaml@refs/heads/main" ], "workflow_restrictions_read_only": false } ] }

Create a self-hosted runner group for an organization

Works with GitHub Apps

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 for "Create a self-hosted runner group for an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

Body parameters
Name, Type, Description
name string Required

Name of the runner group.

visibility string

Visibility of a runner group. You can select all repositories, select individual repositories, or limit access to private repositories.

Default: all

Can be one of: selected, all, private

selected_repository_ids array of integers

List of repository IDs that can access the runner group.

runners array of integers

List of runner IDs to add to the runner group.

allows_public_repositories boolean

Whether the runner group can be used by public repositories.

Default: false

restricted_to_workflows boolean

If true, the runner group will be restricted to running only the workflows specified in the selected_workflows array.

Default: false

selected_workflows array of strings

List of workflows the runner group should be allowed to run. This setting will be ignored unless restricted_to_workflows is set to true.

HTTP response status codes for "Create a self-hosted runner group for an organization"

Status codeDescription
201

Created

Code samples for "Create a self-hosted runner group for an organization"

post/orgs/{org}/actions/runner-groups
curl -L \ -X POST \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://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://HOSTNAME/orgs/octo-org/actions/runner-groups/2/repositories", "runners_url": "https://HOSTNAME/orgs/octo-org/actions/runner_groups/2/runners", "inherited": false, "allows_public_repositories": true, "restricted_to_workflows": true, "selected_workflows": [ "octo-org/octo-repo/.github/workflows/deploy.yaml@refs/heads/main" ], "workflow_restrictions_read_only": false }

Get a self-hosted runner group for an organization

Works with GitHub Apps

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 for "Get a self-hosted runner group for an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

HTTP response status codes for "Get a self-hosted runner group for an organization"

Status codeDescription
200

OK

Code samples for "Get a self-hosted runner group for an organization"

get/orgs/{org}/actions/runner-groups/{runner_group_id}
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://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://HOSTNAME/orgs/octo-org/actions/runner_groups/2/repositories", "runners_url": "https://HOSTNAME/orgs/octo-org/actions/runner_groups/2/runners", "inherited": false, "allows_public_repositories": true, "restricted_to_workflows": true, "selected_workflows": [ "octo-org/octo-repo/.github/workflows/deploy.yaml@refs/heads/main" ], "workflow_restrictions_read_only": false }

Update a self-hosted runner group for an organization

Works with GitHub Apps

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 for "Update a self-hosted runner group for an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

Body parameters
Name, Type, Description
name string Required

Name of the runner group.

visibility string

Visibility of a runner group. You can select all repositories, select individual repositories, or all private repositories.

Can be one of: selected, all, private

allows_public_repositories boolean

Whether the runner group can be used by public repositories.

Default: false

restricted_to_workflows boolean

If true, the runner group will be restricted to running only the workflows specified in the selected_workflows array.

Default: false

selected_workflows array of strings

List of workflows the runner group should be allowed to run. This setting will be ignored unless restricted_to_workflows is set to true.

HTTP response status codes for "Update a self-hosted runner group for an organization"

Status codeDescription
200

OK

Code samples for "Update a self-hosted runner group for an organization"

patch/orgs/{org}/actions/runner-groups/{runner_group_id}
curl -L \ -X PATCH \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://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://HOSTNAME/orgs/octo-org/actions/runner-groups/2/repositories", "runners_url": "https://HOSTNAME/orgs/octo-org/actions/runner_groups/2/runners", "inherited": false, "allows_public_repositories": true, "restricted_to_workflows": true, "selected_workflows": [ "octo-org/octo-repo/.github/workflows/deploy.yaml@refs/heads/main" ], "workflow_restrictions_read_only": false }

Delete a self-hosted runner group from an organization

Works with GitHub Apps

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 for "Delete a self-hosted runner group from an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

HTTP response status codes for "Delete a self-hosted runner group from an organization"

Status codeDescription
204

No Content

Code samples for "Delete a self-hosted runner group from an organization"

delete/orgs/{org}/actions/runner-groups/{runner_group_id}
curl -L \ -X DELETE \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups/RUNNER_GROUP_ID

Response

Status: 204

List repository access to a self-hosted runner group in an organization

Works with GitHub Apps

Lists the repositories with access to a self-hosted runner group configured in an organization.

You must authenticate using an access token with the admin:org scope to use this endpoint.

Parameters for "List repository access to a self-hosted runner group in an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

Query parameters
Name, Type, Description
page integer

Page number of the results to fetch.

Default: 1

per_page integer

The number of results per page (max 100).

Default: 30

HTTP response status codes for "List repository access to a self-hosted runner group in an organization"

Status codeDescription
200

OK

Code samples for "List repository access to a self-hosted runner group in an organization"

get/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups/RUNNER_GROUP_ID/repositories

Response

Status: 200
{ "total_count": 1, "repositories": [ { "id": 1296269, "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", "name": "Hello-World", "full_name": "octocat/Hello-World", "owner": { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://HOSTNAME/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://HOSTNAME/users/octocat/followers", "following_url": "https://HOSTNAME/users/octocat/following{/other_user}", "gists_url": "https://HOSTNAME/users/octocat/gists{/gist_id}", "starred_url": "https://HOSTNAME/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://HOSTNAME/users/octocat/subscriptions", "organizations_url": "https://HOSTNAME/users/octocat/orgs", "repos_url": "https://HOSTNAME/users/octocat/repos", "events_url": "https://HOSTNAME/users/octocat/events{/privacy}", "received_events_url": "https://HOSTNAME/users/octocat/received_events", "type": "User", "site_admin": false }, "private": false, "html_url": "https://github.com/octocat/Hello-World", "description": "This your first repo!", "fork": false, "url": "https://HOSTNAME/repos/octocat/Hello-World", "archive_url": "https://HOSTNAME/repos/octocat/Hello-World/{archive_format}{/ref}", "assignees_url": "https://HOSTNAME/repos/octocat/Hello-World/assignees{/user}", "blobs_url": "https://HOSTNAME/repos/octocat/Hello-World/git/blobs{/sha}", "branches_url": "https://HOSTNAME/repos/octocat/Hello-World/branches{/branch}", "collaborators_url": "https://HOSTNAME/repos/octocat/Hello-World/collaborators{/collaborator}", "comments_url": "https://HOSTNAME/repos/octocat/Hello-World/comments{/number}", "commits_url": "https://HOSTNAME/repos/octocat/Hello-World/commits{/sha}", "compare_url": "https://HOSTNAME/repos/octocat/Hello-World/compare/{base}...{head}", "contents_url": "https://HOSTNAME/repos/octocat/Hello-World/contents/{+path}", "contributors_url": "https://HOSTNAME/repos/octocat/Hello-World/contributors", "deployments_url": "https://HOSTNAME/repos/octocat/Hello-World/deployments", "downloads_url": "https://HOSTNAME/repos/octocat/Hello-World/downloads", "events_url": "https://HOSTNAME/repos/octocat/Hello-World/events", "forks_url": "https://HOSTNAME/repos/octocat/Hello-World/forks", "git_commits_url": "https://HOSTNAME/repos/octocat/Hello-World/git/commits{/sha}", "git_refs_url": "https://HOSTNAME/repos/octocat/Hello-World/git/refs{/sha}", "git_tags_url": "https://HOSTNAME/repos/octocat/Hello-World/git/tags{/sha}", "git_url": "git:github.com/octocat/Hello-World.git", "issue_comment_url": "https://HOSTNAME/repos/octocat/Hello-World/issues/comments{/number}", "issue_events_url": "https://HOSTNAME/repos/octocat/Hello-World/issues/events{/number}", "issues_url": "https://HOSTNAME/repos/octocat/Hello-World/issues{/number}", "keys_url": "https://HOSTNAME/repos/octocat/Hello-World/keys{/key_id}", "labels_url": "https://HOSTNAME/repos/octocat/Hello-World/labels{/name}", "languages_url": "https://HOSTNAME/repos/octocat/Hello-World/languages", "merges_url": "https://HOSTNAME/repos/octocat/Hello-World/merges", "milestones_url": "https://HOSTNAME/repos/octocat/Hello-World/milestones{/number}", "notifications_url": "https://HOSTNAME/repos/octocat/Hello-World/notifications{?since,all,participating}", "pulls_url": "https://HOSTNAME/repos/octocat/Hello-World/pulls{/number}", "releases_url": "https://HOSTNAME/repos/octocat/Hello-World/releases{/id}", "ssh_url": "git@github.com:octocat/Hello-World.git", "stargazers_url": "https://HOSTNAME/repos/octocat/Hello-World/stargazers", "statuses_url": "https://HOSTNAME/repos/octocat/Hello-World/statuses/{sha}", "subscribers_url": "https://HOSTNAME/repos/octocat/Hello-World/subscribers", "subscription_url": "https://HOSTNAME/repos/octocat/Hello-World/subscription", "tags_url": "https://HOSTNAME/repos/octocat/Hello-World/tags", "teams_url": "https://HOSTNAME/repos/octocat/Hello-World/teams", "trees_url": "https://HOSTNAME/repos/octocat/Hello-World/git/trees{/sha}", "clone_url": "https://github.com/octocat/Hello-World.git", "mirror_url": "git:git.example.com/octocat/Hello-World", "hooks_url": "https://HOSTNAME/repos/octocat/Hello-World/hooks", "svn_url": "https://svn.github.com/octocat/Hello-World", "homepage": "https://github.com", "language": null, "forks_count": 9, "stargazers_count": 80, "watchers_count": 80, "size": 108, "default_branch": "master", "open_issues_count": 0, "is_template": true, "topics": [ "octocat", "atom", "electron", "api" ], "has_issues": true, "has_projects": true, "has_wiki": true, "has_pages": false, "has_downloads": true, "archived": false, "disabled": false, "visibility": "public", "pushed_at": "2011-01-26T19:06:43Z", "created_at": "2011-01-26T19:01:12Z", "updated_at": "2011-01-26T19:14:43Z", "permissions": { "admin": false, "push": false, "pull": true }, "template_repository": { "id": 1296269, "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", "name": "Hello-World", "full_name": "octocat/Hello-World", "owner": { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://HOSTNAME/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://HOSTNAME/users/octocat/followers", "following_url": "https://HOSTNAME/users/octocat/following{/other_user}", "gists_url": "https://HOSTNAME/users/octocat/gists{/gist_id}", "starred_url": "https://HOSTNAME/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://HOSTNAME/users/octocat/subscriptions", "organizations_url": "https://HOSTNAME/users/octocat/orgs", "repos_url": "https://HOSTNAME/users/octocat/repos", "events_url": "https://HOSTNAME/users/octocat/events{/privacy}", "received_events_url": "https://HOSTNAME/users/octocat/received_events", "type": "User", "site_admin": false }, "private": false, "html_url": "https://github.com/octocat/Hello-World", "description": "This your first repo!", "fork": false, "url": "https://HOSTNAME/repos/octocat/Hello-World", "archive_url": "https://HOSTNAME/repos/octocat/Hello-World/{archive_format}{/ref}", "assignees_url": "https://HOSTNAME/repos/octocat/Hello-World/assignees{/user}", "blobs_url": "https://HOSTNAME/repos/octocat/Hello-World/git/blobs{/sha}", "branches_url": "https://HOSTNAME/repos/octocat/Hello-World/branches{/branch}", "collaborators_url": "https://HOSTNAME/repos/octocat/Hello-World/collaborators{/collaborator}", "comments_url": "https://HOSTNAME/repos/octocat/Hello-World/comments{/number}", "commits_url": "https://HOSTNAME/repos/octocat/Hello-World/commits{/sha}", "compare_url": "https://HOSTNAME/repos/octocat/Hello-World/compare/{base}...{head}", "contents_url": "https://HOSTNAME/repos/octocat/Hello-World/contents/{+path}", "contributors_url": "https://HOSTNAME/repos/octocat/Hello-World/contributors", "deployments_url": "https://HOSTNAME/repos/octocat/Hello-World/deployments", "downloads_url": "https://HOSTNAME/repos/octocat/Hello-World/downloads", "events_url": "https://HOSTNAME/repos/octocat/Hello-World/events", "forks_url": "https://HOSTNAME/repos/octocat/Hello-World/forks", "git_commits_url": "https://HOSTNAME/repos/octocat/Hello-World/git/commits{/sha}", "git_refs_url": "https://HOSTNAME/repos/octocat/Hello-World/git/refs{/sha}", "git_tags_url": "https://HOSTNAME/repos/octocat/Hello-World/git/tags{/sha}", "git_url": "git:github.com/octocat/Hello-World.git", "issue_comment_url": "https://HOSTNAME/repos/octocat/Hello-World/issues/comments{/number}", "issue_events_url": "https://HOSTNAME/repos/octocat/Hello-World/issues/events{/number}", "issues_url": "https://HOSTNAME/repos/octocat/Hello-World/issues{/number}", "keys_url": "https://HOSTNAME/repos/octocat/Hello-World/keys{/key_id}", "labels_url": "https://HOSTNAME/repos/octocat/Hello-World/labels{/name}", "languages_url": "https://HOSTNAME/repos/octocat/Hello-World/languages", "merges_url": "https://HOSTNAME/repos/octocat/Hello-World/merges", "milestones_url": "https://HOSTNAME/repos/octocat/Hello-World/milestones{/number}", "notifications_url": "https://HOSTNAME/repos/octocat/Hello-World/notifications{?since,all,participating}", "pulls_url": "https://HOSTNAME/repos/octocat/Hello-World/pulls{/number}", "releases_url": "https://HOSTNAME/repos/octocat/Hello-World/releases{/id}", "ssh_url": "git@github.com:octocat/Hello-World.git", "stargazers_url": "https://HOSTNAME/repos/octocat/Hello-World/stargazers", "statuses_url": "https://HOSTNAME/repos/octocat/Hello-World/statuses/{sha}", "subscribers_url": "https://HOSTNAME/repos/octocat/Hello-World/subscribers", "subscription_url": "https://HOSTNAME/repos/octocat/Hello-World/subscription", "tags_url": "https://HOSTNAME/repos/octocat/Hello-World/tags", "teams_url": "https://HOSTNAME/repos/octocat/Hello-World/teams", "trees_url": "https://HOSTNAME/repos/octocat/Hello-World/git/trees{/sha}", "clone_url": "https://github.com/octocat/Hello-World.git", "mirror_url": "git:git.example.com/octocat/Hello-World", "hooks_url": "https://HOSTNAME/repos/octocat/Hello-World/hooks", "svn_url": "https://svn.github.com/octocat/Hello-World", "homepage": "https://github.com", "organization": null, "language": null, "forks": 9, "forks_count": 9, "stargazers_count": 80, "watchers_count": 80, "watchers": 80, "size": 108, "default_branch": "master", "open_issues": 0, "open_issues_count": 0, "is_template": true, "license": { "key": "mit", "name": "MIT License", "url": "https://HOSTNAME/licenses/mit", "spdx_id": "MIT", "node_id": "MDc6TGljZW5zZW1pdA==", "html_url": "https://HOSTNAME/licenses/mit" }, "topics": [ "octocat", "atom", "electron", "api" ], "has_issues": true, "has_projects": true, "has_wiki": true, "has_pages": false, "has_downloads": true, "archived": false, "disabled": false, "visibility": "public", "pushed_at": "2011-01-26T19:06:43Z", "created_at": "2011-01-26T19:01:12Z", "updated_at": "2011-01-26T19:14:43Z", "permissions": { "admin": false, "push": false, "pull": true }, "allow_rebase_merge": true, "template_repository": null, "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", "allow_squash_merge": true, "allow_auto_merge": false, "delete_branch_on_merge": true, "allow_merge_commit": true, "subscribers_count": 42, "network_count": 0 }, "temp_clone_token": "ABTLWHOULUVAXGTRYU7OC2876QJ2O", "delete_branch_on_merge": true, "subscribers_count": 42, "network_count": 0, "license": { "key": "mit", "name": "MIT License", "url": "https://HOSTNAME/licenses/mit", "spdx_id": "MIT", "node_id": "MDc6TGljZW5zZW1pdA==" }, "forks": 1, "open_issues": 1, "watchers": 1 } ] }

Set repository access for a self-hosted runner group in an organization

Works with GitHub Apps

Replaces the list of repositories that have access to a self-hosted runner group configured in an organization.

You must authenticate using an access token with the admin:org scope to use this endpoint.

Parameters for "Set repository access for a self-hosted runner group in an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

Body parameters
Name, Type, Description
selected_repository_ids array of integers Required

List of repository IDs that can access the runner group.

HTTP response status codes for "Set repository access for a self-hosted runner group in an organization"

Status codeDescription
204

No Content

Code samples for "Set repository access for a self-hosted runner group in an organization"

put/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories
curl -L \ -X PUT \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups/RUNNER_GROUP_ID/repositories \ -d '{"selected_repository_ids":[32,91]}'

Response

Status: 204

Add repository access to a self-hosted runner group in an organization

Works with GitHub Apps

Adds a repository to the list of selected repositories that can access a self-hosted runner group. The runner group must have visibility set to selected. For more information, see "Create 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 for "Add repository access to a self-hosted runner group in an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

repository_id integer Required

The unique identifier of the repository.

HTTP response status codes for "Add repository access to a self-hosted runner group in an organization"

Status codeDescription
204

No Content

Code samples for "Add repository access to a self-hosted runner group in an organization"

put/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}
curl -L \ -X PUT \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups/RUNNER_GROUP_ID/repositories/REPOSITORY_ID

Response

Status: 204

Remove repository access to a self-hosted runner group in an organization

Works with GitHub Apps

Removes a repository from the list of selected repositories that can access a self-hosted runner group. The runner group must have visibility set to selected. For more information, see "Create 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 for "Remove repository access to a self-hosted runner group in an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

repository_id integer Required

The unique identifier of the repository.

HTTP response status codes for "Remove repository access to a self-hosted runner group in an organization"

Status codeDescription
204

No Content

Code samples for "Remove repository access to a self-hosted runner group in an organization"

delete/orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}
curl -L \ -X DELETE \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups/RUNNER_GROUP_ID/repositories/REPOSITORY_ID

Response

Status: 204

List self-hosted runners in a group for an organization

Works with GitHub Apps

Lists self-hosted runners that are in a specific organization group.

You must authenticate using an access token with the admin:org scope to use this endpoint.

Parameters for "List self-hosted runners in a group for an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

Query parameters
Name, Type, Description
per_page integer

The number of results per page (max 100).

Default: 30

page integer

Page number of the results to fetch.

Default: 1

HTTP response status codes for "List self-hosted runners in a group for an organization"

Status codeDescription
200

OK

Code samples for "List self-hosted runners in a group for an organization"

get/orgs/{org}/actions/runner-groups/{runner_group_id}/runners
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/orgs/ORG/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 organization

Works with GitHub Apps

Replaces the list of self-hosted runners that are part of an organization runner group.

You must authenticate using an access token with the admin:org scope to use this endpoint.

Parameters for "Set self-hosted runners in a group for an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

Body parameters
Name, Type, Description
runners array of integers Required

List of runner IDs to add to the runner group.

HTTP response status codes for "Set self-hosted runners in a group for an organization"

Status codeDescription
204

No Content

Code samples for "Set self-hosted runners in a group for an organization"

put/orgs/{org}/actions/runner-groups/{runner_group_id}/runners
curl -L \ -X PUT \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups/RUNNER_GROUP_ID/runners \ -d '{"runners":[9,2]}'

Response

Status: 204

Add a self-hosted runner to a group for an organization

Works with GitHub Apps

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 for "Add a self-hosted runner to a group for an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

runner_id integer Required

Unique identifier of the self-hosted runner.

HTTP response status codes for "Add a self-hosted runner to a group for an organization"

Status codeDescription
204

No Content

Code samples for "Add a self-hosted runner to a group for an organization"

put/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}
curl -L \ -X PUT \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups/RUNNER_GROUP_ID/runners/RUNNER_ID

Response

Status: 204

Remove a self-hosted runner from a group for an organization

Works with GitHub Apps

Removes a self-hosted runner from a group configured in an organization. The runner is then returned to the default group.

You must authenticate using an access token with the admin:org scope to use this endpoint.

Parameters for "Remove a self-hosted runner from a group for an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

runner_group_id integer Required

Unique identifier of the self-hosted runner group.

runner_id integer Required

Unique identifier of the self-hosted runner.

HTTP response status codes for "Remove a self-hosted runner from a group for an organization"

Status codeDescription
204

No Content

Code samples for "Remove a self-hosted runner from a group for an organization"

delete/orgs/{org}/actions/runner-groups/{runner_group_id}/runners/{runner_id}
curl -L \ -X DELETE \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ http(s)://HOSTNAME/api/v3/orgs/ORG/actions/runner-groups/RUNNER_GROUP_ID/runners/RUNNER_ID

Response

Status: 204