Juniper Mist AI Admins API

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)

OpenAPI Specification

mist-ai-admins-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  contact:
    email: tmunzer@juniper.net
    name: Thomas Munzer
  description: '> Version: **2604.1.1**

    >

    > Date: **May 13, 2026**

    <div class="notification"> NOTE:<br>Some important API changes will be introduced. Please make sure to read the <a href="https://www.juniper.net/documentation/us/en/software/mist/api/http/guides/important-api-changes">announcements</a> </div>


    ---

    ## 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&lt;script src='https://www.google.com/recaptcha/api.js' &gt;&lt;/script&gt;\n\nand this &lt;div&gt; in the desired place\n```html\n<div class=\"g-recaptcha\" data_sitekey=\"6LdAewsTAAAAAE25XKQhPEQ2FiMTft-WrZXQ5NUd\"></div>\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&lt;script src='https://js.hcaptcha.com/1/api.js' async defer &gt;&lt;/script&gt;\n\nand this &lt;div&gt; in the desired place\n```html\n<div class=\"h-recaptcha\" data_sitekey=\"6LdAewsTAAAAAE25XKQhPEQ2FiMTft-WrZXQ5NUd\"></div>\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