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 Sites Spectrum Analysis 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: The Spectrum Analysis feature provides insights into the radio frequency environment, helping to identify interference and optimize wireless network performance. It allows users to monitor and analyze the spectrum usage in their vicinity.
name: Sites Spectrum Analysis
paths:
/api/v1/sites/{site_id}/analyze_spectrum:
parameters:
- $ref: '#/components/parameters/site_id'
get:
description: Get the running spectrum analysis for a site
operationId: getSiteRunningSpectrumAnalysis
responses:
'200':
$ref: '#/components/responses/RunningSpectrumAnalysis'
'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: getSiteRunningSpectrumAnalysis
tags:
- Sites Spectrum Analysis
post:
description: "Initiate a spectrum analysis for a site\n\n\nThe output will be available through websocket. As there can be multiple command\nissued against the same device at the same time and the output all goes through\nthe same websocket stream, session is introduced for demux.\n\n\n\n#### Subscribe to Device Command outputs\n\n`WS /api-ws/v1/stream`\n\n\n```json { \"subscribe\": \"/sites/{site_id}/analyze_spectrum\" } ```\n\n#### Example output from ws stream\n\n```json\n{\n \"event\": \"data\",\n \"channel\": \"/sites/4ac1dcf4-9d8b-7211-65c4-057819f0862b/analyze_spectrum\",\n \"data\": {\n \"session\": \"session_id\",\n\n \"fft_samples\": [\n {\n \"frequency\": 2437.0,\n \"rssi / signal ?\": -93\n },\n ...\n ],\n\n \"channel_usage\": [\n {\n \"channel\": 36,\n \"noise\": -78,\n\n \"wifi\": 0.13,\n \"non_wifi\": 0.08\n },\n ...\n ]\n }\n} \n```\n"
operationId: initiateSiteAnalyzeSpectrum
requestBody:
content:
application/json:
examples:
Example:
value:
band: '5'
device_id: 00000000-0000-0000-1000-5c5b35bd76bb
duration: 600
format: stream
schema:
$ref: '#/components/schemas/spectrum_analysis'
description: Request Body
responses:
'200':
$ref: '#/components/responses/WebsocketSession'
'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: initiateSiteAnalyzeSpectrum
tags:
- Sites Spectrum Analysis
/api/v1/sites/{site_id}/stats/analyze_spectrum:
parameters:
- $ref: '#/components/parameters/site_id'
get:
description: List the past spectrum analysis for a site
operationId: listSiteSpectrumAnalysis
parameters:
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/end'
- $ref: '#/components/parameters/duration'
responses:
'200':
$ref: '#/components/responses/PastSpectrumAnalysis'
'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: listSiteSpectrumAnalysis
tags:
- Sites Spectrum Analysis
components:
schemas:
response_past_spectrum_analysis_fft_samples:
description: List of FFT samples for the spectrum analysis
items:
$ref: '#/components/schemas/response_past_spectrum_analysis_fft_sample'
type: array
response_past_spectrum_analysis:
additionalProperties: false
properties:
end:
description: End time of the spectrum analysis in epoch seconds
type: integer
limit:
description: Limit of the number of results returned
type: integer
page:
description: Page number of the results returned
type: integer
results:
$ref: '#/components/schemas/response_past_spectrum_analysis_results'
start:
description: Start time of the spectrum analysis in epoch seconds
type: integer
total:
description: Total number of results available for the given time range
type: integer
type: object
response_http403:
additionalProperties: false
properties:
detail:
examples:
- You do not have permission to perform this action.
type: string
type: object
response_past_spectrum_analysis_results:
items:
$ref: '#/components/schemas/response_past_spectrum_analysis_result'
type: array
response_past_spectrum_analysis_fft_sample:
additionalProperties: false
description: FFT sample data for a specific frequency
properties:
frequency:
description: Frequency in MHz
examples:
- 2437.0
type: number
rssi:
description: RSSI in dBm
examples:
- -70.0
type: number
signal7:
description: RSSI in dBm
examples:
- -70.0
type: number
type: object
response_running_spectrum_analysis:
additionalProperties: false
properties:
band:
description: Band on which the spectrum analysis is running (e.g., 24, 5, 6)
type: string
device_id:
description: Device ID of the AP that is running spectrum analysis
format: uuid
type: string
duration:
description: Duration of the spectrum analysis in seconds
type: integer
format:
description: Format of the spectrum analysis data (e.g., json, stream)
type: string
started_time:
description: Time when the spectrum analysis was started
type: integer
type: object
spectrum_analysis:
properties:
band:
$ref: '#/components/schemas/spectrum_analysis_band'
channels:
description: Optional list of channels to scan. If not specified, all supported channels will be scanned
examples:
- - '36'
- '40'
- '44'
- '48'
items:
type: string
type: array
device_id:
description: Device ID of the AP that is performing spectrum analysis
format: uuid
type: string
duration:
default: 300
description: Duration of the spectrum analysis in seconds
maximum: 600
minimum: 60
type: integer
format:
$ref: '#/components/schemas/spectrum_analysis_format'
required:
- band
type: object
response_http404:
additionalProperties: false
properties:
id:
type: string
type: object
response_past_spectrum_analysis_channel_usages:
items:
$ref: '#/components/schemas/response_past_spectrum_analysis_channel_usage'
type: array
response_past_spectrum_analysis_channel_usage:
additionalProperties: false
description: Channel usage data for a specific channel
properties:
channel:
description: Channel number
examples:
- 36
type: integer
noise:
description: Noise level in dBm
examples:
- -90.0
type: number
non_wifi:
description: Percentage of channel usage by non-WiFi signals in the range [0, 1]
examples:
- 0.87
type: number
wifi:
description: Percentage of channel usage by WiFi in the range [0, 1]
examples:
- 0.13
type: number
type: object
spectrum_analysis_format:
default: json
description: 'Format of the spectrum analysis data. enum: `json`, `stream`'
enum:
- json
- stream
type: string
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
spectrum_analysis_band:
description: 'Band for spectrum analysis. enum: `24`, `5`, `6`'
enum:
- '24'
- '5'
- '6'
type: string
websocket_session:
additionalProperties: false
properties:
session:
examples:
- 19e73828-937f-05e6-f709-e29efdb0a82b
type: string
required:
- session
type: object
response_past_spectrum_analysis_result:
additionalProperties: false
description: Result of a past spectrum analysis
properties:
band:
description: Band on which the spectrum analysis was run (e.g., 24, 5, 6)
type: string
channel_usage:
$ref: '#/components/schemas/response_past_spectrum_analysis_channel_usages'
fft_samples:
$ref: '#/components/schemas/response_past_spectrum_analysis_fft_samples'
mac:
description: MAC Address of the AP that ran the spectrum analysis
type: string
org_id:
$ref: '#/components/schemas/org_id'
timestamp:
description: Timestamp when the spectrum analysis was run in epoch seconds
type: integer
type: object
response_http401:
additionalProperties: false
properties:
detail:
examples:
- Authentication credentials were not provided.
type: string
type: object
org_id:
examples:
- a97c1b22-a4e9-411e-9bfd-d8695a0f9e61
format: uuid
readOnly: true
type: string
responses:
WebsocketSession:
content:
application/json:
schema:
$ref: '#/components/schemas/websocket_session'
application/vnd.api+json:
schema:
$ref: '#/components/schemas/websocket_session'
description: OK
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
RunningSpectrumAnalysis:
content:
application/json:
examples:
Example:
$ref: '#/components/examples/RunningSpectrumAnalysis'
schema:
$ref: '#/components/schemas/response_running_spectrum_analysis'
application/vnd.api+json:
examples:
Example:
$ref: '#/components/examples/RunningSpectrumAnalysis'
schema:
$ref: '#/components/schemas/response_running_spectrum_analysis'
description: OK
PastSpectrumAnalysis:
content:
application/json:
examples:
Example:
$ref: '#/components/examples/PastSpectrumAnalysis'
schema:
$ref: '#/components/schemas/response_past_spectrum_analysis'
application/vnd.api+json:
examples:
Example:
$ref: '#/components/examples/PastSpectrumAnalysis'
schema:
$ref: '#/components/schemas/response_past_spectrum_analysis'
description: OK
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
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
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
examples:
PastSpectrumAnalysis:
value:
end: 1694708579
limit: 10
results:
- band: '5'
channel_usage:
- channel: 36
noise: -78
non_wifi: 0.08
wifi: 0.13
fft_samples:
- frequency: 2437
rssi: -92
signal7: -93
mac: 5c5b35bd76bb
org_id: f2695c32-0e83-4936-b1b2-96fc88051213
timestamp: 1694098696
start: 1694622179
total: 4
HTTP400Example:
value:
detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)'
HTTP429Example:
value:
detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold
HTTP403Example:
value:
detail: You do not have permission to perform this action.
HTTP401Example:
value:
detail: Authentication credentials were not provided.
RunningSpectrumAnalysis:
value:
band: '5'
device_id: 00000000-0000-0000-1000-5c5b35bd76bb
duration: 600
format: stream
started_time: 1435080709
parameters:
start:
description: Start time (epoch timestamp in seconds, or relative string like "-1d", "-1w")
in: query
name: start
schema:
type: string
duration:
description: Duration like 7d, 2w
in: query
name: duration
schema:
default: 1d
examples:
- 10m
type: string
end:
description: End time (epoch timestamp in seconds, or relative string like "-1d", "-2h", "now")
in: query
name: end
schema:
type: string
site_id:
in: path
name: site_id
required: true
schema:
examples:
- 000000ab-00ab-00ab-00ab-0000000000ab
format: uuid
type: string
limit:
in: query
name: limit
schema:
default: 100
minimum: 0
type: integer
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