---
title: "Create a Web App Review for a deployed or localhost preview URL."
method: POST
path: "/api/v1/web-app-reviews"
tags: ["Web App reviews"]
---

# Create a Web App Review for a deployed or localhost preview URL.

`POST /api/v1/web-app-reviews`

## Request

- Base URL: `https://commentary.dev`
- URL: `https://commentary.dev/api/v1/web-app-reviews`
- Auth: HTTP bearer

The preview app must be customer-controlled and frameable by Commentary. The Web App Review SDK enables selector comments; screenshot comments can target bounded areas when the SDK is unavailable.

## Headers

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

## Request body

- CreateWebAppReviewRequest
  - `title` string, required
  - `sourceType` 'deployed_url' | 'localhost', required
  - `previewUrl` string, uri, required
  - `deliveryMode` 'auto' | 'embedded' | 'new_tab'
  - `repo` WebAppReviewRepo
    - `provider` string, nullable
    - `owner` string, nullable
    - `name` string, nullable
    - `branch` string, nullable
    - `commitSha` string, nullable
    - `deploymentId` string, nullable
    - `buildId` string, nullable
  - `externalMetadata` object

## Response `201`

Successful response.

- object
  - `ok` unknown
  - `webAppReview` WebAppReview
    - `id` string
    - `title` string
    - `owner` WebAppReviewPrincipalIdentity
      - `viewerId` string, nullable
      - `providerAccountId` string, nullable
      - `login` string, nullable
    - `currentUser` WebAppReviewPrincipalIdentity
      - `viewerId` string, nullable
      - `providerAccountId` string, nullable
      - `login` string, nullable
    - `sourceType` 'deployed_url' | 'localhost'
    - `previewUrl` string, uri
    - `previewOrigin` string
    - `deliveryMode` 'auto' | 'embedded' | 'new_tab'
    - `repo` WebAppReviewRepo
      - `provider` string, nullable
      - `owner` string, nullable
      - `name` string, nullable
      - `branch` string, nullable
      - `commitSha` string, nullable
      - `deploymentId` string, nullable
      - `buildId` string, nullable
    - `status` 'active' | 'archived'
    - `reviewUrl` string, uri
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `reviewId` string
  - `reviewUrl` string, uri

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