---
title: "Attach a swarm worker's transcript to its stack's Changes"
method: POST
path: "/api/v1/agent/roder/run/swarm_transcript"
tags: ["agent"]
---

# Attach a swarm worker's transcript to its stack's Changes

`POST /api/v1/agent/roder/run/swarm_transcript`

## 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/agent/roder/run/swarm_transcript`
- Auth: HTTP bearer

Requires a run capability carrying the swarm.submit_stack operation. The body names the opaque session and checkpoint identities, the archive's declared sizes and SHA-256 digests, and the zlib archive as base64. Idempotent: a replay finds the same session and checkpoint and re-appends the same native attachments.

## Request body

- object

## Response `200`

The transcript is stored and attached

- object
  - `session_id` string, required
  - `checkpoint_id` string, required
  - `attached_commit_ids` string[], required

## Other responses

- `401`: Unauthorized
- `413`: The body exceeds the transcript cap
- `422`: An invalid payload or an archive that failed verification
- `502`: jj-backend refused or failed the attachment

---

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