---
title: "Create SKU"
method: POST
path: "/v2/org/{org}/nico/sku"
tags: ["SKU"]
---

# Create SKU

`POST /v2/org/{org}/nico/sku`

Create a SKU.

The Org must have an Infrastructure Provider that owns the Site. The user must have an authorization role with the `PROVIDER_ADMIN` suffix.

## Request body

- SkuCreateRequest — Request data to create a SKU on a Site's NICo Core service.
  - `siteId` string, uuid, required — ID of the Site where the SKU will be created
  - `id` string, required — Unique SKU identifier
  - `description` string — Human-readable SKU description
  - `deviceType` string, nullable — Optional device type identifier
  - `components` SkuComponents, required — Hardware components that make up a SKU
    - `cpus` SkuCpu[] — CPU components
      - `vendor` string — Vendor of the CPU
      - `model` string — Model of the CPU
      - `threadCount` integer — Number of threads for the CPU
      - `count` integer — Number of CPUs present
    - `gpus` SkuGpu[] — GPU components
      - `vendor` string — Vendor of the GPU
      - `model` string — Model of the GPU
      - `totalMemory` string — Total memory of the GPU (e.g. "80GB HBM3")
      - `count` integer — Number of GPUs present
    - `memory` SkuMemory[] — Memory components
      - `capacityMb` integer — Capacity in megabytes
      - `memoryType` string — Type of memory (e.g. "DDR4", "DDR5")
      - `count` integer — Number of memory modules present
    - `storage` SkuStorage[] — Storage components
      - `vendor` string — Storage vendor used for schema version 4 matching. Read-only in REST mutation requests and preserved in responses for legacy SKUs. Schema version 5 does not use this field.
      - `model` string — Informational storage model. Starting with the 2.1 release, NICo does not use this field for storage matching or validation.
      - `capacityMb` integer — Storage capacity in megabytes used for schema version 4 matching. Read-only in REST mutation requests and preserved in responses for legacy SKUs. Schema version 5 uses minSizeMiB and maxSizeMiB instead.
      - `count` integer — Number of storage devices present
      - `minSizeMiB` integer, nullable — Inclusive minimum size in MiB for each storage device. Null or omission means no lower bound. Used for SKU schema version 5 and later.
      - `maxSizeMiB` integer, nullable — Inclusive maximum size in MiB for each storage device. Null or omission means no upper bound. Used for SKU schema version 5 and later.
      - `pciPatterns` string[] — Regular expressions matched against storage sysfs PCI paths. An empty or omitted list disables PCI location matching. Used for SKU schema version 5 and later.
    - `chassis` SkuChassis — Chassis component in a SKU
      - `vendor` string — Vendor of the chassis
      - `model` string — Model of the chassis
      - `architecture` string — Architecture of the chassis
    - `ethernetDevices` SkuEthernetDevice[] — Read-only Ethernet device components reported by Core. Omit this property from REST mutation requests; null and an empty array are accepted for compatibility, while a non-empty array is rejected with HTTP 400.
      - `vendor` string — Vendor of the ethernet device
      - `model` string — Model of the ethernet device
      - `count` integer — Number of ethernet devices present
      - `isConnected` boolean — Whether the ethernet device is connected
    - `infinibandDevices` SkuInfinibandDevice[] — Infiniband device components
      - `vendor` string — Vendor of the infiniband device
      - `model` string — Model of the infiniband device
      - `count` integer — Number of infiniband devices present
      - `inactiveDevices` integer[] — Zero-based indexes of inactive devices
    - `tpm` SkuTpm[] — TPM components
      - `vendor` string — Vendor of the TPM
      - `version` string — Version of the TPM

## Response `201`

Created

- Sku — A SKU (Stock Keeping Unit) represents a unique hardware configuration discovered at a site. SKUs are automatically derived from machine hardware characteristics and used to group similar machines.
  - `id` string — Unique identifier for the SKU
  - `siteId` string, uuid — ID of the Site this SKU belongs to
  - `description` string — Human-readable SKU description
  - `schemaVersion` integer — Core SKU schema version when available
  - `deviceType` string, nullable — Optional device type identifier (e.g. "gpu", "cpu", "storage")
  - `associatedMachineIds` string[] — List of machine IDs associated with this SKU
  - `components` SkuComponents — Hardware components that make up a SKU
    - `cpus` SkuCpu[] — CPU components
      - `vendor` string — Vendor of the CPU
      - `model` string — Model of the CPU
      - `threadCount` integer — Number of threads for the CPU
      - `count` integer — Number of CPUs present
    - `gpus` SkuGpu[] — GPU components
      - `vendor` string — Vendor of the GPU
      - `model` string — Model of the GPU
      - `totalMemory` string — Total memory of the GPU (e.g. "80GB HBM3")
      - `count` integer — Number of GPUs present
    - `memory` SkuMemory[] — Memory components
      - `capacityMb` integer — Capacity in megabytes
      - `memoryType` string — Type of memory (e.g. "DDR4", "DDR5")
      - `count` integer — Number of memory modules present
    - `storage` SkuStorage[] — Storage components
      - `vendor` string — Storage vendor used for schema version 4 matching. Read-only in REST mutation requests and preserved in responses for legacy SKUs. Schema version 5 does not use this field.
      - `model` string — Informational storage model. Starting with the 2.1 release, NICo does not use this field for storage matching or validation.
      - `capacityMb` integer — Storage capacity in megabytes used for schema version 4 matching. Read-only in REST mutation requests and preserved in responses for legacy SKUs. Schema version 5 uses minSizeMiB and maxSizeMiB instead.
      - `count` integer — Number of storage devices present
      - `minSizeMiB` integer, nullable — Inclusive minimum size in MiB for each storage device. Null or omission means no lower bound. Used for SKU schema version 5 and later.
      - `maxSizeMiB` integer, nullable — Inclusive maximum size in MiB for each storage device. Null or omission means no upper bound. Used for SKU schema version 5 and later.
      - `pciPatterns` string[] — Regular expressions matched against storage sysfs PCI paths. An empty or omitted list disables PCI location matching. Used for SKU schema version 5 and later.
    - `chassis` SkuChassis — Chassis component in a SKU
      - `vendor` string — Vendor of the chassis
      - `model` string — Model of the chassis
      - `architecture` string — Architecture of the chassis
    - `ethernetDevices` SkuEthernetDevice[] — Read-only Ethernet device components reported by Core. Omit this property from REST mutation requests; null and an empty array are accepted for compatibility, while a non-empty array is rejected with HTTP 400.
      - `vendor` string — Vendor of the ethernet device
      - `model` string — Model of the ethernet device
      - `count` integer — Number of ethernet devices present
      - `isConnected` boolean — Whether the ethernet device is connected
    - `infinibandDevices` SkuInfinibandDevice[] — Infiniband device components
      - `vendor` string — Vendor of the infiniband device
      - `model` string — Model of the infiniband device
      - `count` integer — Number of infiniband devices present
      - `inactiveDevices` integer[] — Zero-based indexes of inactive devices
    - `tpm` SkuTpm[] — TPM components
      - `vendor` string — Vendor of the TPM
      - `version` string — Version of the TPM
  - `created` string, date-time — ISO 8601 datetime when the SKU was created, using the Site-reported timestamp when available

## Other responses

- `400` — Error response when request data cannot be validated
- `403` — Error response when user is not authorized to call an endpoint or retrieve/modify objects

## Changes

- **2026-08-19** `484497856a94` — 11 warning
  - the `components/cpus/items/count` request property's min was set to `0.00`
  - the `components/cpus/items/threadCount` request property's min was set to `0.00`
  - the `components/ethernetDevices/items/count` request property's min was set to `0.00`
  - the `components/gpus/items/count` request property's min was set to `0.00`
  - …7 more
- **2026-08-11** `4c29fe59bd4e` — 1 warning, 2 info
  - removed the optional property `updated` from the response with the `201` status
  - the request optional property `components/ethernetDevices` became read-only
  - the response optional property `components/ethernetDevices` became read-only for the status `201`
- **2026-07-31** `7d155f726f88` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/nvidia/apis/nvidia-infra-controller-rest-api/changes/v2/org/:org/nico/sku/post.md)

---

[API](https://skmtc.dev/nvidia/apis/nvidia-infra-controller-rest-api.md) · [All operations](https://skmtc.dev/nvidia/apis/nvidia-infra-controller-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nvidia/nvidia-infra-controller-rest-api/revisions/e871abfd58d5/schema)
