---
title: "Update Project production metadata"
method: PATCH
path: "/api/v1/projects/{project}/production"
tags: ["projects"]
---

# Update Project production metadata

`PATCH /api/v1/projects/{project}/production`

## Request

- Base URL: `https://subscribr.ai`
- URL: `https://subscribr.ai/api/v1/projects/{project}/production`
- Auth: HTTP bearer

## Path parameters

- `project` string, required

## Headers

- `Idempotency-Key` string
- `If-Match` string

## Request body

- UpdateProjectProductionRequest
  - `checklist` object[]
    - `checked` boolean, required
    - `id` integer, required
  - `description` string, nullable
  - `made_for_kids` boolean
  - `mark_scheduled` boolean
  - `publish_at` string, date-time, nullable
  - `request_thumbnail_review` boolean
  - `tags` string[]
  - `thumbnail_text` string, nullable
  - `visibility` 'public' | 'unlisted' | 'private'

## Response `200`

Updated production metadata.

- ProjectProductionResponse
  - `data` ProjectProduction, required
    - `checklist` ProjectUploadChecklistItem[], required
      - `checked` boolean, required
      - `checked_at` string, date-time, nullable, required
      - `checked_by` integer, nullable, required
      - `id` integer, required
      - `label` string, required
      - `required` boolean, required
    - `checklist_total` integer, required
    - `checklist_truncated` boolean, required
    - `project_id` string, required
    - `stage` 'scripting' | 'recording' | 'thumbnail' | 'video_gen' | 'video_ready' | 'upload', required: The recording destination is rejected when the Project channel has recording disabled.
    - `thumbnail` ProjectThumbnailProduction, required
      - `review_notes` string, nullable, required
      - `review_status` string, nullable, required
      - `reviewed_at` string, date-time, nullable, required
      - `text` string, nullable, required
      - `winner_selected` boolean, required
    - `upload` ProjectUploadProduction, required
      - `all_required_checked` boolean, required
      - `description` string, nullable, required
      - `made_for_kids` boolean, required
      - `publish_at` string, date-time, nullable, required
      - `status` 'drafting' | 'scheduled' | 'published' | 'null', nullable, required
      - `tags` string[], required
      - `visibility` 'public' | 'unlisted' | 'private', required
  - `meta` object, required
    - `idempotent_replay` boolean, required
    - `revision` string, required

## Other responses

- `400`: The request could not be processed.
- `401`: Authentication is required.
- `403`: The token, role, entitlement, or object policy denies this action.
- `404`: The resource was not found or is not visible.
- `409`: The request conflicts with current state, revision, idempotency, or canonical replacement.
- `422`: One or more request fields are invalid.
- `429`: The request exceeded a rate limit.
- `500`: The service is temporarily unavailable.

---

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