ZeroTier organizations API
Organization management. Note: Organizations require a paid account and cannot be created via the API
Organization management. Note: Organizations require a paid account and cannot be created via the API
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/zerotier-organizations-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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