Endpoint
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
workspaceId | string | Yes | Your workspace ID |
catalogId | string | Yes | The catalog to process |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
productIds | string[] | No | Product IDs to process. Required when scope is "selection" |
scope | string | Yes | "selection" or "all". When "all", productIds is ignored |
Response
SilverResult fields
| Field | Type | Description |
|---|---|---|
productId | string | The product that was processed |
status | string | "success" or "error" |
fieldsNormalized | number | Count of fields that were transformed |
duplicateOf | string | null | If a duplicate was detected, the ID of the canonical product |
urlsValidated | number | Count of image/media URLs checked for HTTP 200 |
error | string | Present only when status is "error" |
Top-level response fields
| Field | Type | Description |
|---|---|---|
results | SilverResult[] | Per-product results |
processed | number | Total products processed (success + error) |
duration_ms | number | Total processing time in milliseconds |
Examples
Normalize entire catalog
Error responses
| HTTP status | Code | Description |
|---|---|---|
| 400 | VALIDATION_ERROR | scope is missing or invalid |
| 403 | INSUFFICIENT_PERMISSIONS | API key lacks catalogs:write |
| 404 | CATALOG_NOT_FOUND | Catalog does not exist in workspace |
| 409 | JOB_ALREADY_RUNNING | A Silver or Gold job is already in progress |
| 429 | RATE_LIMIT_EXCEEDED | Slow down and retry after the Retry-After header value |