POST
POST /orgs/{org}/actions/hosted-runners — GitHub API
GitHub token (required); https://api.github.com
GitHub APICreate a GitHub-hosted runner for an organization
- Base URL
- https://api.github.com
- Auth
- Authorization: Bearer <GITHUB_API_KEY>
- Last verified
- 2026-10-20 · upstream hash matched
Actions Try in browser→
Agents: curl -H "Accept: text/markdown" this URL
→ 405 tokens · Vary: Accept
→ 405 tokens · Vary: Accept
Critical gotchas
GitHub recommends an Accept: application/vnd.github+json header and an explicit X-GitHub-Api-Version header.
Fine-grained tokens only authorize repositories and permissions selected when the token is created.
cURL
curl -X POST 'https://api.github.com/orgs/example-org/actions/hosted-runners' \ -H "Authorization: Bearer $GITHUB_TOKEN" \ -H 'Accept: application/vnd.github+json' \ -H 'X-GitHub-Api-Version: 2026-03-10' \ -H 'Content-Type: application/json' \ -d '{ "name": "example-name", "image": { "id": "example-id", "source": "github", "version": "example-version" }, "size": "example-size", "runner_group_id": 0}'
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| org | path | string | Yes | The organization name. The name is not case sensitive. |
| name | body | string | Yes | Name of the runner. Must be between 1 and 64 characters and may only contain upper and lowercase letters a-z, numbers 0-9, '.', '-', and '_'. |
| image | body | object | Yes | The image of runner. To list all available images, use `GET /actions/hosted-runners/images/github-owned` or `GET /actions/hosted-runners/images/partner`. |
| size | body | string | Yes | The machine size of the runner. To list available sizes, use `GET actions/hosted-runners/machine-sizes` |
| runner_group_id | body | integer | Yes | The existing runner group to add this runner to. |
| maximum_runners | body | integer | No | The maximum amount of runners to scale up to. Runners will not auto-scale above this number. Use this setting to limit your cost. |
| enable_static_ip | body | boolean | No | Whether this runner should be created with a static public IP. Note limit on account. To list limits on account, use `GET actions/hosted-runners/limits` |
| image_gen | body | boolean | No | Whether this runner should be used to generate custom images. |
Response 200 OK
{
"id": 5,
"name": "my-github-hosted-runner",
"runner_group_id": 2,
"image_details": {
"id": "ubuntu-20.04",
"size_gb": 86,
"display_name": 20.04,
"source": "github",
"version": "latest"
},
"machine_size_details": {
"id": "8-core",
"cpu_cores": 8,
"memory_gb": 32,
"storage_gb": 300
},
"status": "Ready",
"platform": "linux-x64",
"maximum_runners": 5,
"public_ip_enabled": true,
"public_ips": [
{
"enabled": true,
"prefix": "20.80.208.150",
"length": 28
}
],
"last_active_on": "2022-10-09T23:39:01Z",
"image_gen": true
} Get a free GitHub API key → sponsored Affiliate link - we may earn a commission, at no extra cost to you.