openapi: 3.1.0
info:
contact:
email: tmunzer@juniper.net
name: Thomas Munzer
description: '> Version: **2604.1.1**
>
> Date: **May 13, 2026**
NOTE:
Some important API changes will be introduced. Please make sure to read the
announcements
---
## Additional Documentation
* [Mist Automation Guide](https://www.juniper.net/documentation/us/en/software/mist/automation-integration/index.html)
* [Mist Location SDK](https://www.juniper.net/documentation/us/en/software/mist/location-services/topics/concept/mist-how-get-mist-sdk.html)
* [Mist Product Updates](https://www.juniper.net/documentation/us/en/software/mist/product-updates/)
## Helpful Resources
* [API Sandbox and Exercises](https://api-class.mist.com/)
* [Postman Collection, Runners and Webhook Samples](https://www.postman.com/juniper-mist/workspace/mist-systems-s-public-workspace)
* [Python Script Examples](https://github.com/tmunzer/mist_library)
* [API Demo Apps](https://apps.mist-lab.fr/)
* [Juniper Blog](https://blogs.juniper.net/)
## Mist Web Browser Extension:
* Google Chrome, Microsoft Edge and other Chromium-based browser: [Chrome Web Store](https://chromewebstore.google.com/detail/mist-extension/ejhpdcljeamillfhdihkkmoakanpbplh)
* Firefox: [Firefox Add-ons](https://addons.mozilla.org/en-US/firefox/addon/mist-extension/)
---'
license:
name: MIT
url: https://raw.githubusercontent.com/tmunzer/Mist-OAS3.0/main/LICENSE
title: Mist Admins API
version: 2604.1.1
x-logo:
altText: Juniper-MistAI
backgroundColor: '#FFFFFF'
url: https://www.mist.com/wp-content/uploads/logo.png
servers:
- description: Mist Global 01
url: https://api.mist.com
- description: Mist Global 02
url: https://api.gc1.mist.com
- description: Mist Global 03
url: https://api.ac2.mist.com
- description: Mist Global 04
url: https://api.gc2.mist.com
- description: Mist Global 05
url: https://api.gc4.mist.com
- description: Mist EMEA 01
url: https://api.eu.mist.com
- description: Mist EMEA 02
url: https://api.gc3.mist.com
- description: Mist EMEA 03
url: https://api.ac6.mist.com
- description: Mist EMEA 04
url: https://api.gc6.mist.com
- description: Mist APAC 01
url: https://api.ac5.mist.com
- description: Mist APAC 02
url: https://api.gc5.mist.com
- description: Mist APAC 03
url: https://api.gc7.mist.com
security:
- apiToken: []
- basicAuth: []
- basicAuth: []
csrfToken: []
tags:
- description: 'Admin API calls can be used to create, manage or authenticate Mist administrators.
To register administrators into an existing MSP account or Organization, please check: * [Invite Msp Admin](/#operations/inviteMspAdmin) * [Invite Org Admin](/#operations/inviteOrgAdmin)'
name: Admins
paths:
/api/v1/invite/verify/{token}:
parameters:
- $ref: '#/components/parameters/token'
post:
description: '**Note**: another call to ```GET /api/v1/self``` is required to see the new set of privileges'
operationId: verifyAdminInvite
responses:
'200':
$ref: '#/components/responses/OK'
'400':
$ref: '#/components/responses/HTTP400'
'401':
$ref: '#/components/responses/HTTP401'
'403':
$ref: '#/components/responses/HTTP403'
'404':
$ref: '#/components/responses/InviteVerifyNotFound'
'429':
$ref: '#/components/responses/HTTP429'
summary: verifyAdminInvite
tags:
- Admins
/api/v1/register:
post:
description: "Register a new admin and his/her org\nAn email will also be sent to the user with a link to `/verify/register?token={token}`\n\n### reCAPTCHA\nGoogle reCAPTCHA is the choice to prevent bot registration\n\nIt needs this \n\n<script src='https://www.google.com/recaptcha/api.js' ></script>\n\nand this <div> in the desired place\n```html\n\n```\n\nUse GET /api/v1/register/recaptcha to read the current setting.\nResponse example:\n```json\n{ \n \"flavor\": \"google\",\n \"required\": true, \n \"sitekey\": \"6LdAewsTAAAAAE25XKQhPEQ2FiMTft-WrZXQ5NUd\"\n}\n```\n\n### hCaptcha\nAlternative to reCAPTCHA is hCaptcha to prevent bot registration\n\nIt needs this script\n\n<script src='https://js.hcaptcha.com/1/api.js' async defer ></script>\n\nand this <div> in the desired place\n```html\n\n```\n\nUse GET /api/v1/register/recaptcha?recaptcha_flavor=hcaptcha to read the current setting for hcaptcha with reply.\nResponse example:\n```json\n{\n \"flavor\": \"hcaptcha\",\n \"required\": true,\n \"sitekey\": \"6LdAewsTAAAAAE25XKQhPEQ2FiMTft-WrZXQ5NUd\"\n}\"\n```"
operationId: registerNewAdmin
requestBody:
content:
application/json:
examples:
Example:
value:
account_only: false
allow_mist: false
city: Cupertino
country: United States
email: test@mistsys.com
first_name: John
invite_code: MISTROCKS
last_name: Smith
org_name: Smith LLC
password: foryoureyesonly
recaptcha: string
recaptcha_flavor: hcaptcha
referer_invite_token: Dm2gtT8dwMeM4Bc2E8FLIaA96VHOjPat
return_to: https://mist.zendesk.com/hc/quickstart.pdf
state: California
street_address: 1601 S De Anza Blvd Ste 248
street_address 2: 1601 S De Anza Blvd Ste 248
zipcode: '95014'
schema:
$ref: '#/components/schemas/admin_invite'
description: Request Body
responses:
'200':
$ref: '#/components/responses/OK'
'400':
$ref: '#/components/responses/HTTP400'
'401':
$ref: '#/components/responses/HTTP401'
'403':
$ref: '#/components/responses/HTTP403'
'404':
$ref: '#/components/responses/HTTP404'
'429':
$ref: '#/components/responses/HTTP429'
summary: registerNewAdmin
tags:
- Admins
/api/v1/register/recaptcha:
get:
description: Get Registration Information
operationId: getAdminRegistrationInfo
parameters:
- in: query
name: recaptcha_flavor
schema:
$ref: '#/components/schemas/recaptcha_flavor'
responses:
'200':
$ref: '#/components/responses/Recaptcha'
'400':
$ref: '#/components/responses/HTTP400'
'401':
$ref: '#/components/responses/HTTP401'
'403':
$ref: '#/components/responses/HTTP403'
'404':
$ref: '#/components/responses/HTTP404'
'429':
$ref: '#/components/responses/HTTP429'
summary: getAdminRegistrationInfo
tags:
- Admins
/api/v1/register/verify/{token}:
parameters:
- $ref: '#/components/parameters/token'
post:
description: Verify registration
operationId: verifyRegistration
responses:
'200':
$ref: '#/components/responses/VerifyRegisterTokenSuccess'
'400':
$ref: '#/components/responses/VerifyRegisterTokenAlreadyRegistered'
'401':
$ref: '#/components/responses/HTTP401'
'403':
$ref: '#/components/responses/HTTP403'
'404':
$ref: '#/components/responses/VerifyRegisterTokenInvalid'
'429':
$ref: '#/components/responses/HTTP429'
summary: verifyRegistration
tags:
- Admins
components:
examples:
InviteVerifyNotFoundInviteCreatedBySelf:
value:
detail: invite created by self
RecaptchaGoogle:
value:
flavor: google
required: true
sitekey: 6LdAewsTAAAAAE25XKQhPEQ2FiMTft-WrZXQ5NUd
VerifyRegisterTokenAlreadyRegisteredVerificationExpired:
value:
detail: expired
HTTP400Example:
value:
detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)'
HTTP403Example:
value:
detail: You do not have permission to perform this action.
HTTP429Example:
value:
detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold
InviteVerifyNotFoundInvalidSecret:
value:
detail: invalid secret
HTTP401Example:
value:
detail: Authentication credentials were not provided.
VerifyRegisterTokenSuccesssuccessbutfailedtoapplytheinvitationautomatically:
value:
detail: password policy not met
invite_not_applied: true
min_length: 8
VerifyRegisterTokenAlreadyRegisteredAlreadyRegistered:
value:
detail: already registered
VerifyRegisterTokenInvalidNotFound:
value:
detail: Not found.
VerifyRegisterTokenSuccessSuccess:
value:
return_to: https://mist.zendesk.com/hc/quickstart.pdf
RecaptchaHcaptcha:
value:
flavor: hcaptcha
required: true
sitekey: 6LdAewsTAAAAAE25XKQhPEQ2FiMTft-WrZXQ5NUd
schemas:
response_http403:
additionalProperties: false
properties:
detail:
examples:
- You do not have permission to perform this action.
type: string
type: object
response_http404:
additionalProperties: false
properties:
id:
type: string
type: object
response_detail_string:
additionalProperties: false
properties:
detail:
type: string
type: object
recaptcha:
additionalProperties: false
properties:
flavor:
$ref: '#/components/schemas/recaptcha_flavor'
required:
type: boolean
sitekey:
type: string
type: object
admin_invite:
properties:
account_only:
default: false
description: Skip creating initial setup if true
type: boolean
allow_mist:
default: false
description: Whether to allow Mist to look at this org
type: boolean
city:
description: City of registering user
examples:
- Cupertino
type: string
country:
description: Country/region name or ISO code of registering user
examples:
- United States
type: string
email:
examples:
- test@mistsys.com
maxLength: 64
type: string
first_name:
examples:
- John
type: string
invite_code:
description: Required initially
examples:
- MISTROCKS
type: string
last_name:
examples:
- Smith
type: string
org_name:
examples:
- Smith LLC
type: string
password:
examples:
- foryoureyesonly
format: password
type: string
recaptcha:
description: reCAPTCHA , see https://www.google.com/recaptcha/
type: string
recaptcha_flavor:
$ref: '#/components/schemas/recaptcha_flavor'
referer_invite_token:
description: Invite token to apply after account creation
examples:
- Dm2gtT8dwMeM4Bc2E8FLIaA96VHOjPat
type: string
return_to:
description: URL the user should be redirected back to
examples:
- https://mist.zendesk.com/hc/quickstart.pdf
type: string
state:
description: State name or ISO code of registering user, optional (depends on country/region)
examples:
- CA
type: string
street_address:
description: Street address of registering user
examples:
- 1601 S De Anza Blvd Ste 248
type: string
street_address 2:
description: Street address 2 of registering user
examples:
- 1601 S De Anza Blvd Ste 248
type: string
zipcode:
description: zipcode of registering user
examples:
- '95014'
type: string
required:
- email
- first_name
- last_name
- org_name
- password
- recaptcha
type: object
response_http400:
additionalProperties: false
properties:
detail:
examples:
- 'JSON parse error - Expecting value: line 5 column 8 (char 56)'
type: string
type: object
response_http429:
additionalProperties: false
properties:
detail:
examples:
- Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold
type: string
type: object
response_verify_token_success:
additionalProperties: false
properties:
detail:
type: string
invite_not_applied:
type: boolean
min_length:
type: integer
return_to:
type: string
type: object
response_http401:
additionalProperties: false
properties:
detail:
examples:
- Authentication credentials were not provided.
type: string
type: object
recaptcha_flavor:
default: google
description: 'flavor of the captcha. enum: `google`, `hcaptcha`'
enum:
- google
- hcaptcha
examples:
- hcaptcha
type: string
responses:
HTTP404:
content:
application/json:
schema:
$ref: '#/components/schemas/response_http404'
application/vnd.api+json:
schema:
$ref: '#/components/schemas/response_http404'
description: Not found. The API endpoint doesn’t exist or resource doesn’ t exist
HTTP429:
content:
application/json:
examples:
Example:
$ref: '#/components/examples/HTTP429Example'
schema:
$ref: '#/components/schemas/response_http429'
application/vnd.api+json:
examples:
Example:
$ref: '#/components/examples/HTTP429Example'
schema:
$ref: '#/components/schemas/response_http429'
description: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold
VerifyRegisterTokenAlreadyRegistered:
content:
application/json:
examples:
Already Registered:
$ref: '#/components/examples/VerifyRegisterTokenAlreadyRegisteredAlreadyRegistered'
Verification Expired:
$ref: '#/components/examples/VerifyRegisterTokenAlreadyRegisteredVerificationExpired'
schema:
$ref: '#/components/schemas/response_detail_string'
application/vnd.api+json:
examples:
Already Registered:
$ref: '#/components/examples/VerifyRegisterTokenAlreadyRegisteredAlreadyRegistered'
Verification Expired:
$ref: '#/components/examples/VerifyRegisterTokenAlreadyRegisteredVerificationExpired'
schema:
$ref: '#/components/schemas/response_detail_string'
description: Response if verification expired or already registered
HTTP403:
content:
application/json:
examples:
Example:
$ref: '#/components/examples/HTTP403Example'
schema:
$ref: '#/components/schemas/response_http403'
application/vnd.api+json:
examples:
Example:
$ref: '#/components/examples/HTTP403Example'
schema:
$ref: '#/components/schemas/response_http403'
description: Permission Denied
Recaptcha:
content:
application/json:
examples:
Google:
$ref: '#/components/examples/RecaptchaGoogle'
Hcaptcha:
$ref: '#/components/examples/RecaptchaHcaptcha'
schema:
$ref: '#/components/schemas/recaptcha'
application/vnd.api+json:
examples:
Google:
$ref: '#/components/examples/RecaptchaGoogle'
Hcaptcha:
$ref: '#/components/examples/RecaptchaHcaptcha'
schema:
$ref: '#/components/schemas/recaptcha'
description: Example response
VerifyRegisterTokenInvalid:
content:
application/json:
examples:
Not Found:
$ref: '#/components/examples/VerifyRegisterTokenInvalidNotFound'
schema:
$ref: '#/components/schemas/response_detail_string'
application/vnd.api+json:
examples:
Not Found:
$ref: '#/components/examples/VerifyRegisterTokenInvalidNotFound'
schema:
$ref: '#/components/schemas/response_detail_string'
description: Response if secret is invalid
HTTP400:
content:
application/json:
examples:
Example:
$ref: '#/components/examples/HTTP400Example'
schema:
$ref: '#/components/schemas/response_http400'
application/vnd.api+json:
examples:
Example:
$ref: '#/components/examples/HTTP400Example'
schema:
$ref: '#/components/schemas/response_http400'
description: Bad Syntax
OK:
description: OK
InviteVerifyNotFound:
content:
application/json:
examples:
Invalid Secret:
$ref: '#/components/examples/InviteVerifyNotFoundInvalidSecret'
Invite Created By Self:
$ref: '#/components/examples/InviteVerifyNotFoundInviteCreatedBySelf'
schema:
$ref: '#/components/schemas/response_detail_string'
application/vnd.api+json:
examples:
Invalid Secret:
$ref: '#/components/examples/InviteVerifyNotFoundInvalidSecret'
Invite Created By Self:
$ref: '#/components/examples/InviteVerifyNotFoundInviteCreatedBySelf'
schema:
$ref: '#/components/schemas/response_detail_string'
description: Not Found
HTTP401:
content:
application/json:
examples:
Example:
$ref: '#/components/examples/HTTP401Example'
schema:
$ref: '#/components/schemas/response_http401'
application/vnd.api+json:
examples:
Example:
$ref: '#/components/examples/HTTP401Example'
schema:
$ref: '#/components/schemas/response_http401'
description: Unauthorized
VerifyRegisterTokenSuccess:
content:
application/json:
examples:
Success:
$ref: '#/components/examples/VerifyRegisterTokenSuccessSuccess'
success-but-failed-to-apply_the-invitation-automatically:
$ref: '#/components/examples/VerifyRegisterTokenSuccesssuccessbutfailedtoapplytheinvitationautomatically'
schema:
$ref: '#/components/schemas/response_verify_token_success'
application/vnd.api+json:
examples:
Success:
$ref: '#/components/examples/VerifyRegisterTokenSuccessSuccess'
success-but-failed-to-apply_the-invitation-automatically:
$ref: '#/components/examples/VerifyRegisterTokenSuccesssuccessbutfailedtoapplytheinvitationautomatically'
schema:
$ref: '#/components/schemas/response_verify_token_success'
description: OK
headers:
Set-Cookie:
schema:
examples:
- csrftoken=vwvBuq9qkqaKh7lu8tNc0gkvBfEaLAmx; expires=Tue, 15-Mar-2016 19:47:20 GMT; Max-Age=31449600; Path=/
type: string
parameters:
token:
in: path
name: token
required: true
schema:
type: string
securitySchemes:
apiToken:
description: "Like many other API providers, it’s also possible to generate API Tokens to be used (in HTTP Header) for authentication. An API token ties to a Admin with equal or less privileges.\n\n**Format**:\n API Token value format is `Token {apitoken}`\n\n**Notes**:\n* an API token generated for a specific admin has the same privilege as the user\n* an API token will be automatically removed if not used for > 90 days\n* SSO admins cannot generate these API tokens. Refer Org level API tokens which can have privileges of a specific Org/Site for more information."
in: header
name: Authorization
type: apiKey
basicAuth:
description: While our current UI uses Session / Cookie-based authentication, it’s also possible to do Basic Auth.
scheme: basic
type: http
csrfToken:
description: "This protects the website against [Cross Site Request Forgery](https://en.wikipedia.org/wiki/Cross-site_request_forgery), all the POST / PUT / DELETE APIs needs to have CSRF token in the AJAX Request header when using Login/Password authentication (with or without MFA)\n\n\nThe CSRF Token is sent back by Mist in the Cookies from the Login Response API Call:\n`cookies[csrftoken]` \n\nThe CSRF Token must be added in the HTTP Request Headers:\n```\nX-CSRFToken: vwvBuq9qkqaKh7lu8tNc0gkvBfEaLAmx\n```"
in: header
name: X-CSRFToken
type: apiKey