---
title: "Create one or several new nodes"
method: PUT
path: "/nodes"
tags: ["Nodes"]
---

# Create one or several new nodes

`PUT /nodes`

Use the provided array of node information to create new nodes

## Request body

- object[]
  - `id` string, required — The Rudder node unique identifier in /opt/rudder/etc/uuid.hive
  - `hostname` string, required — The fully qualified name of the node
  - `status` 'accepted' | 'pending', required — Target status of the node
  - `os` Os, required
    - `type` 'linux' | 'windows' | 'unknown', required
    - `name` 'debian' | 'kali' | 'ubuntu' | 'redhat' | 'centos' | 'fedora' | 'suse' | 'oracle' | 'scientific' | 'slackware' | 'xp' | 'vista' | 'seven' | '10' | '2000' | '2003' | '2008 r2' | '2012' | '2012 r2' | '2016', required — For Linux, a distribution, for Windows, the commercial name
    - `version` string, required — A string representation of the version
    - `fullName` string, required — The long description name of the os
    - `servicePack` string — a service pack informationnal string
  - `policyServerId` string — The policy server ID for that node. By default, "root"
  - `machineType` 'physical' | 'vm' | 'hyperv' | 'qemu' | 'vbox' | 'vmware' | 'xen' — The kind of machine for the node (use vm for a generic VM)
  - `machine` object — The kind of machine for the node (use vm for a generic VM)
    - `type` 'Physical' | 'Virtual', required — list of groups to include in rule application
    - `provider` 'hyperv' | 'qemu' | 'vbox' | 'vmware' | 'xen' — The kind of virtual machine for the node
    - `manufacturer` string — Manufacturer of the machine
    - `serialNumber` string — Serial number of the machine
  - `state` 'enabled' | 'ignored' | 'empty-policies' | 'initializing' | 'preparing-eol' — Node lifecycle state. Can only be specified when status=accepted. If not specified, enable is used
  - `policyMode` 'enforce' | 'audit' — The policy mode for the node. Can only be specified when status=accepted. If not specified, the default (global) mode will be used
  - `agentKey` AgentKey — Information about agent key or certificate
    - `value` string, PEM, required — Certificate (or public key for <6.0 agents) used by the agent. Be careful write a "\n" after header line and before footer line, JSON does not keep formatting in string.
    - `status` 'certified' | 'undefined' — Certification status of the security token (reset to `undefined` to trust a new certificate). If `certified`, inventory signature check will be enforced
  - `properties` object[], required — Node properties (either set by user or filled by third party sources)
    - `name` string, required — Property name
    - `value` string, string or JSON, required — Property value (can be a string or JSON object)
  - `ipAddresses` string[], required — an array of IPs.
  - `timezone` Timezone — Timezone information of the node.
    - `name` string, required — The standard name of the timezone
    - `offset` string, required — Timezone offset compared to UTC, in +/-HHMM format

## Response `200`

Creation information

- object
  - `result` 'success' | 'error', required — Result of the request
  - `action` 'createNode', required — The id of the action
  - `data` object, required
    - `created` string[], required
    - `failed` string[], required

---

[API](https://skmtc.net/rudder/apis/rudder-api.md) · [All operations](https://skmtc.net/rudder/apis/rudder-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rudder/rudder-api/revisions/eab988254fba/schema)
