Use the REST API to manage availability of machine types for a codespace.
You can determine which machine types are available to create a codespace, either on a given repository or as an authenticated user. For more information, see Changing the machine type for your codespace.
You can also use this information when changing the machine of an existing codespace by updating its machine property. The machine update will take place the next time the codespace is restarted. For more information, see Changing the machine type for your codespace.
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 /repos/{owner}/{repo}/codespaces/machines
List the machine types available for a given repository based on its configuration.
OAuth app tokens and personal access tokens (classic) need the codespace scope to use this endpoint.
accept (string)application/vnd.github+json is recommended.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.
location (string)
The location to check for available machines. Assigned by IP if not provided.
client_ip (string)
IP for location auto-detection when proxying a request
ref (string)
The branch or commit to check for prebuild availability and devcontainer restrictions.
200 - OK
304 - Not modified
401 - Requires authentication
403 - Forbidden
404 - Resource not found
500 - Internal Error
Request:
curl -L \
-X GET \
https://api.github.com/repos/OWNER/REPO/codespaces/machines
Response schema (Status: 200):
total_count: required, integermachines: required, array of Codespace machine:
name: required, stringdisplay_name: required, stringoperating_system: required, stringstorage_in_bytes: required, integermemory_in_bytes: required, integercpus: required, integerprebuild_availability: required, string or null, enum: none, ready, in_progress, nullGET /user/codespaces/{codespace_name}/machines
List the machine types a codespace can transition to use.
OAuth app tokens and personal access tokens (classic) need the codespace scope to use this endpoint.
accept (string)application/vnd.github+json is recommended.codespace_name (string) (required)200 - OK
304 - Not modified
401 - Requires authentication
403 - Forbidden
404 - Resource not found
500 - Internal Error
Request:
curl -L \
-X GET \
https://api.github.com/user/codespaces/CODESPACE_NAME/machines
Response schema (Status: 200):
Same response schema as List available machine types for a repository.