---
title: "Upload exactly the raster bytes declared by a prepared upload."
method: PUT
path: "/api/v1/draft-reviews/assets/{uploadId}"
tags: ["Draft reviews"]
---

# Upload exactly the raster bytes declared by a prepared upload.

`PUT /api/v1/draft-reviews/assets/{uploadId}`

## Request

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

Requires Content-Length and the prepared image MIME type. The server verifies byte length, SHA-256, decoded format, dimensions, actor, expiry, and single-use state.

## Path parameters

- `uploadId` string, required

## Headers

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

## Response `200`

Successful response.

- object
  - `ok` unknown
  - `uploadId` string
  - `path` string
  - `mimeType` string
  - `width` integer
  - `height` integer

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