---
title: "Upload a new draft or Brainstorming Review revision from literal file content."
method: POST
path: "/api/v1/draft-reviews/{sessionId}/revisions"
tags: ["Draft reviews"]
---

# Upload a new draft or Brainstorming Review revision from literal file content.

`POST /api/v1/draft-reviews/{sessionId}/revisions`

## Request

- Base URL: `https://commentary.dev`
- URL: `https://commentary.dev/api/v1/draft-reviews/{sessionId}/revisions`
- Auth: HTTP bearer

## Path parameters

- `sessionId` string, required

## Headers

- `X-Commentary-Workspace-Id` string
- `X-Correlation-Id` string

## Request body

- DraftRevisionUploadRequest
  - `summary` string
  - `sourceType` 'api' | 'mcp' | 'cli' | 'agent_api'
  - `agentAlias` string, nullable: Stable per-agent identifier for agent-authored activity. clientName is not a substitute; the connected human identity remains visible.
  - `files` DraftReviewFileInput[], required
    - `path` string
    - `fileId` string
    - `content` string
    - `assetUploadId` string: Single-use raster upload id returned by the asset preparation endpoint. Mutually exclusive with content.
    - `contentType` 'markdown' | 'html' | 'plain_text' | 'image' | 'svg' | 'mermaid' | 'auto'
  - `addressedThreadIds` string[]: Brainstorming Review thread ids to mark addressed after the literal-content revision is accepted. Requires commentary.comments.status.

## Response `201`

Successful response.

- object
  - `ok` unknown
  - `revision` DraftRevision
    - `id` string
    - `revisionNumber` integer
    - `label` string
    - `origin` string
    - `summary` string, nullable
    - `agentAlias` string, nullable: Stable per-agent identifier for agent-authored activity. clientName is not a substitute; the connected human identity remains visible.
    - `createdAt` string, date-time
    - `files` object[]
  - `changedFiles` object[]
  - `addressedThreadIds` string[]
  - `source` object
  - `noOp` boolean

## Other responses

- `400`: The request was invalid.
- `401`: Authentication is required.
- `403`: The token or session does not have permission for this resource.
- `404`: The resource was not found.
- `429`: The request was rate limited.

---

[API](https://skmtc.dev/commentary/apis/commentary-public-api.md) · [All operations](https://skmtc.dev/commentary/apis/commentary-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/commentary/apis/commentary-public-api/revisions/7aaafc198c52?raw)
