---
title: "Send saved channels to review, or save, schedule or publish them without one"
method: POST
path: "/v1/workspaces/{workspaceId}/reviews/submit"
tags: ["Reviews"]
---

# Send saved channels to review, or save, schedule or publish them without one

`POST /v1/workspaces/{workspaceId}/reviews/submit`

## Request

- Base URL: `https://api.maevesocial.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.maevesocial.com/v1/workspaces/{workspaceId}/reviews/submit`
- Auth: HTTP bearer

Each item names its choice (workflow, custom stages, or none) and action. Every workflow or custom item belongs to exactly one group, and each group becomes a review that is sent immediately. `requestId` makes retries safe: repeating a request replays its stored results.

## Path parameters

- `workspaceId` string, uuid, required

## Request body

- SubmitReviewsDto
  - `requestId` string, required
  - `items` ReviewSubmitItemDto[], required
    - `contentId` string, uuid, required
    - `expectedVersionId` string, uuid, nullable
    - `expectedUpdatedAt` string, date-time, required
    - `choice` union, required
      - object
        - `kind` 'workflow', required
        - `workflowId` string, uuid, required
        - `stages` unknown
      - object
        - `kind` 'custom', required
        - `workflowId` unknown
        - `stages` ReviewStageInputDto[], required
          - `id` string, uuid, nullable
          - `kind` 'team' | 'client', required
          - `rule` 'any' | 'all', required
          - `inOrder` boolean, nullable
          - `deadlineDays` integer, nullable, required
          - `participants` ReviewParticipantInputDto[], required
            - `id` string, uuid, nullable
            - `userId` string, uuid, nullable
            - `name` string, nullable
            - `email` string, email, nullable
      - object
        - `kind` 'none', required
        - `workflowId` unknown
        - `stages` unknown
    - `action` 'submit' | 'save_draft' | 'schedule' | 'publish_now', required
  - `groups` ReviewSubmitGroupDto[], required
    - `contentIds` string[], required
    - `label` string, nullable
    - `expiresAt` string, nullable
    - `inviteNote` string, nullable

## Response `200`

One result per item

- object
  - `data` PublicReviewSubmitResultDto, required
    - `results` PublicReviewSubmitItemResultDto[], required
      - `contentId` string, uuid, required
      - `action` 'submit' | 'save_draft' | 'schedule' | 'publish_now', required
      - `reviewId` string, uuid: Present when action is submit.
      - `reviewItemId` string, uuid: Present when action is submit.
      - `status` 'draft' | 'scheduled'
      - `scheduledAt` string: Present when action is schedule or publish_now.
  - `meta` unknown, required

## Other responses

- `409`: REVIEW_REQUIRED (details.resolutions lists the routing), REVIEW_WORKFLOW_UNAVAILABLE, or REVIEW_SUBMIT_STALE

---

[API](https://skmtc.dev/maevesocial/apis/maeve-social-api.md) · [All operations](https://skmtc.dev/maevesocial/apis/maeve-social-api/llms.txt) · [OpenAPI document](https://skmtc.dev/maevesocial/apis/maeve-social-api/revisions/1b00fd7e4b15?raw)
