ZeroTier organizations API

Organization management. Note: Organizations require a paid account and cannot be created via the API

Operations 8

GET /org Get the current user's organization #
GET /org/{orgID} Get organization by ID #
GET /org/{orgID}/user Get list of organization members #
GET /org-invitation Get list of organization invitations #
POST /org-invitation Invite a user to your organization by email #
GET /org-invitation/{inviteID} Get organization invitation #
POST /org-invitation/{inviteID} Accept organization invitation #
DELETE /org-invitation/{inviteID} Decline organization invitation #

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-organizations-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 email required.

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

OpenAPI Specification

zerotier-organizations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'ZeroTier Central Network Management Portal API.<p>All API requests must have an API token header specified in the <code>Authorization: token xxxxx</code> format.  You can generate your API key by logging into <a href="https://my.zerotier.com">ZeroTier Central</a> and creating a token on the Account page.</p><p>eg. <code>curl -X GET -H "Authorization: token xxxxx" https://api.zerotier.com/api/v1/network</code></p><p><h3>Rate Limiting</h3></p><p>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.</p> <p> You can get the OpenAPI spec here as well: <code>https://docs.zerotier.com/api/central/ref-v1.json</code></p>'
  version: v1
  title: ZeroTier Central controller Organizations API
  contact:
    name: ZeroTier Support Discussion Forum
    url: https://discuss.zerotier.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://api.zerotier.com/api/v1
  description: Production Server
security:
- tokenAuth: []
tags:
- name: organizations
  description: 'Organization management. Note: Organizations require a paid account and cannot be created via the API'
paths:
  /org:
    get:
      tags:
      - organizations
      operationId: getOrganization
      summary: Get the current user's organization
      responses:
        '200':
          description: Get my organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/AccessDeniedError'
        '404':
          $ref: '#/components/responses/NotFound'
  /org/{orgID}:
    get:
      tags:
      - organizations
      operationId: getOrganizationByID
      summary: Get organization by ID
      parameters:
      - name: orgID
        description: Organization ID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/AccessDeniedError'
        '404':
          $ref: '#/components/responses/NotFound'
  /org/{orgID}/user:
    get:
      tags:
      - organizations
      operationId: getOrganizationMembers
      summary: Get list of organization members
      parameters:
      - name: orgID
        description: Organization ID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Get organization members success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationMember'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/AccessDeniedError'
        '404':
          $ref: '#/components/responses/NotFound'
  /org-invitation:
    get:
      tags:
      - organizations
      operationId: getOrganizationInvitationList
      summary: Get list of organization invitations
      responses:
        '200':
          description: Get list of invitations
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OrganizationInvitation'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/AccessDeniedError'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      tags:
      - organizations
      operationId: inviteUserByEmail
      summary: Invite a user to your organization by email
      requestBody:
        description: Organization Invitation JSON object
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationInvitation'
      responses:
        '200':
          description: User invited to organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationInvitation'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/AccessDeniedError'
        '404':
          $ref: '#/components/responses/NotFound'
  /org-invitation/{inviteID}:
    get:
      tags:
      - organizations
      operationId: getInvitationByID
      summary: Get organization invitation
      parameters:
      - name: inviteID
        description: Invitation ID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Get organization invitation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationInvitation'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/AccessDeniedError'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      tags:
      - organizations
      operationId: acceptInvitation
      summary: Accept organization invitation
      parameters:
      - name: inviteID
        description: Invitation ID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Organization invitation accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationInvitation'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/AccessDeniedError'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
      - organizations
      operationId: declineInvitation
      summary: Decline organization invitation
      parameters:
      - name: inviteID
        description: Invitation ID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: organization invitation declined
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/AccessDeniedError'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    NotFound:
      description: Item not found
    UnauthorizedError:
      description: Authorization required
    AccessDeniedError:
      description: Access denied
  schemas:
    InviteStatus:
      type: string
      enum:
      - pending
      - accepted
      - canceled
    OrgSsoConfig:
      type: object
      properties:
        enabled:
          type: boolean
          example: true
          description: Enabled flag for SSO
        issuers:
          type: array
          items:
            $ref: '#/components/schemas/SsoIssuer'
            description: list of configured OIDC issuers
    SsoIssuer:
      type: object
      properties:
        provider:
          type: string
          example: keycloak
          description: 'OIDC Provider (one of: default, authelia, auth0, azure, keycloak, okta, onelogin)'
        clientId:
          type: string
          example: oidc-client-id
          description: OIDC Client ID
        issuer:
          type: string
          example: https://example.com/oidc/auth
          description: OIDC Issuer URL
        authorization_endpoint:
          type: string
          example: https://example.com/oidc/auth/endpoint
          description: authorization endpoint
          readOnly: true
    Organization:
      type: object
      properties:
        id:
          type: string
          example: 00000000-0000-0000-0000-000000000000
          description: Organization ID
        ownerId:
          type: string
          description: User ID of the organization owner
          example: 00000000-0000-0000-0000-000000000000
          readOnly: true
        ownerEmail:
          type: string
          description: Organization owner's email address
          example: user@example.com
          readOnly: true
        members:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationMember'
          description: List of organization members
        ssoConfig:
          type: object
          $ref: '#/components/schemas/OrgSsoConfig'
          description: Organization wide SSO configuration
    OrganizationMember:
      type: object
      properties:
        orgId:
          type: string
          readOnly: true
          description: Organization ID
          example: 00000000-0000-0000-0000-000000000000
        userId:
          type: string
          readOnly: false
          description: User ID
          example: 00000000-0000-0000-0000-000000000000
        name:
          type:
          - string
          - 'null'
          readOnly: true
          description: Organization member display name
          example: Joe User
        email:
          type:
          - string
          - 'null'
          readOnly: true
          description: Organization member email address
    OrganizationInvitation:
      type: object
      properties:
        orgId:
          type: string
          description: Organization ID
          example: 00000000-0000-0000-0000-000000000000
          readOnly: true
        email:
          type: string
          description: Email address of invitee
          example: joe@user.com
        id:
          type: string
          description: Invitation ID
          example: 00000000-0000-0000-0000-000000000000
          readOnly: true
        creation_time:
          type: integer
          format: int64
          description: Creation time of the invite
          example: 1613067920454
          readOnly: true
        status:
          readOnly: true
          description: Invitation status
          example: pending
          allOf:
          - $ref: '#/components/schemas/InviteStatus'
        update_time:
          type: integer
          format: int64
          description: Last updated time of the invitation
          example: 1613067920454
          readOnly: true
        ownerEmail:
          type: string
          description: Organization owner email address
          example: user@example.com
          readOnly: true
  securitySchemes:
    tokenAuth:
      type: http
      scheme: token