ZeroTierOne Service API (0.1.0)
Download OpenAPI specification:Download
This API controls the ZeroTier service that runs in the background on your computer. This is how zerotier-cli, and the macOS and Windows apps control the service.
API requests must be authenticated via an authentication token. ZeroTier One saves this token in the authtoken.secret file in its working directory. This token may be supplied via the X-ZT1-Auth HTTP request header.
For example: curl -H "X-ZT1-Auth: $TOKEN" http://localhost:9993/status
The token can be found in:
- Mac :: ~/Library/Application Support/ZeroTier/authtoken.secret
- Windows :: \ProgramData\ZeroTier\One
- Linux :: /var/lib/zerotier-one
You can get the OpenAPI spec here as well: https://docs.zerotier.com/openapi/servicev1.json
Response samples
- 200
{- "address": "0deadbeef1",
- "clock": 1618948931097,
- "config": {
- "settings": {
- "allowTcpFallbackRelay": true,
- "portMappingEnabled": true,
- "primaryPort": 9993
}
}, - "online": true,
- "planetWorldId": 149604618,
- "planetWorldTimestamp": 1618339625163,
- "publicIdentity": "33c799cb58:0:690b44091ec50a44eb7f7769354b49abb47ac8747d99d547a1ec8c4d47623c5a6e3927f29b8d8443aebebc9ba4d4a812bd8902d71318db34b89d00186e8f4e4e",
- "tcpFallbackActive": true,
- "version": "1.6.4",
- "versionBuild": 0,
- "versionMajor": 1,
- "versionMinor": 6,
- "versionRev": 4
}
Response samples
- 200
[- {
- "allowDNS": true,
- "allowDefault": true,
- "allowGlobal": true,
- "allowManaged": true,
- "assignedAddresses": [
- "10.147.20.190"
], - "bridge": true,
- "broadcastEnabled": true,
- "dns": {
- "domain": "zt.example.com",
- "servers": [
- "10.147.20.3"
]
}, - "id": "565799d8f620c5c5",
- "mac": "e6:d2:2b:e6:68:73",
- "mtu": 2800,
- "multicastSubscriptions": [
- {
- "adi": 0,
- "mac": "34:34:ff:da:6e:ff"
}
], - "name": "clever_krum",
- "netconfRevision": 123,
- "portDeviceName": "ztnnhrtimp",
- "portError": 0,
- "routes": [
- {
- "flags": 0,
- "metric": 0,
- "target": "10.147.20.0/24",
- "via": "192.168.168.5"
}
], - "status": "OK",
- "type": "PRIVATE"
}
]
Get a joined Network membership configuration by Network ID.
Authorizations:
path Parameters
networkID required | string ID of the network to get. |
Responses
Response samples
- 200
{- "allowDNS": true,
- "allowDefault": true,
- "allowGlobal": true,
- "allowManaged": true,
- "assignedAddresses": [
- "10.147.20.190"
], - "bridge": true,
- "broadcastEnabled": true,
- "dns": {
- "domain": "zt.example.com",
- "servers": [
- "10.147.20.3"
]
}, - "id": "565799d8f620c5c5",
- "mac": "e6:d2:2b:e6:68:73",
- "mtu": 2800,
- "multicastSubscriptions": [
- {
- "adi": 0,
- "mac": "34:34:ff:da:6e:ff"
}
], - "name": "clever_krum",
- "netconfRevision": 123,
- "portDeviceName": "ztnnhrtimp",
- "portError": 0,
- "routes": [
- {
- "flags": 0,
- "metric": 0,
- "target": "10.147.20.0/24",
- "via": "192.168.168.5"
}
], - "status": "OK",
- "type": "PRIVATE"
}
Join a network or update its configuration by Network ID.
Authorizations:
path Parameters
networkID required | string ID of the network to change. |
Request Body schema: application/json
Network membership object
allowDNS | boolean Let ZeroTier modify the system's DNS settings. |
allowDefault | boolean Let ZeroTier modify the system's default route. |
allowGlobal | boolean Let ZeroTier manage IP addresses and route assignments that aren't in private ranges (rfc1918). |
allowManaged | boolean Let ZeroTier manage IP addresses and Route assignments. |
assignedAddresses | Array of strings |
bridge | boolean |
broadcastEnabled | boolean |
object | |
id | string |
mac | string MAC address for this network's interface. |
mtu | integer |
Array of objects | |
name | string |
netconfRevision | integer |
portDeviceName | string |
portError | integer |
Array of objects | |
status | string |
type | string |
Responses
Request samples
- Payload
{- "allowDNS": true,
- "allowDefault": true,
- "allowGlobal": true,
- "allowManaged": true,
- "assignedAddresses": [
- "10.147.20.190"
], - "bridge": true,
- "broadcastEnabled": true,
- "dns": {
- "domain": "zt.example.com",
- "servers": [
- "10.147.20.3"
]
}, - "id": "565799d8f620c5c5",
- "mac": "e6:d2:2b:e6:68:73",
- "mtu": 2800,
- "multicastSubscriptions": [
- {
- "adi": 0,
- "mac": "34:34:ff:da:6e:ff"
}
], - "name": "clever_krum",
- "netconfRevision": 123,
- "portDeviceName": "ztnnhrtimp",
- "portError": 0,
- "routes": [
- {
- "flags": 0,
- "metric": 0,
- "target": "10.147.20.0/24",
- "via": "192.168.168.5"
}
], - "status": "OK",
- "type": "PRIVATE"
}
Response samples
- 200
{- "allowDNS": true,
- "allowDefault": true,
- "allowGlobal": true,
- "allowManaged": true,
- "assignedAddresses": [
- "10.147.20.190"
], - "bridge": true,
- "broadcastEnabled": true,
- "dns": {
- "domain": "zt.example.com",
- "servers": [
- "10.147.20.3"
]
}, - "id": "565799d8f620c5c5",
- "mac": "e6:d2:2b:e6:68:73",
- "mtu": 2800,
- "multicastSubscriptions": [
- {
- "adi": 0,
- "mac": "34:34:ff:da:6e:ff"
}
], - "name": "clever_krum",
- "netconfRevision": 123,
- "portDeviceName": "ztnnhrtimp",
- "portError": 0,
- "routes": [
- {
- "flags": 0,
- "metric": 0,
- "target": "10.147.20.0/24",
- "via": "192.168.168.5"
}
], - "status": "OK",
- "type": "PRIVATE"
}
Response samples
- 200
[- {
- "address": "992fcf1db7",
- "isBonded": false,
- "latency": 40,
- "paths": [
- {
- "active": true,
- "address": "195.181.173.159/9993",
- "expired": false,
- "lastReceive": 1618955164580,
- "lastSend": 1618955164596,
- "preferred": true,
- "trustedPathId": 0
}
], - "role": "LEAF",
- "version": "1.6.4",
- "versionMajor": 1,
- "versionMinor": 6,
- "versionRev": 4
}
]
Get information about a specific peer by Node ID.
Authorizations:
path Parameters
address required | string ZeroTier address of the peer to get |
Responses
Response samples
- 200
{- "address": "992fcf1db7",
- "isBonded": false,
- "latency": 40,
- "paths": [
- {
- "active": true,
- "address": "195.181.173.159/9993",
- "expired": false,
- "lastReceive": 1618955164580,
- "lastSend": 1618955164596,
- "preferred": true,
- "trustedPathId": 0
}
], - "role": "LEAF",
- "version": "1.6.4",
- "versionMajor": 1,
- "versionMinor": 6,
- "versionRev": 4
}
Get Network by ID.
Get details of a network by its ID.
Authorizations:
path Parameters
networkID required | string Example: 3e245e31af7a726a ID of the network. |
Responses
Response samples
- 200
{- "id": "3e245e31af000001",
- "nwid": "3e245e31af000001",
- "objtype": "network",
- "name": "my-cool-network",
- "creationTime": 1623101592,
- "private": true,
- "enableBroadcast": true,
- "v4AssignMode": {
- "zt": true
}, - "v6AssignMode": {
- "6plane": true,
- "rfc4193": true,
- "zt": true
}, - "mtu": 2800,
- "multicastLimit": 32,
- "revision": 1,
- "routes": [
- {
- "target": "192.168.192.0/24",
- "via": "192.168.192.1"
}
], - "ipAssignmentPools": [
- {
- "ipRangeStart": "192.168.192.1",
- "ipRangeEnd": "192.168.192.254"
}
], - "rules": [
- { }
], - "capabilities": [
- { }
], - "tags": [
- { }
], - "remoteTraceTarget": "7f5d90eb87",
- "remoteTraceLevel": 0
}
Create or Update a Network.
Authorizations:
path Parameters
networkID required | string Example: 3e245e31af7a726a ID of the network. |
Request Body schema: application/json
Network object JSON.
name | string |
private | boolean |
enableBroadcast | boolean |
object | |
object | |
mtu | integer |
multicastLimit | integer |
Array of objects | |
Array of objects | |
rules | Array of objects |
capabilities | Array of objects |
tags | Array of objects |
remoteTraceTarget | string |
remoteTraceLevel | integer |
Responses
Request samples
- Payload
{- "name": "my-cool-network",
- "private": true,
- "enableBroadcast": true,
- "v4AssignMode": {
- "zt": true
}, - "v6AssignMode": {
- "6plane": true,
- "rfc4193": true,
- "zt": true
}, - "mtu": 2800,
- "multicastLimit": 32,
- "routes": [
- {
- "target": "192.168.192.0/24",
- "via": "192.168.192.1"
}
], - "ipAssignmentPools": [
- {
- "ipRangeStart": "192.168.192.1",
- "ipRangeEnd": "192.168.192.254"
}
], - "rules": [
- { }
], - "capabilities": [
- { }
], - "tags": [
- { }
], - "remoteTraceTarget": "7f5d90eb87",
- "remoteTraceLevel": 0
}
Response samples
- 200
{- "id": "3e245e31af000001",
- "nwid": "3e245e31af000001",
- "objtype": "network",
- "name": "my-cool-network",
- "creationTime": 1623101592,
- "private": true,
- "enableBroadcast": true,
- "v4AssignMode": {
- "zt": true
}, - "v6AssignMode": {
- "6plane": true,
- "rfc4193": true,
- "zt": true
}, - "mtu": 2800,
- "multicastLimit": 32,
- "revision": 1,
- "routes": [
- {
- "target": "192.168.192.0/24",
- "via": "192.168.192.1"
}
], - "ipAssignmentPools": [
- {
- "ipRangeStart": "192.168.192.1",
- "ipRangeEnd": "192.168.192.254"
}
], - "rules": [
- { }
], - "capabilities": [
- { }
], - "tags": [
- { }
], - "remoteTraceTarget": "7f5d90eb87",
- "remoteTraceLevel": 0
}
Generate Random Network ID.
Create a new network with a random ID.
Authorizations:
path Parameters
controllerID required | string Node ID of the controller. |
Request Body schema: application/json
Network object JSON.
name | string |
private | boolean |
enableBroadcast | boolean |
object | |
object | |
mtu | integer |
multicastLimit | integer |
Array of objects | |
Array of objects | |
rules | Array of objects |
capabilities | Array of objects |
tags | Array of objects |
remoteTraceTarget | string |
remoteTraceLevel | integer |
Responses
Request samples
- Payload
{- "name": "my-cool-network",
- "private": true,
- "enableBroadcast": true,
- "v4AssignMode": {
- "zt": true
}, - "v6AssignMode": {
- "6plane": true,
- "rfc4193": true,
- "zt": true
}, - "mtu": 2800,
- "multicastLimit": 32,
- "routes": [
- {
- "target": "192.168.192.0/24",
- "via": "192.168.192.1"
}
], - "ipAssignmentPools": [
- {
- "ipRangeStart": "192.168.192.1",
- "ipRangeEnd": "192.168.192.254"
}
], - "rules": [
- { }
], - "capabilities": [
- { }
], - "tags": [
- { }
], - "remoteTraceTarget": "7f5d90eb87",
- "remoteTraceLevel": 0
}
Response samples
- 200
{- "id": "3e245e31af000001",
- "nwid": "3e245e31af000001",
- "objtype": "network",
- "name": "my-cool-network",
- "creationTime": 1623101592,
- "private": true,
- "enableBroadcast": true,
- "v4AssignMode": {
- "zt": true
}, - "v6AssignMode": {
- "6plane": true,
- "rfc4193": true,
- "zt": true
}, - "mtu": 2800,
- "multicastLimit": 32,
- "revision": 1,
- "routes": [
- {
- "target": "192.168.192.0/24",
- "via": "192.168.192.1"
}
], - "ipAssignmentPools": [
- {
- "ipRangeStart": "192.168.192.1",
- "ipRangeEnd": "192.168.192.254"
}
], - "rules": [
- { }
], - "capabilities": [
- { }
], - "tags": [
- { }
], - "remoteTraceTarget": "7f5d90eb87",
- "remoteTraceLevel": 0
}
Get Network Member Details by ID.
Authorizations:
path Parameters
networkID required | string ID of the network. |
nodeID required | string ID of the member node. |
Responses
Response samples
- 200
{- "id": "eb8d45c5c9",
- "address": "eb8d45c5c9",
- "nwid": "3e245e31af000001",
- "authorized": true,
- "activeBridge": true,
- "identity": "eb8d45c5c9:0:0279558f1a731cb2f628b3adc9f8915d7c2f3752e07d75f2d75fde08274b9c3a43d8b04115fd30f37043f61758ac874b844cc184fdf51e1022e988c1d093a50d:91a840bcd3fbac910afc56be4222973f675204a0ca9625218352e1c82debaa758b915d948c5fe4bd3c38cf1255904804a5b937f5edaef182ba8d5f3d8a243329",
- "ipAssignments": [
- "10.147.20.190"
], - "revision": 1,
- "vMajor": 1,
- "vMinor": 6,
- "vRev": 5,
- "vProto": 5
}