---
title: "Retrieve SKU"
method: GET
path: "/v2/org/{org}/nico/sku/{skuId}"
tags: ["SKU"]
---

# Retrieve SKU

`GET /v2/org/{org}/nico/sku/{skuId}`

## Request

- Base URL: `https://nico-rest-api.nico.svc.cluster.local`
- URL: `https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/sku/{skuId}`
- Auth: HTTP bearer

Retrieve a specific SKU (Stock Keeping Unit) by ID.

SKUs represent unique hardware configurations discovered at sites. They are automatically derived from machine characteristics.

For Infrastructure Providers: Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` or `PROVIDER_VIEWER` suffix.

For Tenants: Org must have a Tenant with `TargetedInstanceCreation` capability enabled. User must have authorization role with `TENANT_ADMIN` suffix. The Tenant must have an account with the SKU's Site's Infrastructure Provider.

## Response `200`

OK

- 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 each drive's sysfs PCI path. An empty or omitted list disables PCI location matching. Used for SKU schema version 5 and later. The matched path is the NVMe controller's sysfs DEVPATH with its trailing kernel-assigned `nvmeN` node removed, for example `/devices/pci0000:00/0000:64:00.0/0000:65:00.0/nvme`, because that node changes with probe order. Patterns that anchor on the node (such as `nvme0$`) never match; end them at `/nvme` instead.
    - `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 component in a SKU
      - `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
- `404`: Error response when requested object is not found

## Changes

- **2026-10-20** `273aadbf1c41`: 2 breaking
  - added `#/components/schemas/SkuTpm, subschema #2` to the `components/tpm` response property `oneOf` list for the response status `200`
  - the `components/tpm` response's property type changed from `array` to no type for status `200`
- **2026-10-15** `293dc126ab73`: 3 info
  - removed the `nico` enum value from the `source` response property for the response status `400`
  - removed the `nico` enum value from the `source` response property for the response status `403`
  - removed the `nico` enum value from the `source` response property for the response status `404`
- **2026-09-29** `78f3b35615a5`: 3 info
  - added the optional property `retryable` to the response with the `400` status
  - added the optional property `retryable` to the response with the `403` status
  - added the optional property `retryable` to the response with the `404` status
- **2026-08-11** `4c29fe59bd4e`: 1 warning, 1 info
  - removed the optional property `updated` from the response with the `200` status
  - the response optional property `components/ethernetDevices` became read-only for the status `200`
- …earlier changes not shown

[Operation history](https://skmtc.dev/nvidia/apis/nvidia-infra-controller-rest-api/changes/v2/org/:org/nico/sku/:skuId/get.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.dev/nvidia/apis/nvidia-infra-controller-rest-api/revisions/db15b7308121?raw)
