> ## Documentation Index
> Fetch the complete documentation index at: https://enrichment-docs.verzla.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit Proposals

> POST /api/enrichment/products/submissions

<Info>**`POST /api/enrichment/products/submissions`** · Scope: `catalog:submit`</Info>

Submit a batch of enrichment proposals. Each item becomes a **pending revision** for reviewer
acceptance. See the [guide](/enrichment/submitting-proposals).

## Request body

<ParamField body="externalSubmissionId" type="string">
  Your own correlation/idempotency handle for the batch. Optional but recommended.
</ParamField>

<ParamField body="items" type="object[]" required>
  1–1000 submission items.

  <Expandable title="item">
    <ParamField body="sku" type="string" required>Identity key matching the proposal to a product.</ParamField>
    <ParamField body="confidence" type="integer">Certainty 0–100. Drives reviewer triage. Optional.</ParamField>
    <ParamField body="name" type="string">Proposed name. Enrichable.</ParamField>
    <ParamField body="slug" type="string">Proposed slug. Enrichable.</ParamField>
    <ParamField body="description" type="string">Proposed description. Enrichable.</ParamField>
    <ParamField body="attributes" type="object[]">Proposed attributes (`attribute`, `detail`, `option`). Enrichable.</ParamField>
    <ParamField body="files" type="string[]">Proposed document references. Enrichable.</ParamField>
  </Expandable>
</ParamField>

```json theme={null}
{
  "externalSubmissionId": "batch-2026-06-22-001",
  "items": [
    {
      "sku": "ABC-123",
      "confidence": 92,
      "name": "Acme 18V Cordless Impact Driver",
      "description": "A compact 18V brushless impact driver...",
      "attributes": [
        { "attribute": "Voltage", "detail": "18", "option": { "optionId": 880, "unit": "V", "priority": 1, "dataType": "NUMBER", "showOnWebsite": true } }
      ]
    }
  ]
}
```

## Response `200`

One result per item, in submission order.

<ResponseField name="sku" type="string">Echo of the item's identity, for correlation.</ResponseField>
<ResponseField name="productId" type="number | null">Matched product id, or `null` when unmatched.</ResponseField>
<ResponseField name="revisionId" type="number | null">Created revision id when `status` is `CREATED`.</ResponseField>

<ResponseField name="status" type="string">
  One of:

  * `CREATED` — pending revision created.
  * `UNMATCHED` — no product matched the identity (or ambiguous).
  * `REJECTED_FIELDS` — no whitelisted, non-empty enrichable fields to propose.
</ResponseField>

<ResponseField name="ignoredFields" type="string[]">Submitted fields dropped as non-enrichable or empty.</ResponseField>

```json theme={null}
[
  { "sku": "ABC-123", "productId": 90210, "revisionId": 55123, "status": "CREATED", "ignoredFields": [] },
  { "sku": "NOPE-1",  "productId": null,  "revisionId": null,  "status": "UNMATCHED", "ignoredFields": [] }
]
```

## Errors

| Status | When                                                                   |
| ------ | ---------------------------------------------------------------------- |
| `400`  | `items` empty or missing ("Submission must contain at least one item") |
| `400`  | More than 1000 items ("Submission exceeds the maximum of 1000 items")  |
| `401`  | Missing or invalid API key                                             |
| `403`  | Key lacks `catalog:submit`                                             |
