openapi: 3.2.0 info: title: Mist Sites Spectrum Analysis API description: '> Version: **2607.1.1** > > Date: **August 17, 2026** NOTE: Some important API changes will be introduced.' contact: name: Thomas Munzer email: tmunzer@juniper.net version: 2607.1.1 servers: - url: https://api.mist.com variables: {} - url: https://api.gc1.mist.com variables: {} - url: https://api.ac2.mist.com variables: {} - url: https://api.gc2.mist.com variables: {} - url: https://api.gc4.mist.com variables: {} - url: https://api.eu.mist.com variables: {} - url: https://api.gc3.mist.com variables: {} - url: https://api.ac6.mist.com variables: {} - url: https://api.gc6.mist.com variables: {} - url: https://api.ac5.mist.com variables: {} - url: https://api.gc5.mist.com variables: {} - url: https://api.gc7.mist.com variables: {} security: - apiToken: [] - csrfToken: [] tags: - name: Sites Spectrum Analysis 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. paths: /api/v1/sites/{site_id}/analyze_spectrum: parameters: [] get: tags: - Sites Spectrum Analysis summary: getSiteRunningSpectrumAnalysis description: Get the running spectrum analysis for a site operationId: getSiteRunningSpectrumAnalysis parameters: - name: site_id in: path description: '' required: true schema: type: string contentEncoding: uuid examples: - 000000ab-00ab-00ab-00ab-0000000000ab responses: '200': description: OK headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_running_spectrum_analysis' - description: Running spectrum analysis session for a site examples: - band: '5' channels: - 36 - 40 - 44 - 48 device_id: 00000000-0000-0000-1000-5c5b35bd76bb duration: 600 format: stream started_time: 1435080709 width: 20 contentMediaType: application/json examples: Example: value: band: '5' channels: - 36 - 40 - 44 - 48 device_id: 00000000-0000-0000-1000-5c5b35bd76bb duration: 600 format: stream started_time: 1435080709 width: 20 application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_running_spectrum_analysis' - description: Running spectrum analysis session for a site examples: - band: '5' channels: - 36 - 40 - 44 - 48 device_id: 00000000-0000-0000-1000-5c5b35bd76bb duration: 600 format: stream started_time: 1435080709 width: 20 contentMediaType: application/vnd.api+json examples: Example: value: band: '5' channels: - 36 - 40 - 44 - 48 device_id: 00000000-0000-0000-1000-5c5b35bd76bb duration: 600 format: stream started_time: 1435080709 width: 20 '400': description: Bad Syntax headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http400' - description: Standard HTTP 400 bad request error response examples: - detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' contentMediaType: application/json examples: Example: value: detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http400' - description: Standard HTTP 400 bad request error response examples: - detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' contentMediaType: application/vnd.api+json examples: Example: value: detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' '401': description: Unauthorized headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http401' - description: Standard HTTP 401 authentication error response examples: - detail: Authentication credentials were not provided. contentMediaType: application/json examples: Example: value: detail: Authentication credentials were not provided. application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http401' - description: Standard HTTP 401 authentication error response examples: - detail: Authentication credentials were not provided. contentMediaType: application/vnd.api+json examples: Example: value: detail: Authentication credentials were not provided. '403': description: Permission Denied headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http403' - description: Standard HTTP 403 permission error response examples: - detail: You do not have permission to perform this action. contentMediaType: application/json examples: Example: value: detail: You do not have permission to perform this action. application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http403' - description: Standard HTTP 403 permission error response examples: - detail: You do not have permission to perform this action. contentMediaType: application/vnd.api+json examples: Example: value: detail: You do not have permission to perform this action. '404': description: Not found. The API endpoint doesn’t exist or resource doesn’ t exist headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http404' - description: Standard HTTP 404 not found error response contentMediaType: application/json application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http404' - description: Standard HTTP 404 not found error response contentMediaType: application/vnd.api+json '429': description: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http429' - description: Standard HTTP 429 rate limit error response examples: - detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold contentMediaType: application/json examples: Example: value: detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http429' - description: Standard HTTP 429 rate limit error response examples: - detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold contentMediaType: application/vnd.api+json examples: Example: value: detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold deprecated: false post: tags: - Sites Spectrum Analysis summary: initiateSiteAnalyzeSpectrum description: 'Initiate a spectrum analysis for a site The output will be available through websocket. As there can be multiple command issued against the same device at the same time and the output all goes through the same websocket stream, session is introduced for demux. #### Subscribe to Device Command outputs `WS /api-ws/v1/stream` ```json { "subscribe": "/sites/{site_id}/analyze_spectrum" } ``` #### Example output from ws stream ```json { "event": "data", "channel": "/sites/4ac1dcf4-9d8b-7211-65c4-057819f0862b/analyze_spectrum", "data": { "session": "session_id", "fft_samples": [ { "frequency": 2437.0, "rssi / signal ?": -93 }, ... ], "channel_usage": [ { "channel": 36, "noise": -78, "wifi": 0.13, "non_wifi": 0.08 }, ... ] } } ```' operationId: initiateSiteAnalyzeSpectrum parameters: - name: site_id in: path description: '' required: true schema: type: string contentEncoding: uuid examples: - 000000ab-00ab-00ab-00ab-0000000000ab requestBody: description: Request Body content: application/json: schema: allOf: - $ref: '#/components/schemas/spectrum_analysis' - description: Request Body examples: - band: '5' channels: - 36 - 40 - 44 - 48 device_id: 00000000-0000-0000-1000-5c5b35bd76bb duration: 600 format: stream contentMediaType: application/json examples: Example: value: band: '5' channels: - 36 - 40 - 44 - 48 device_id: 00000000-0000-0000-1000-5c5b35bd76bb duration: 600 format: stream required: false responses: '200': description: OK headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/websocket_session' - description: Response containing the WebSocket session handle for asynchronous command output contentMediaType: application/json application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/websocket_session' - description: Response containing the WebSocket session handle for asynchronous command output contentMediaType: application/vnd.api+json '400': description: Bad Syntax headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http400' - description: Standard HTTP 400 bad request error response examples: - detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' contentMediaType: application/json examples: Example: value: detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http400' - description: Standard HTTP 400 bad request error response examples: - detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' contentMediaType: application/vnd.api+json examples: Example: value: detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' '401': description: Unauthorized headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http401' - description: Standard HTTP 401 authentication error response examples: - detail: Authentication credentials were not provided. contentMediaType: application/json examples: Example: value: detail: Authentication credentials were not provided. application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http401' - description: Standard HTTP 401 authentication error response examples: - detail: Authentication credentials were not provided. contentMediaType: application/vnd.api+json examples: Example: value: detail: Authentication credentials were not provided. '403': description: Permission Denied headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http403' - description: Standard HTTP 403 permission error response examples: - detail: You do not have permission to perform this action. contentMediaType: application/json examples: Example: value: detail: You do not have permission to perform this action. application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http403' - description: Standard HTTP 403 permission error response examples: - detail: You do not have permission to perform this action. contentMediaType: application/vnd.api+json examples: Example: value: detail: You do not have permission to perform this action. '404': description: Not found. The API endpoint doesn’t exist or resource doesn’ t exist headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http404' - description: Standard HTTP 404 not found error response contentMediaType: application/json application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http404' - description: Standard HTTP 404 not found error response contentMediaType: application/vnd.api+json '429': description: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http429' - description: Standard HTTP 429 rate limit error response examples: - detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold contentMediaType: application/json examples: Example: value: detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http429' - description: Standard HTTP 429 rate limit error response examples: - detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold contentMediaType: application/vnd.api+json examples: Example: value: detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold deprecated: false /api/v1/sites/{site_id}/stats/analyze_spectrum: parameters: [] get: tags: - Sites Spectrum Analysis summary: listSiteSpectrumAnalysis description: List the past spectrum analysis for a site operationId: listSiteSpectrumAnalysis parameters: - name: site_id in: path description: '' required: true schema: type: string contentEncoding: uuid examples: - 000000ab-00ab-00ab-00ab-0000000000ab - name: limit in: query description: Maximum number of results to return per page style: form explode: true schema: minimum: 0 type: integer contentEncoding: int32 default: 100 - name: start in: query description: Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` style: form explode: true schema: type: string - name: end in: query description: Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` style: form explode: true schema: type: string - name: duration in: query description: Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` style: form explode: true schema: type: string default: 1d examples: - 10m responses: '200': description: OK headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_past_spectrum_analysis' - description: Paginated response for past site spectrum analysis records examples: - 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 contentMediaType: application/json examples: Example: 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 application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_past_spectrum_analysis' - description: Paginated response for past site spectrum analysis records examples: - 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 contentMediaType: application/vnd.api+json examples: Example: 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 '400': description: Bad Syntax headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http400' - description: Standard HTTP 400 bad request error response examples: - detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' contentMediaType: application/json examples: Example: value: detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http400' - description: Standard HTTP 400 bad request error response examples: - detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' contentMediaType: application/vnd.api+json examples: Example: value: detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' '401': description: Unauthorized headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http401' - description: Standard HTTP 401 authentication error response examples: - detail: Authentication credentials were not provided. contentMediaType: application/json examples: Example: value: detail: Authentication credentials were not provided. application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http401' - description: Standard HTTP 401 authentication error response examples: - detail: Authentication credentials were not provided. contentMediaType: application/vnd.api+json examples: Example: value: detail: Authentication credentials were not provided. '403': description: Permission Denied headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http403' - description: Standard HTTP 403 permission error response examples: - detail: You do not have permission to perform this action. contentMediaType: application/json examples: Example: value: detail: You do not have permission to perform this action. application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http403' - description: Standard HTTP 403 permission error response examples: - detail: You do not have permission to perform this action. contentMediaType: application/vnd.api+json examples: Example: value: detail: You do not have permission to perform this action. '404': description: Not found. The API endpoint doesn’t exist or resource doesn’ t exist headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http404' - description: Standard HTTP 404 not found error response contentMediaType: application/json application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http404' - description: Standard HTTP 404 not found error response contentMediaType: application/vnd.api+json '429': description: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http429' - description: Standard HTTP 429 rate limit error response examples: - detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold contentMediaType: application/json examples: Example: value: detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http429' - description: Standard HTTP 429 rate limit error response examples: - detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold contentMediaType: application/vnd.api+json examples: Example: value: detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold deprecated: false components: schemas: spectrum_analysis_band2: title: spectrum_analysis_band2 enum: - '24' - '5' - '6' type: string description: 'Radio band to scan during spectrum analysis. enum: `24`, `5`, `6`.' response_http403: title: response_http403 type: object properties: detail: type: string description: Human-readable explanation of the permission error examples: - You do not have permission to perform this action. description: Standard HTTP 403 permission error response response_past_spectrum_analysis: title: response_past_spectrum_analysis type: object properties: end: type: integer description: Epoch timestamp, in seconds, for the end of the spectrum analysis query window contentEncoding: int32 limit: type: integer description: Maximum number of spectrum analysis records returned in this page contentEncoding: int32 page: type: integer description: Current page number returned for the spectrum analysis results contentEncoding: int32 results: type: array items: $ref: '#/components/schemas/response_past_spectrum_analysis_result' description: Spectrum analysis records for the requested site and time window start: type: integer description: Epoch timestamp, in seconds, for the start of the spectrum analysis query window contentEncoding: int32 total: type: integer description: Number of spectrum analysis records available for the given time range contentEncoding: int32 description: Paginated response for past site spectrum analysis records response_http400: title: response_http400 type: object properties: detail: type: string description: Human-readable explanation of the bad request error examples: - 'JSON parse error - Expecting value: line 5 column 8 (char 56)' description: Standard HTTP 400 bad request error response response_running_spectrum_analysis: title: response_running_spectrum_analysis type: object properties: band: type: string description: Radio band currently being scanned by spectrum analysis, such as 24, 5, or 6 channels: type: array items: type: integer contentEncoding: int32 description: List of channels being scanned in the spectrum analysis device_id: type: string description: Device ID of the AP that is running spectrum analysis contentEncoding: uuid duration: type: integer description: Length of the running spectrum analysis session, in seconds contentEncoding: int32 format: type: string description: Output format for the running spectrum analysis data, such as json or stream started_time: type: integer description: Timestamp when the spectrum analysis was started contentEncoding: int32 width: type: integer description: Channel width used during the spectrum analysis scan, in MHz contentEncoding: int32 description: Running spectrum analysis session for a site response_past_spectrum_analysis_channel_usage: title: response_past_spectrum_analysis_channel_usage type: object properties: channel: type: integer description: Radio channel measured by this channel usage sample contentEncoding: int32 examples: - 36 noise: type: number description: Measured noise floor, in dBm, for the channel examples: - -90 non_wifi: type: number description: Percentage of channel usage by non-WiFi signals in the range [0, 1] examples: - 0.87 wifi: type: number description: Percentage of channel usage by WiFi in the range [0, 1] examples: - 0.13 description: Channel usage data for a specific channel response_past_spectrum_analysis_fft_sample: title: response_past_spectrum_analysis_fft_sample type: object properties: frequency: type: number description: Sample frequency, in MHz, for this FFT point examples: - 2437 rssi: type: number description: Received signal strength, in dBm, for this FFT sample examples: - -70 signal7: type: number description: Additional signal level, in dBm, reported for this FFT sample examples: - -70 description: FFT sample data for a specific frequency response_http404: title: response_http404 type: object properties: id: type: string description: Missing resource identifier, when the API includes one description: Standard HTTP 404 not found error response response_past_spectrum_analysis_result: title: response_past_spectrum_analysis_result type: object properties: band: type: string description: Radio band on which the spectrum analysis was run (for example, 24, 5, or 6) channel_usage: type: array items: $ref: '#/components/schemas/response_past_spectrum_analysis_channel_usage' description: Per-channel utilization measurements captured during the analysis fft_samples: type: array items: $ref: '#/components/schemas/response_past_spectrum_analysis_fft_sample' description: FFT signal samples captured during the analysis mac: type: string description: AP MAC address for the access point that ran the spectrum analysis org_id: type: string description: Organization that owns the site where the spectrum analysis was run contentEncoding: uuid readOnly: true examples: - a97c1b22-a4e9-411e-9bfd-d8695a0f9e61 spectrogram_url: type: string description: URL to the generated spectrogram image for the spectrum analysis timestamp: type: integer description: Epoch timestamp, in seconds, when the spectrum analysis was run contentEncoding: int32 description: Result of a past spectrum analysis response_http401: title: response_http401 type: object properties: detail: type: string description: Human-readable explanation of the authentication error examples: - Authentication credentials were not provided. description: Standard HTTP 401 authentication error response response_http429: title: response_http429 type: object properties: detail: type: string description: Human-readable explanation of the rate limit error examples: - Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold description: Standard HTTP 429 rate limit error response spectrum_analysis_format2: title: spectrum_analysis_format2 enum: - json - stream type: string description: 'Output format for the spectrum analysis results. enum: `json`, `stream`.' spectrum_analysis: title: spectrum_analysis required: - band type: object properties: band: allOf: - $ref: '#/components/schemas/spectrum_analysis_band2' - description: 'Radio band to scan during spectrum analysis. enum: `24`, `5`, `6`.' channels: type: array items: type: integer contentEncoding: int32 description: Optional list of channels to scan. If not specified, all supported channels will be scanned examples: - - 36 - 40 - 44 - 48 device_id: type: string description: Device ID of the AP that is performing spectrum analysis contentEncoding: uuid duration: maximum: 600 minimum: 60 type: integer description: Length of the spectrum analysis run, in seconds contentEncoding: int32 default: 300 format: allOf: - $ref: '#/components/schemas/spectrum_analysis_format2' - description: 'Output format for the spectrum analysis results. enum: `json`, `stream`.' description: Request parameters for starting AP spectrum analysis at a site websocket_session: title: websocket_session required: - session type: object properties: session: type: string description: Identifier used to correlate output on the WebSocket stream examples: - 19e73828-937f-05e6-f709-e29efdb0a82b description: Response containing the WebSocket session handle for asynchronous command output securitySchemes: apiToken: type: apiKey description: "Preferred authentication method for automation and integrations. Send the API token in the HTTP `Authorization` header.\n\n**Format**:\n `Authorization: Token {apitoken}`\n\n**Notes**:\n* An API token generated for a specific admin has the same privileges as that admin\n* An API token is automatically removed if it is not used for more than 90 days\n* SSO admins cannot generate admin API tokens. Use organization API tokens when scoped Org/Site privileges are needed." name: Authorization in: header csrfToken: type: apiKey description: 'Session-based authentication for browser or login/password flows. After a successful [Login]($e/Admins%20Login/login) request, Mist returns a `csrftoken` cookie. Send that value in the `X-CSRFToken` header on later API requests that use the login session. **Format**: ``` X-CSRFToken: vwvBuq9qkqaKh7lu8tNc0gkvBfEaLAmx ``` For automation, API Token authentication is preferred.' name: X-CSRFToken in: header