---
title: "Prepare a runner's Git object cache"
method: POST
path: "/api/v1/github_runner_checkout"
tags: ["github_runner_checkout"]
---

# Prepare a runner's Git object cache

`POST /api/v1/github_runner_checkout`

## 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_checkout`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Internal runner protocol. Requires an expiring invocation-attempt credential. User API tokens do not authorize this endpoint. Repository scope comes from the runner pool; source credentials are never returned.

## Request body

- union
  - object
    - `operation` 'prepare', required
    - `repository` string, required
    - `ref` string, required
    - `sha` string
    - `all_refs` boolean
  - object
    - `operation` 'status', required
    - `ticket` string, required

## Response `200`

Pending, prepared or failed Git object cache preparation

- object
  - `status` 'pending' | 'ready' | 'failed', required
  - `ticket` string
  - `commit` string
  - `object_oid` string
  - `refs` object
  - `cache_hit` boolean
  - `source` 'cache' | 'composal' | 'github'
  - `prepare_seconds` number

## Other responses

- `400`: Unsupported operation or invalid ref or object ID
- `401`: Invalid attempt credential
- `403`: Forbidden
- `404`: Not found
- `422`: Unprocessable entity
- `502`: Bad gateway
- `503`: Preparation unavailable or another revision is still preparing

---

[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)
