Download OpenAPI specification:Download
ZeroTier Central Network Management Portal API.
All API requests must have an API token header specified in the Authorization: token xxxxx format. You can generate your API key by logging into ZeroTier Central and creating a token on the Account page.
eg. curl -X GET -H "Authorization: token xxxxx" https://api.zerotier.com/api/v1/network
The ZeroTier Central API implements rate limiting. Paid users are limited to 100 requests per second. Free users are limited to 20 requests per second.
You can get the OpenAPI spec here as well: https://docs.zerotier.com/openapi/central/v1.json
[- {
- "id": "8056c2e21c000001",
- "clock": 12345,
- "config": {
- "id": "8056c2e21c000001",
- "creationTime": 1442292672978,
- "capabilities": [
- { }
], - "dns": {
- "domain": "some.domain",
- "servers": [
- "10.0.0.3"
]
}, - "enableBroadcast": true,
- "ipAssignmentPools": [
- {
- "ipRangeStart": "10.0.0.1",
- "ipRangeEnd": "10.0.0.255"
}
], - "lastModified": 1588184318235,
- "mtu": 2800,
- "multicastLimit": 32,
- "name": "My ZeroTier Network",
- "private": true,
- "routes": [
- {
- "target": "10.0.0.0/24",
- "via": null
}
], - "rules": [
- { }
], - "ssoConfig": {
- "enabled": true,
- "mode": "default",
- "clientId": "some-client-id",
- "provider": "keycloak",
- "authorizationEndpoint": "string",
- "allowList": [
- "string"
]
}, - "tags": [
- { }
], - "v4AssignMode": {
- "zt": true
}, - "v6AssignMode": {
- "6plane": true,
- "rfc4193": false,
- "zt": false
}
}, - "description": "Some descriptive text about my network.",
- "rulesSource": "accept;",
- "permissions": {
- "00000000-0000-0000-0000-000000000000": {
- "a": true,
- "d": true,
- "m": true,
- "r": true
}
}, - "ownerId": "00000000-0000-0000-0000-000000000000",
- "onlineMemberCount": 123,
- "authorizedMemberCount": 200,
- "totalMemberCount": 250,
- "capabilitiesByName": { },
- "tagsByName": { }
}
]empty JSON object
{ }{- "id": "8056c2e21c000001",
- "clock": 12345,
- "config": {
- "id": "8056c2e21c000001",
- "creationTime": 1442292672978,
- "capabilities": [
- { }
], - "dns": {
- "domain": "some.domain",
- "servers": [
- "10.0.0.3"
]
}, - "enableBroadcast": true,
- "ipAssignmentPools": [
- {
- "ipRangeStart": "10.0.0.1",
- "ipRangeEnd": "10.0.0.255"
}
], - "lastModified": 1588184318235,
- "mtu": 2800,
- "multicastLimit": 32,
- "name": "My ZeroTier Network",
- "private": true,
- "routes": [
- {
- "target": "10.0.0.0/24",
- "via": null
}
], - "rules": [
- { }
], - "ssoConfig": {
- "enabled": true,
- "mode": "default",
- "clientId": "some-client-id",
- "provider": "keycloak",
- "authorizationEndpoint": "string",
- "allowList": [
- "string"
]
}, - "tags": [
- { }
], - "v4AssignMode": {
- "zt": true
}, - "v6AssignMode": {
- "6plane": true,
- "rfc4193": false,
- "zt": false
}
}, - "description": "Some descriptive text about my network.",
- "rulesSource": "accept;",
- "permissions": {
- "00000000-0000-0000-0000-000000000000": {
- "a": true,
- "d": true,
- "m": true,
- "r": true
}
}, - "ownerId": "00000000-0000-0000-0000-000000000000",
- "onlineMemberCount": 123,
- "authorizedMemberCount": 200,
- "totalMemberCount": 250,
- "capabilitiesByName": { },
- "tagsByName": { }
}Returns a single network
| networkID required | string ID of the network to return |
{- "id": "8056c2e21c000001",
- "clock": 12345,
- "config": {
- "id": "8056c2e21c000001",
- "creationTime": 1442292672978,
- "capabilities": [
- { }
], - "dns": {
- "domain": "some.domain",
- "servers": [
- "10.0.0.3"
]
}, - "enableBroadcast": true,
- "ipAssignmentPools": [
- {
- "ipRangeStart": "10.0.0.1",
- "ipRangeEnd": "10.0.0.255"
}
], - "lastModified": 1588184318235,
- "mtu": 2800,
- "multicastLimit": 32,
- "name": "My ZeroTier Network",
- "private": true,
- "routes": [
- {
- "target": "10.0.0.0/24",
- "via": null
}
], - "rules": [
- { }
], - "ssoConfig": {
- "enabled": true,
- "mode": "default",
- "clientId": "some-client-id",
- "provider": "keycloak",
- "authorizationEndpoint": "string",
- "allowList": [
- "string"
]
}, - "tags": [
- { }
], - "v4AssignMode": {
- "zt": true
}, - "v6AssignMode": {
- "6plane": true,
- "rfc4193": false,
- "zt": false
}
}, - "description": "Some descriptive text about my network.",
- "rulesSource": "accept;",
- "permissions": {
- "00000000-0000-0000-0000-000000000000": {
- "a": true,
- "d": true,
- "m": true,
- "r": true
}
}, - "ownerId": "00000000-0000-0000-0000-000000000000",
- "onlineMemberCount": 123,
- "authorizedMemberCount": 200,
- "totalMemberCount": 250,
- "capabilitiesByName": { },
- "tagsByName": { }
}| networkID required | string ID of the network to change |
Network object JSON
object (NetworkConfig) | |
| description | string or null |
| rulesSource | string or null The flow rules source code in ZeroTier rule language. Set this field to update network rules. |
object (PermissionsMap) | |
| ownerId | string or null |
| capabilitiesByName | object or null |
| tagsByName | object or null |
{- "config": {
- "capabilities": [
- { }
], - "dns": {
- "domain": "some.domain",
- "servers": [
- "10.0.0.3"
]
}, - "enableBroadcast": true,
- "ipAssignmentPools": [
- {
- "ipRangeStart": "10.0.0.1",
- "ipRangeEnd": "10.0.0.255"
}
], - "mtu": 2800,
- "multicastLimit": 32,
- "name": "My ZeroTier Network",
- "private": true,
- "routes": [
- {
- "target": "10.0.0.0/24",
- "via": null
}
], - "rules": [
- { }
], - "ssoConfig": {
- "enabled": true,
- "mode": "default",
- "clientId": "some-client-id",
- "allowList": [
- "string"
]
}, - "tags": [
- { }
], - "v4AssignMode": {
- "zt": true
}, - "v6AssignMode": {
- "6plane": true,
- "rfc4193": false,
- "zt": false
}
}, - "description": "Some descriptive text about my network.",
- "rulesSource": "accept;",
- "permissions": {
- "00000000-0000-0000-0000-000000000000": {
- "a": true,
- "d": true,
- "m": true,
- "r": true
}
}, - "ownerId": "00000000-0000-0000-0000-000000000000",
- "capabilitiesByName": { },
- "tagsByName": { }
}{- "id": "8056c2e21c000001",
- "clock": 12345,
- "config": {
- "id": "8056c2e21c000001",
- "creationTime": 1442292672978,
- "capabilities": [
- { }
], - "dns": {
- "domain": "some.domain",
- "servers": [
- "10.0.0.3"
]
}, - "enableBroadcast": true,
- "ipAssignmentPools": [
- {
- "ipRangeStart": "10.0.0.1",
- "ipRangeEnd": "10.0.0.255"
}
], - "lastModified": 1588184318235,
- "mtu": 2800,
- "multicastLimit": 32,
- "name": "My ZeroTier Network",
- "private": true,
- "routes": [
- {
- "target": "10.0.0.0/24",
- "via": null
}
], - "rules": [
- { }
], - "ssoConfig": {
- "enabled": true,
- "mode": "default",
- "clientId": "some-client-id",
- "provider": "keycloak",
- "authorizationEndpoint": "string",
- "allowList": [
- "string"
]
}, - "tags": [
- { }
], - "v4AssignMode": {
- "zt": true
}, - "v6AssignMode": {
- "6plane": true,
- "rfc4193": false,
- "zt": false
}
}, - "description": "Some descriptive text about my network.",
- "rulesSource": "accept;",
- "permissions": {
- "00000000-0000-0000-0000-000000000000": {
- "a": true,
- "d": true,
- "m": true,
- "r": true
}
}, - "ownerId": "00000000-0000-0000-0000-000000000000",
- "onlineMemberCount": 123,
- "authorizedMemberCount": 200,
- "totalMemberCount": 250,
- "capabilitiesByName": { },
- "tagsByName": { }
}Assign or update permissions for a specific user on a network. Use this endpoint to grant read, authorize, modify, or delete permissions.
| networkID required | string ID of the network |
User permissions object
| id required | string The user ID to set permissions for |
| r | boolean Default: false Read permission - allows viewing network settings |
| a | boolean Default: false Authorize permission - allows authorizing new members |
| m | boolean Default: false Modify permission - allows changing network settings |
| d | boolean Default: false Delete permission - allows removing members |
{- "id": "00000000-0000-0000-0000-000000000000",
- "r": true,
- "a": true,
- "m": false,
- "d": false
}{- "id": "00000000-0000-0000-0000-000000000000",
- "r": true,
- "a": true,
- "m": false,
- "d": false
}| networkID required | string ID of the network to return |
[- {
- "id": "8056c2e21c000001-abcdef0123",
- "clock": 1612993759070,
- "networkId": "8056c2e21c000001",
- "nodeId": "abcdef01234",
- "controllerId": "8056c2e21c",
- "hidden": false,
- "name": "my-cray-supercomputer",
- "description": "My super awesome cray that I got ZeroTier to run on",
- "config": {
- "activeBridge": false,
- "authorized": true,
- "capabilities": [
- 0
], - "creationTime": 1599853509872,
- "id": "abcdef01234",
- "identity": "abcdef0123:0:abcdef0123abcdef0123abcdef0123abcdef0123abcdef0123abcdef0123abcdef0123",
- "ipAssignments": [
- "10.0.0.3"
], - "lastAuthorizedTime": 1599853637989,
- "lastDeauthorizedTime": 0,
- "noAutoAssignIps": false,
- "revision": 123,
- "ssoExempt": false,
- "tags": [
- [
- 123,
- 456
]
], - "vMajor": 1,
- "vMinor": 6,
- "vRev": 3,
- "vProto": 12
}, - "lastOnline": 1612993673254,
- "lastSeen": 1612993673254,
- "physicalAddress": "8.8.8.8",
- "clientVersion": "1.6.3",
- "protocolVersion": 12,
- "supportsRulesEngine": true
}
]| networkID required | string ID of the network |
| memberID required | string ID of the member |
{- "id": "8056c2e21c000001-abcdef0123",
- "clock": 1612993759070,
- "networkId": "8056c2e21c000001",
- "nodeId": "abcdef01234",
- "controllerId": "8056c2e21c",
- "hidden": false,
- "name": "my-cray-supercomputer",
- "description": "My super awesome cray that I got ZeroTier to run on",
- "config": {
- "activeBridge": false,
- "authorized": true,
- "capabilities": [
- 0
], - "creationTime": 1599853509872,
- "id": "abcdef01234",
- "identity": "abcdef0123:0:abcdef0123abcdef0123abcdef0123abcdef0123abcdef0123abcdef0123abcdef0123",
- "ipAssignments": [
- "10.0.0.3"
], - "lastAuthorizedTime": 1599853637989,
- "lastDeauthorizedTime": 0,
- "noAutoAssignIps": false,
- "revision": 123,
- "ssoExempt": false,
- "tags": [
- [
- 123,
- 456
]
], - "vMajor": 1,
- "vMinor": 6,
- "vRev": 3,
- "vProto": 12
}, - "lastOnline": 1612993673254,
- "lastSeen": 1612993673254,
- "physicalAddress": "8.8.8.8",
- "clientVersion": "1.6.3",
- "protocolVersion": 12,
- "supportsRulesEngine": true
}| networkID required | string ID of the network |
| memberID required | string ID of the member |
Member object JSON
| hidden | boolean or null Whether or not the member is hidden in the UI |
| name | string or null User defined name of the member |
| description | string or null User defined description of the member |
object (MemberConfig) |
{- "hidden": false,
- "name": "my-cray-supercomputer",
- "description": "My super awesome cray that I got ZeroTier to run on",
- "config": {
- "activeBridge": false,
- "authorized": true,
- "capabilities": [
- 0
], - "ipAssignments": [
- "10.0.0.3"
], - "noAutoAssignIps": false,
- "ssoExempt": false,
- "tags": [
- [
- 123,
- 456
]
]
}
}{- "id": "8056c2e21c000001-abcdef0123",
- "clock": 1612993759070,
- "networkId": "8056c2e21c000001",
- "nodeId": "abcdef01234",
- "controllerId": "8056c2e21c",
- "hidden": false,
- "name": "my-cray-supercomputer",
- "description": "My super awesome cray that I got ZeroTier to run on",
- "config": {
- "activeBridge": false,
- "authorized": true,
- "capabilities": [
- 0
], - "creationTime": 1599853509872,
- "id": "abcdef01234",
- "identity": "abcdef0123:0:abcdef0123abcdef0123abcdef0123abcdef0123abcdef0123abcdef0123abcdef0123",
- "ipAssignments": [
- "10.0.0.3"
], - "lastAuthorizedTime": 1599853637989,
- "lastDeauthorizedTime": 0,
- "noAutoAssignIps": false,
- "revision": 123,
- "ssoExempt": false,
- "tags": [
- [
- 123,
- 456
]
], - "vMajor": 1,
- "vMinor": 6,
- "vRev": 3,
- "vProto": 12
}, - "lastOnline": 1612993673254,
- "lastSeen": 1612993673254,
- "physicalAddress": "8.8.8.8",
- "clientVersion": "1.6.3",
- "protocolVersion": 12,
- "supportsRulesEngine": true
}{- "id": "00000000-0000-0000-0000-000000000000",
- "orgId": "00000000-0000-0000-0000-000000000000",
- "globalPermissions": {
- "a": true,
- "d": true,
- "m": true,
- "r": true
}, - "displayName": "Joe User",
- "auth": {
- "google": "156162346876134683",
- "oidc": "00000000-0000-0000-0000-000000000000"
}, - "smsNumber": "+1-800-555-1212",
- "tokens": [
- "my-token-id"
]
}| userID required | string User ID |
User object JSON
| displayName | string Display Name |
| smsNumber | string Deprecated SMS number |
{- "displayName": "Joe User",
- "smsNumber": "+1-800-555-1212"
}{- "id": "00000000-0000-0000-0000-000000000000",
- "orgId": "00000000-0000-0000-0000-000000000000",
- "globalPermissions": {
- "a": true,
- "d": true,
- "m": true,
- "r": true
}, - "displayName": "Joe User",
- "auth": {
- "google": "156162346876134683",
- "oidc": "00000000-0000-0000-0000-000000000000"
}, - "smsNumber": "+1-800-555-1212",
- "tokens": [
- "my-token-id"
]
}| userID required | string User ID |
APIToken JSON object
| tokenName | string user specified token name |
| token | string API Token. Minimum 32 characters. This token is encrypted in the database and can not be retrieved once set |
{- "tokenName": "my-super-secret-token",
- "token": "adsf98ashdkjh3689adsfnj3$ADn"
}{- "tokenName": "my-super-secret-token"
}Organization management. Note: Organizations require a paid account and cannot be created via the API
{- "id": "00000000-0000-0000-0000-000000000000",
- "ownerId": "00000000-0000-0000-0000-000000000000",
- "members": [
- {
- "orgId": "00000000-0000-0000-0000-000000000000",
- "userId": "00000000-0000-0000-0000-000000000000",
- "name": "Joe User",
- "email": "string"
}
], - "ssoConfig": {
- "enabled": true,
- "issuers": [
- {
- "provider": "keycloak",
- "clientId": "oidc-client-id",
}
]
}
}| orgID required | string Organization ID |
{- "id": "00000000-0000-0000-0000-000000000000",
- "ownerId": "00000000-0000-0000-0000-000000000000",
- "members": [
- {
- "orgId": "00000000-0000-0000-0000-000000000000",
- "userId": "00000000-0000-0000-0000-000000000000",
- "name": "Joe User",
- "email": "string"
}
], - "ssoConfig": {
- "enabled": true,
- "issuers": [
- {
- "provider": "keycloak",
- "clientId": "oidc-client-id",
}
]
}
}| orgID required | string Organization ID |
{- "orgId": "00000000-0000-0000-0000-000000000000",
- "userId": "00000000-0000-0000-0000-000000000000",
- "name": "Joe User",
- "email": "string"
}[- {
- "orgId": "00000000-0000-0000-0000-000000000000",
- "id": "00000000-0000-0000-0000-000000000000",
- "creation_time": 1613067920454,
- "status": "pending",
- "update_time": 1613067920454,
- "ownerEmail": "[email protected]"
}
]Organization Invitation JSON object
string Email address of invitee |
{- "email": "[email protected]"
}{- "orgId": "00000000-0000-0000-0000-000000000000",
- "id": "00000000-0000-0000-0000-000000000000",
- "creation_time": 1613067920454,
- "status": "pending",
- "update_time": 1613067920454,
- "ownerEmail": "[email protected]"
}| inviteID required | string Invitation ID |
{- "orgId": "00000000-0000-0000-0000-000000000000",
- "id": "00000000-0000-0000-0000-000000000000",
- "creation_time": 1613067920454,
- "status": "pending",
- "update_time": 1613067920454,
- "ownerEmail": "[email protected]"
}| inviteID required | string Invitation ID |
{- "orgId": "00000000-0000-0000-0000-000000000000",
- "id": "00000000-0000-0000-0000-000000000000",
- "creation_time": 1613067920454,
- "status": "pending",
- "update_time": 1613067920454,
- "ownerEmail": "[email protected]"
}{- "id": "central_status",
- "type": "CentralStatus",
- "clock": 1613067920454,
- "version": "1.6.5",
- "apiVersion": "4",
- "uptime": 1613067920454,
- "user": {
- "id": "00000000-0000-0000-0000-000000000000",
- "orgId": "00000000-0000-0000-0000-000000000000",
- "globalPermissions": {
- "a": true,
- "d": true,
- "m": true,
- "r": true
}, - "displayName": "Joe User",
- "auth": {
- "google": "156162346876134683",
- "oidc": "00000000-0000-0000-0000-000000000000"
}, - "smsNumber": "+1-800-555-1212",
- "tokens": [
- "my-token-id"
]
}, - "readOnlyMode": true,
- "loginMethods": {
- "local": true,
- "google": true,
- "twitter": true,
- "facebook": true,
- "github": true,
- "saml": true,
- "oidc": true
}
}Get a random 32 character. Used by the web UI to generate API keys
{- "clock": 1613067920454,
- "hex": "16924f3ff478526cffb1b89b1040b33c8dbd3c09e07f39691f615769121c0d76",
- "token": "wwrb66uUh18Fqc38rd8jMd5RFJzRsCn4"
}