ZeroTier Controller API

The controller API from ZeroTier — 6 operation(s) for controller.

Business capability
IT Infrastructure Management BC-600.50

Operations 7

GET /controller Get Controller Status #
GET /controller/network List Networks #
GET /controller/network/{networkID} Get Network by ID #
POST /controller/network/{networkID} Create or Update a Network #
POST /controller/network/{controllerID} Generate Random Network ID #
GET /controller/network/{networkID}/member List Network Members #
GET /controller/network/{networkID}/member/{nodeID} Get Network Member Details by ID #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/zerotier-controller-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

zerotier-controller-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ZeroTierOne Service Controller API
  version: 0.1.0
  description: This API controls the ZeroTier service that runs in the background on your computer.
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: http://localhost:9993
  description: Production Server
security:
- ApiKeyAuth: []
tags:
- name: Controller
paths:
  /controller:
    get:
      tags:
      - Controller
      summary: Get Controller Status
      operationId: getControllerStatus
      description: Check for controller function and return controller status.
      responses:
        '200':
          description: Status object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ControllerStatus'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /controller/network:
    get:
      tags:
      - Controller
      summary: List Networks
      operationId: getControllerNetworks
      description: List IDs of all networks hosted by this controller.
      responses:
        '200':
          description: List of network IDs.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  example: 3e245e31af7a726a
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /controller/network/{networkID}:
    get:
      tags:
      - Controller
      summary: Get Network by ID
      description: Get details of a network by its ID.
      operationId: getControllerNetwork
      parameters:
      - name: networkID
        description: ID of the network.
        in: path
        required: true
        schema:
          type: string
          example: 3e245e31af7a726a
      responses:
        '200':
          description: Network Details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ControllerNetwork'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
    post:
      tags:
      - Controller
      summary: Create or Update a Network
      operationId: setControllerNetwork
      parameters:
      - name: networkID
        description: ID of the network.
        in: path
        required: true
        schema:
          type: string
          example: 3e245e31af7a726a
      requestBody:
        description: Network object JSON.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ControllerNetwork'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ControllerNetwork'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /controller/network/{controllerID}:
    post:
      tags:
      - Controller
      summary: Generate Random Network ID
      operationId: generateControllerNetwork
      description: Create a new network with a random ID.
      parameters:
      - name: controllerID
        description: Node ID of the controller.
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: Network object JSON.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ControllerNetwork'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ControllerNetwork'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /controller/network/{networkID}/member:
    get:
      tags:
      - Controller
      summary: List Network Members
      operationId: getControllerNetworkMembers
      description: JSON object containing all member IDs as keys and their memberRevisionCounter values as values.
      parameters:
      - name: networkID
        description: ID of the network.
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: integer
                example:
                  03d516a9df: 5
                  b9d5ad8e13: 1
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /controller/network/{networkID}/member/{nodeID}:
    get:
      tags:
      - Controller
      summary: Get Network Member Details by ID
      operationId: getControllerNetworkMember
      parameters:
      - name: networkID
        description: ID of the network.
        in: path
        required: true
        schema:
          type: string
      - name: nodeID
        description: ID of the member node.
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ControllerNetworkMember'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
components:
  schemas:
    ControllerNetworkMember:
      type: object
      properties:
        id:
          type: string
          readOnly: true
          example: eb8d45c5c9
        address:
          type: string
          readOnly: true
          example: eb8d45c5c9
        nwid:
          type: string
          readOnly: true
          example: 3e245e31af000001
        authorized:
          type: boolean
        activeBridge:
          type: boolean
        identity:
          type: string
          readOnly: true
          example: eb8d45c5c9:0:0279558f1a731cb2f628b3adc9f8915d7c2f3752e07d75f2d75fde08274b9c3a43d8b04115fd30f37043f61758ac874b844cc184fdf51e1022e988c1d093a50d:91a840bcd3fbac910afc56be4222973f675204a0ca9625218352e1c82debaa758b915d948c5fe4bd3c38cf1255904804a5b937f5edaef182ba8d5f3d8a243329
        ipAssignments:
          type: array
          items:
            type: string
            example: 10.147.20.190
        revision:
          type: integer
          readOnly: true
          example: 1
        vMajor:
          type: integer
          readOnly: true
          example: 1
        vMinor:
          type: integer
          readOnly: true
          example: 6
        vRev:
          type: integer
          readOnly: true
          example: 5
        vProto:
          type: integer
          readOnly: true
          example: 5
    ControllerStatus:
      type: object
      properties:
        controller:
          type: boolean
          readOnly: true
        apiVersion:
          type: integer
          example: 3
          readOnly: true
        clock:
          type: integer
          format: int64
          example: 1623101592
          readOnly: true
    ControllerNetwork:
      type: object
      properties:
        id:
          type: string
          readOnly: true
          example: 3e245e31af000001
        nwid:
          type: string
          readOnly: true
          example: 3e245e31af000001
        objtype:
          type: string
          example: network
          readOnly: true
        name:
          type: string
          example: my-cool-network
        creationTime:
          type: number
          example: 1623101592
          readOnly: true
        private:
          type: boolean
        enableBroadcast:
          type: boolean
        v4AssignMode:
          type: object
          properties:
            zt:
              type: boolean
        v6AssignMode:
          type: object
          properties:
            6plane:
              type: boolean
            rfc4193:
              type: boolean
            zt:
              type: boolean
        mtu:
          type: integer
          example: 2800
        multicastLimit:
          type: integer
          example: 32
        revision:
          type: integer
          example: 1
          readOnly: true
        routes:
          type: array
          items:
            type: object
            properties:
              target:
                type: string
                example: 192.168.192.0/24
              via:
                type:
                - string
                - 'null'
                example: 192.168.192.1
        ipAssignmentPools:
          type: array
          items:
            type: object
            properties:
              ipRangeStart:
                type: string
                example: 192.168.192.1
              ipRangeEnd:
                type: string
                example: 192.168.192.254
        rules:
          type: array
          items:
            type: object
        capabilities:
          type: array
          items:
            type: object
        tags:
          type: array
          items:
            type: object
        remoteTraceTarget:
          type: string
          example: 7f5d90eb87
        remoteTraceLevel:
          type: integer
  responses:
    UnauthorizedError:
      description: Authorization required.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-ZT1-Auth