---
title: "Confirm a content draft"
method: POST
path: "/api/v1/content/{id}/confirm"
tags: ["content"]
---

# Confirm a content draft

`POST /api/v1/content/{id}/confirm`

## Request

- Base URL: `https://api.growomat.com`
- URL: `https://api.growomat.com/api/v1/content/{id}/confirm`
- Auth: HTTP bearer

Moves a reviewed piece from `review` to `ready`. When interview answers changed after the piece was written, confirming rewrites it first: the response is then `202` with a draft that lands in `ready` on its own, and the rewrite counts as one draft against the allowance. Pass `skipRewrite: true` to finish without the rewrite.

**Errors**

- `404 NOT_FOUND`: no draft with this id in the active Space.
- `409 QUESTIONS_OPEN`: a required interview question is still unanswered.
- `409 BRAND_VIOLATION`: the piece uses a phrase the business's brand profile bans.

## Path parameters

- `id` string, required

## Headers

- `X-Space-Id` string

## Request body

- ContentDraftConfirm: Confirm options. An empty body is valid.
  - `skipRewrite` boolean: Finish without rewriting even when interview answers changed after the piece was written, for example when the monthly draft allowance is spent. The answers are recorded as applied so the piece does not stay pending.

## Response `200`

OK. The result is in `data`. List responses also carry `meta` with `nextCursor` and `total`.

- SuccessEnvelope: The shape of every successful response.
  - `data` unknown, required
  - `meta` object: Present on list responses.
    - `nextCursor` union: Pass as `cursor` to get the next page. `null` on the last page.
      - string
      - number
    - `total` integer: Number of items in this page.

## Other responses

- `201`: Created. The new resource is in `data`.
- `400`: The request is malformed or fails validation. `error.code` is `VALIDATION_ERROR` (with `details.issues[]` naming each field), `INVALID_REQUEST` (the body is not valid JSON or has the wrong shape), or one of the specific codes listed in this operation's description.
- `401`: The bearer token is missing, invalid, expired or revoked (`INVALID_TOKEN`).
- `403`: The token lacks the scope this operation needs (`INSUFFICIENT_SCOPE`), the plan is read-only (`READ_ONLY_MODE`), or the caller is not a member of the Space named in `X-Space-Id` (`NOT_A_MEMBER`).
- `404`: No such resource in the active Space (`NOT_FOUND`), or `X-Space-Id` names a Space that does not exist (`SPACE_NOT_FOUND`).
- `409`: The request conflicts with the current state, for example a delete blocked by dependents or a sync already running. This operation's description names the `error.code` values it can return.
- `429`: Too many requests (`RATE_LIMITED`). Wait for the number of seconds in the `Retry-After` header, then retry.

---

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