<!--
{
  "availability" : [
    "iOS: 16.4.0 -",
    "iPadOS: 16.4.0 -",
    "macCatalyst: 16.4.0 -",
    "macOS: 13.3.0 -",
    "tvOS: 16.4.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 9.4.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Matter",
  "identifier" : "/documentation/Matter/MTRDeviceControllerStartupParams/nodeID-9iwwv",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Property",
  "symbol" : {
    "kind" : "Instance Property",
    "modules" : [
      "Matter"
    ],
    "preciseIdentifier" : "c:objc(cs)MTRDeviceControllerStartupParams(py)nodeID"
  },
  "title" : "nodeID"
}
-->

# nodeID

Node id for this controller.

```
@NSCopying var nodeID: NSNumber? { get set }
```

## Discussion

If operationalCertificate is not nil, must be nil.  The provided operational
certificate will be used as-is.

If not nil, must be a valid Matter operational node id.

If operationalCertificate is nil, nodeID and operationalKeypair are used to
determine an operational certificate, as follows:

- When creating a new fabric:

** nodeID is allowed to be nil to indicate that a random node id should be
generated.

- When using an existing fabric:

** nodeID is allowed to be nil to indicate that the existing operational node
id should be used.  The existing operational keys will also be used,
unless operationalKeypair is provided.  The existing caseAuthenticatedTags
will be used.

** If nodeID is not nil, a new operational certificate will be generated for
the provided node id (even if that matches the existing node id), using
either the operationalKeypair if that is provided or a new randomly
generated operational key, and using the provided caseAuthenticatedTags.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)