---
title: "Roll the current template version out to its fleet"
method: POST
path: "/v1/platform/apps/{appId}/fleets/{template_id}/rollout"
tags: ["Platform"]
---

# Roll the current template version out to its fleet

`POST /v1/platform/apps/{appId}/fleets/{template_id}/rollout`

## Request

- Base URL: `https://api.1claw.co`
- URL: `https://api.1claw.co/v1/platform/apps/{appId}/fleets/{template_id}/rollout`
- Auth: HTTP bearer

Brings every agent in the cohort up to the template's current version. An agent changed outside fleet control is skipped rather than corrected, and the fields that caused the skip are recorded on it. force=true overrides that skip but still cannot carry a guardrail or a capability flag. dry_run=true reports what would happen and claims nothing, so it never blocks a real rollout. Only one rollout may run per template at a time; a second returns 409.

## Path parameters

- `appId` string, uuid, required
- `template_id` string, uuid, required

## Request body

- object
  - `force` boolean: Overwrite hand edits. Cannot carry guardrails.
  - `dry_run` boolean: Report the plan without applying it.

## Response `200`

Rollout result

- FleetRolloutResponse
  - `job_id` string, uuid, nullable: Null for a dry run, which claims no job.
  - `to_version` integer
  - `dry_run` boolean
  - `forced` boolean
  - `total_agents` integer
  - `synced` integer
  - `already_current` integer
  - `skipped_drifted` integer
  - `outcomes` object[]
    - `outcome` 'already_current' | 'synced' | 'skipped_drifted'
    - `agent_id` string, uuid
    - `fields` string[]
    - `drift_fields` string[]

## Other responses

- `404`: Resource not found
- `409`: A rollout is already running for this template

---

[API](https://skmtc.dev/1claw/apis/1claw-api.md) · [All operations](https://skmtc.dev/1claw/apis/1claw-api/llms.txt) · [OpenAPI document](https://skmtc.dev/1claw/apis/1claw-api/revisions/5fa0918f3b41?raw)
