---
title: "POST /api/variant-skus/"
method: POST
path: "/api/variant-skus/"
tags: ["Products/Variant-SKUs"]
---

# POST /api/variant-skus/

`POST /api/variant-skus/`

## Request body

- object
  - `variantId` string, required
  - `forCompanyId` string
  - `name` string, required
  - `description` string, nullable
  - `dimension` string, required
  - `gender` string, nullable
  - `codes` object[], required
    - `codeId` string, required — Identifier type for the code. Single-use (each may appear at most once): ERP_ID, PLM_ID, MAIN_SUPPLIERS_ID, PIM_ID, UPC_GTIN_12, EAN_GTIN_13, ZALANDO_ID, FASHIONCLOUD_ID. Multi-use (append a numeric suffix for additional entries, e.g. OTHER_ID1, OTHER_ID2): OTHER_ID, ALTERNATIVE_SUPPLIERS_ID.
    - `codeValue` string, required — The unique code value for this identifier, e.g. "ERP-001234".
  - `imagesFileIds` string[], nullable
  - `brands` string[], nullable
  - `departments` string[], nullable
  - `seasons` string[], nullable
  - `collections` string[], nullable
  - `customProperties` string, nullable
  - `suppliers` string[], nullable
  - `mainSupplier` string, nullable
  - `vendors` string[], nullable
  - `claimIntentions` string[], nullable
  - `weight` object, nullable
    - `unit` 'GRAM' | 'GRAM_PER_SQUARE_METER' | 'GRAM_PER_SQUARE_FOOT' | 'GRAM_PER_SQUARE_YARD' | 'OUNCE_PER_SQUARE_YARD' | 'MILLIGRAM' | 'KILOGRAM' | 'METRIC_TON' | 'POUNDS' | 'SHORT_TON' | 'LONG_TON' | 'HUNDREDWEIGHT' | 'SHORT_HUNDREDWEIGHT' | 'LONG_HUNDREDWEIGHT' | 'OUNCE' | 'DRAM' | 'GRAIN' | 'PENNYWEIGHT' | 'SCRUPLE' | 'STONE', nullable, required
    - `value` number, nullable, required
  - `isStoryActive` boolean
  - `externalId` string — Your own identifier for this product. Unique per company across all product levels. Can be used in place of the Retraced ID on any product ID field in this API. On update it is only written when the field is present in the body — omitting it keeps the stored value, sending null clears it.

## Response `201`

Default Response

- object
  - `metadata` object, required
    - `success` boolean, required — True when the request succeeded.
  - `data` SkuSchema, required
    - `id` string, required
    - `externalId` unknown
    - `variantId` string, required
    - `styleId` string
    - `forCompanyId` string, required
    - `name` string, required
    - `description` string
    - `dimension` string, required
    - `gender` string
    - `codes` object[], required
      - `codeId` string, required — Identifier type for the code. Single-use (each may appear at most once): ERP_ID, PLM_ID, MAIN_SUPPLIERS_ID, PIM_ID, UPC_GTIN_12, EAN_GTIN_13, ZALANDO_ID, FASHIONCLOUD_ID. Multi-use (append a numeric suffix for additional entries, e.g. OTHER_ID1, OTHER_ID2): OTHER_ID, ALTERNATIVE_SUPPLIERS_ID.
      - `codeValue` string, required — The unique code value for this identifier, e.g. "ERP-001234".
    - `styleLevelId` string, required
    - `styleTypeId` string, required
    - `color` string, required
    - `imagesFileIds` string[]
    - `images` object[]
      - `id` string, required
      - `url` unknown, required
      - `previewUrl` unknown, required
      - `fileType` unknown, required
      - `name` string, required
      - `contentType` unknown, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
    - `brands` string[]
    - `departments` string[]
    - `seasons` string[]
    - `collections` string[]
    - `customProperties` unknown
    - `suppliers` string[]
    - `mainSupplier` string
    - `vendors` string[]
    - `claimIntentions` string[]
    - `weight` object
      - `unit` string, required
      - `value` number, required
    - `overriddenFlag` string[]
    - `isComponent` boolean, required
    - `isStoryActive` boolean, required — Whether the public traceability page (product story) is active for this product. Activating it requires tracing data (e.g. a supply chain) to be attached to the product first.
    - `isArchived` boolean, required
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `createdByImpersonateId` string
    - `createdByUserId` string
    - `createdByCompanyId` string
    - `createdByApiKeyId` string
    - `createdByApiKeyLabel` string
    - `updatedByImpersonateId` string
    - `updatedByUserId` string
    - `updatedByCompanyId` string
    - `updatedByApiKeyId` string
    - `updatedByApiKeyLabel` string
    - `featuredImage` object
      - `id` string, required
      - `url` unknown, required
      - `previewUrl` unknown, required
      - `fileType` unknown, required
      - `name` string, required
      - `contentType` unknown, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
    - `qrCodeUrl` unknown
    - `tracingStory` object
      - `id` string, required
      - `tracingType` string, required
      - `tracingId` string, required
      - `isActive` boolean, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `tracingName` unknown
    - `isWeightAvailable` boolean

## Changes

> 22 revisions in range; 1 not diffed.

- **2026-08-31** `97e51f27dc77` — 29 breaking, 2 warning, 25 info
  - added the new required request property `weight/unit`
  - added the new required request property `weight/value`
  - removed `subschema #1, subschema #2` from the `weight` request property `anyOf` list
  - request property `brands` list-of-types was narrowed by removing types `null` from media type `application/json`
  - …52 more

[Change history](https://skmtc.dev/retraced/apis/api-reference/changes/api/variant-skus/post.md)

---

[API](https://skmtc.dev/retraced/apis/api-reference.md) · [All operations](https://skmtc.dev/retraced/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/retraced/api-reference/revisions/97e51f27dc77/schema)
