---
title: "Start a Claude Code review session"
method: POST
path: "/reviews"
tags: ["Reviews"]
---

# Start a Claude Code review session

`POST /reviews`

## Request

- Base URL: `https://commareports.com/api/v1`
- URL: `https://commareports.com/api/v1/reviews`
- Auth: HTTP bearer

Creates a private report plus a pending review session and returns a `review_url` for a human to open; the caller then polls `GET /reviews/{id}` until `status` flips to `submitted` or `cancelled`, and fetches feedback via `GET /reports/{id}/comments`. Scope: `reports:write`.

## Request body

- object
  - `html` string, required: Required. Max 5 MB.
  - `title` string
  - `source_file` string

## Response `201`

Review session created.

- ReviewSessionCreated
  - `session_id` string, uuid, required
  - `report_id` string, uuid, required
  - `review_url` string, uri, required: Open in a browser; carries ?review_session=.
  - `created_at` string, date-time, required

## Other responses

- `400`: Malformed body or invalid field.
- `401`: Missing, invalid, revoked, or expired token.
- `403`: Token missing the required scope, or no access to the resource.
- `413`: Payload exceeds a size limit (HTML > 5 MB; asset > 25 MB per file or > 250 MB per report).
- `429`: Rate limit exceeded. Rate limit: per-token sliding window (plan-aware — Free 60 req/min, Pro 600, Team/Enterprise 6000 by default); 429 responses carry a Retry-After header.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/commareports/apis/comma-api.md) · [All operations](https://skmtc.dev/commareports/apis/comma-api/llms.txt) · [OpenAPI document](https://skmtc.dev/commareports/apis/comma-api/revisions/cd5263522ade?raw)
