---
title: "Batch Create Expected Machines"
method: POST
path: "/v2/org/{org}/nico/expected-machine/batch"
tags: ["Expected Machine"]
---

# Batch Create Expected Machines

`POST /v2/org/{org}/nico/expected-machine/batch`

Create multiple Expected Machines in a single request. All machines must belong to the same site.

Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix.

Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also create Expected Machines if they have an account with the Site's Infrastructure Provider.

Maximum batch size: 100 Expected Machines per request.

## Request body

- ExpectedMachineCreateRequest[]
  - `siteId` string, uuid, required — ID of the site the Expected Machine belongs to
  - `bmcMacAddress` string, required — MAC address of the Expected Machine's BMC (Baseboard Management Controller)
  - `defaultBmcUsername` string, nullable — Username for accessing the Expected Machine's BMC
  - `defaultBmcPassword` string, nullable — Password for accessing the Expected Machine's BMC
  - `chassisSerialNumber` string, required — Serial number of the Expected Machine's chassis
  - `fallbackDPUSerialNumbers` string[], nullable — Serial numbers of the Expected Machine's fallback DPUs (Data Processing Units)
  - `skuId` string, nullable — Optional ID of the SKU to associate with this Expected Machine
  - `rackId` string, nullable — Optional rack identifier for this component
  - `bmcIpAddress` string, nullable — Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC.
  - `name` string, nullable — Display name for this component
  - `manufacturer` string, nullable — Manufacturer of this component
  - `model` string, nullable — Model of this component
  - `description` string, nullable — Description of this component
  - `slotId` integer, nullable — Slot ID within the rack
  - `trayIdx` integer, nullable — Tray index within the rack
  - `hostId` integer, nullable — Host ID within the tray
  - `isDpfEnabled` boolean, nullable — When true, this host is eligible for DPF-based provisioning.
  - `labels` Labels
  - `hostLifecycleProfile` HostLifecycleProfile — Per-host lifecycle settings that affect how NICo progresses a host through its state machine.
    - `disableLockdown` boolean, nullable — When true, the server is not locked down during host lifecycle management. When omitted, the existing value is preserved.

## Response `201`

Created

- ExpectedMachine[]
  - `id` string, uuid — Unique identifier for the Expected Machine
  - `siteId` string, uuid — ID of the site the Expected Machine belongs to
  - `bmcMacAddress` string — MAC address of the Expected Machine's BMC (Baseboard Management Controller)
  - `chassisSerialNumber` string — Serial number of the Expected Machine's chassis
  - `fallbackDPUSerialNumbers` string[] — Serial numbers of the Expected Machine's fallback DPUs (Data Processing Units)
  - `skuId` string, nullable — Optional ID of the SKU associated with this Expected Machine
  - `sku` 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[] — Ethernet device components
        - `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
    - `updated` string, date-time — ISO 8601 datetime when the SKU was last updated
  - `machineId` string, nullable — Optional ID of the Machine associated with this Expected Machine
  - `machine` MachineSummary — Describes a subset of core attributes for a Machine
    - `id` string — Unique ID of Machine
    - `controllerMachineId` string — ID of the Machine at Site, now same as the primary ID
    - `controllerMachineType` string, nullable — Denotes architecture (x86 vs ARM) of the Machine
    - `hwSkuDeviceType` string, nullable — SKU derived device type of the machine, e.g. cpu, gpu, cache, storage, etc.
    - `vendor` string, nullable — Name of the vendor of the Machine
    - `productName` string, nullable — Product name of the Machine
    - `maintenanceMessage` string, nullable — If the Machine is in maintenance mode, this message will typically describe the reason and how long it is expected to be in maintenance
    - `status` 'Initializing' | 'Ready' | 'Reset' | 'Maintenance' | 'InUse' | 'Error' | 'Decommissioned' | 'Unknown' — Status values for Machine objects
  - `rackId` string, nullable — Optional rack identifier for this component
  - `bmcIpAddress` string, nullable — Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC.
  - `name` string, nullable — Display name for this component
  - `manufacturer` string, nullable — Manufacturer of this component
  - `model` string, nullable — Model of this component
  - `description` string, nullable — Description of this component
  - `slotId` integer, nullable — Slot ID within the rack
  - `trayIdx` integer, nullable — Tray index within the rack
  - `hostId` integer, nullable — Host ID within the tray
  - `isDpfEnabled` boolean — When true, this host is eligible for DPF-based provisioning.
  - `labels` Labels
  - `hostLifecycleProfile` HostLifecycleProfile — Per-host lifecycle settings that affect how NICo progresses a host through its state machine.
    - `disableLockdown` boolean, nullable — When true, the server is not locked down during host lifecycle management. When omitted, the existing value is preserved.
  - `created` string, date-time — ISO 8601 datetime when the Expected Machine was created
  - `updated` string, date-time — ISO 8601 datetime when the Expected Machine was last updated

## 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

---

[API](https://skmtc.net/nvidia/apis/nvidia-infra-controller-rest-api.md) · [All operations](https://skmtc.net/nvidia/apis/nvidia-infra-controller-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/nvidia/nvidia-infra-controller-rest-api/versions/69e00804e732/schema)
