POST /v2/hosts/{hostID}/ip-addresses
Assign an IPv4 address to a host that does not have one, such as a host created before its network gained an IPv4 CIDR. A host may have at most one IPv4 address.
Token scope required: hosts:update
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Example
host-24NVITKMNU3CYCEDNFWKAOBX7IRequest Body required
Section titled “Request Body required ”object
An IPv4 address to assign, or the network’s IPv4 CIDR to auto-assign the next available address within it.
Example
100.100.0.29Responses
Section titled “ Responses ”Successful operation
object
object
List of IP addresses assigned to this host within the overlay network. On dual-stack networks this includes both an IPv4 and IPv6 address. On IPv6-only networks this contains only an IPv6 address.
Will be zero if a regular host
List of config overrides for the nebula config. Each key may appear at most once. Responses may include keys that aren’t documented; since setting overrides replaces the whole list, keep entries you don’t recognize when writing a list back.
A single Nebula config override. key names the Nebula config option and determines the type of value; see Config override keys for the documented keys and their value types, and the Nebula config reference for what each option does.
object
Example
tun.mtuThe override’s value. Its type depends on key.
Example
1300Information reported by the host when it last checked in. Fields are null until the host has checked in.
object
Client platform reported by the host, or null if unknown. Known values are dnclient, dnclient-desktop and mobile. New values may be added, so clients should accept values not listed here.
Operating system reported by the client, or null if unknown. Known values are aix, android, dragonfly, freebsd, hurd, illumos, ios, linux, macos, nacl, netbsd, openbsd, plan9, solaris, wasm, windows and zos. New values may be added, so clients should accept values not listed here.
Example
{ "data": { "id": "host-24NVITKMNU3CYCEDNFWKAOBX7I", "organizationID": "org-F63A24JGCLJV3ZEUTLCBISGETA", "networkID": "network-KAOWMXZHZWCVMGGFKM22XEGYLE", "roleID": "role-PZEDBXHCEXKAKJPZ6XOQTIAJA4", "endpointOIDCUserID": null, "name": "Host 1", "ipAddresses": [ "100.100.0.29", "fdef:c0:c0:1::1d" ], "staticAddresses": [], "listenPort": 0, "isLighthouse": false, "isRelay": false, "isBlocked": false, "createdAt": "2025-01-25T18:15:27Z", "modifiedAt": "2025-01-25T18:15:27Z", "tags": [ "env:prod" ], "configOverrides": [], "metadata": { "lastSeenAt": "2025-01-25T18:15:27Z", "os": "linux", "platform": "dnclient", "updateAvailable": false, "version": "0.9.3" } }}Validation error
object
object
A static name for the error type
A short human readable description of the error
Describes the variable missing or malformed
The query parameter the error relates to, such as filter.targetType
Machine-readable details about the error. ERR_LIMIT_EXCEEDED errors carry limit and limitName.
object
The maximum number of resources allowed
The kind of resource the limit applies to
Examples
`ipAddress` is not an IPv4 address or IPv4 CIDR.
{ "errors": [ { "code": "ERR_INVALID_VALUE", "message": "must be a valid IPv4 address or IPv4 CIDR", "path": "ipAddress" } ]}The host already has an IPv4 address.
{ "errors": [ { "code": "ERR_HOST_ALREADY_HAS_IPV4", "message": "host already has an IPv4 address" } ]}The host's network does not have an IPv4 CIDR.
{ "errors": [ { "code": "ERR_OUT_OF_RANGE", "message": "network does not have an IPv4 prefix", "path": "ipAddress" } ]}The address is outside the network's IPv4 CIDR.
{ "errors": [ { "code": "ERR_OUT_OF_RANGE", "message": "value falls outside of the allowed range", "path": "ipAddress" } ]}The CIDR prefix does not match the network's IPv4 CIDR.
{ "errors": [ { "code": "ERR_OUT_OF_RANGE", "message": "CIDR prefix does not match the network's IPv4 CIDR", "path": "ipAddress" } ]}Another host already has the requested address.
{ "errors": [ { "code": "ERR_DUPLICATE_VALUE", "message": "value already exists", "path": "ipAddress" } ]}No IPv4 addresses are left to auto-assign.
{ "errors": [ { "code": "ERR_NETWORK_FULLY_ALLOCATED", "message": "there are no IP addresses available for assignment in the network" } ]}The API key is missing, invalid or expired.
object
object
A static name for the error type
A short human readable description of the error
Describes the variable missing or malformed
The query parameter the error relates to, such as filter.targetType
Machine-readable details about the error. ERR_LIMIT_EXCEEDED errors carry limit and limitName.
object
The maximum number of resources allowed
The kind of resource the limit applies to
Example
{ "errors": [ { "code": "ERR_UNAUTHORIZED", "message": "unauthorized" } ]}The API key lacks a required scope.
object
object
A static name for the error type
A short human readable description of the error
Describes the variable missing or malformed
The query parameter the error relates to, such as filter.targetType
Machine-readable details about the error. ERR_LIMIT_EXCEEDED errors carry limit and limitName.
object
The maximum number of resources allowed
The kind of resource the limit applies to
Examples
The API key lacks a required scope.
{ "errors": [ { "code": "ERR_FORBIDDEN", "message": "api key must support the following scopes: hosts:read" } ]}Host not found
object
object
A static name for the error type
A short human readable description of the error
Describes the variable missing or malformed
The query parameter the error relates to, such as filter.targetType
Machine-readable details about the error. ERR_LIMIT_EXCEEDED errors carry limit and limitName.
object
The maximum number of resources allowed
The kind of resource the limit applies to
Example
{ "errors": [ { "code": "ERR_NOT_FOUND", "message": "resource not found" } ]}The organization has exceeded its API request rate limit. Retry the request after a short delay.
object
object
A static name for the error type
A short human readable description of the error
Describes the variable missing or malformed
The query parameter the error relates to, such as filter.targetType
Machine-readable details about the error. ERR_LIMIT_EXCEEDED errors carry limit and limitName.
object
The maximum number of resources allowed
The kind of resource the limit applies to
Example
{ "errors": [ { "code": "ERR_TOO_MANY_REQUESTS", "message": "too many requests" } ]}