---
title: "Reconcile a native runner pool"
method: POST
path: "/api/v1/github_runner_scale_sets"
tags: ["github_runner_scale_sets"]
---

# Reconcile a native runner pool

`POST /api/v1/github_runner_scale_sets`

## Request

- Base URL: `https://composal.com` (the document declares no server; this is the origin it was published from)
- URL: `https://composal.com/api/v1/github_runner_scale_sets`
- Auth: HTTP bearer

Internal Boxmad protocol. Requires a revocable control-plane credential bound to one tenant, repository and runner class. User API tokens and workload credentials do not authorize this endpoint.

## Request body

- union
  - object
    - `operation` 'credential', required
    - `boxmad_organization_id` string, required
    - `class` string, required
    - `slot_id` string
    - `reservation_id` integer
    - `runner_id` integer
    - `runner_name` string
    - `jit_config` string, password
    - `box_id` string
    - `jobs` object[]
      - `runnerRequestId` integer, required
      - `ownerName` string, required
      - `repositoryName` string, required
      - `requestLabels` string[], required
  - object
    - `operation` 'reserve', required
    - `boxmad_organization_id` string, required
    - `class` string, required
    - `slot_id` string, required
    - `reservation_id` integer
    - `runner_id` integer
    - `runner_name` string
    - `jit_config` string, password
    - `box_id` string
    - `jobs` object[]
      - `runnerRequestId` integer, required
      - `ownerName` string, required
      - `repositoryName` string, required
      - `requestLabels` string[], required
  - object
    - `operation` 'registered', required
    - `boxmad_organization_id` string, required
    - `class` string, required
    - `slot_id` string, required
    - `reservation_id` integer, required
    - `runner_id` integer, required
    - `runner_name` string, required
    - `jit_config` string, password, required
    - `box_id` string
    - `jobs` object[]
      - `runnerRequestId` integer, required
      - `ownerName` string, required
      - `repositoryName` string, required
      - `requestLabels` string[], required
  - object
    - `operation` 'launched' | 'retired', required
    - `boxmad_organization_id` string, required
    - `class` string, required
    - `slot_id` string, required
    - `reservation_id` integer, required
    - `runner_id` integer, required
    - `runner_name` string
    - `jit_config` string, password
    - `box_id` string, required
    - `jobs` object[]
      - `runnerRequestId` integer, required
      - `ownerName` string, required
      - `repositoryName` string, required
      - `requestLabels` string[], required
  - object
    - `operation` 'acquire', required
    - `boxmad_organization_id` string, required
    - `class` string, required
    - `slot_id` string
    - `reservation_id` integer
    - `runner_id` integer
    - `runner_name` string
    - `jit_config` string, password
    - `box_id` string
    - `jobs` object[], required
      - `runnerRequestId` integer, required
      - `ownerName` string, required
      - `repositoryName` string, required
      - `requestLabels` string[], required

## Response `200`

Credential, reservation, launch envelope or reconciliation receipt

- union
  - object
    - `github_url` string, uri, required
    - `token` string, password, required
  - object
    - `reservation_id` integer, required
    - `runner_name` string, required
  - object
    - `request` RunnerScaleSetLaunchRequest, required
      - `name` string, required
      - `image` string, required
      - `command` string[], required
      - `env` object, required
      - `cpu_millicores` integer, required
      - `memory_mb` integer, required
      - `disk_mb` integer, required
      - `timeout_seconds` integer, required
      - `working_directory` '/opt/actions-runner', required
      - `external_reference` string, required
      - `checkout_scope` string, nullable
  - object
    - `request_ids` integer[], required
  - object
    - `recorded` true, required

## Other responses

- `401`: Invalid pool credential, identity or receipt
- `403`: Forbidden
- `404`: Not found
- `422`: Invalid operation or request
- `502`: Bad gateway
- `503`: GitHub, Boxmad or class capacity temporarily unavailable

---

[API](https://skmtc.dev/composal/apis/vex-api.md) - [All operations](https://skmtc.dev/composal/apis/vex-api/llms.txt) - [OpenAPI document](https://skmtc.dev/composal/apis/vex-api/revisions/74298a24e040?raw)
