---
title: "Submit an asset for review"
method: POST
path: "/api/v1/production-review/submissions"
tags: ["Production Review"]
---

# Submit an asset for review

`POST /api/v1/production-review/submissions`

## Request

- Base URL: `https://numonic.ai`
- URL: `https://numonic.ai/api/v1/production-review/submissions`
- Auth: API key in header `x-api-key`

Targets a work-item collection or a bare project collection. The version number is allocated per target. Scope `write`.

## Headers

- `Idempotency-Key` string, required: Client-generated key (e.g. a UUID). Replaying the same key returns the original result; reusing it with a different payload is 409.
- `X-Tenant-ID` string, uuid: Target tenant UUID. Required when API key has access to multiple tenants.

## Request body

- object
  - `assetRef` string, required
  - `targetRef` string, required
  - `title` string, required
  - `supersedesRef` string

## Response `201`

Submission created (or the original, on replay)

- ReviewSubmission: `state` is derived: the latest decision outcome, else `pending`. A resubmission is a new submission with `supersedes` and the next `versionNumber`.
  - `ref` string, required
  - `projectRef` string, required
  - `workItemRef` string
  - `title` string, required
  - `media` object, required
    - `versionNumber` integer, required
    - `media` object, required
      - `kind` 'numonic-asset', required
      - `assetH` string, required
    - `numonicAssetH` string
  - `state` 'pending' | 'needs_changes' | 'approved', required
  - `submittedBy` object, required
    - `displayName` string, required
    - `numonicAgentId` string
  - `submittedAt` string, required
  - `supersedes` string
  - `decisions` object[], required
    - `outcome` 'needs_changes' | 'approved', required
    - `decidedBy` object, required
      - `displayName` string, required
      - `numonicAgentId` string
    - `decidedAt` string, required
  - `externalRefs` unknown[], required
    - unknown

## Other responses

- `400`: Validation failed or Idempotency-Key missing
- `401`: Unauthorized
- `403`: Insufficient scope or role
- `404`: Asset or target collection not found
- `409`: Idempotency-Key reused with a different payload
- `422`: Invalid supersedes (must be on the same target)

---

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