Analysis
GET /v1.1/devices/{deviceId}/status for an AI Art Frame always returns "displayMode": 0, regardless of the frame's actual display mode. Switching the frame between static (single image) and slideshow — on the device or in the SwitchBot app — never changes the value; it stays 0 on every poll. The field appears to be stuck/never updated server-side, so there is no reliable way to read the frame's current mode via the API.
Observed response (deviceId / imageUrl redacted):
{
"version": "V0.7-1.1",
"battery": 34,
"onlineStatus": "online",
"displayMode": 0,
"imageUrl": "",
"deviceId": "",
"deviceType": "AI Art Frame",
"hubDeviceId": ""
}
Expected Behavior
displayMode should reflect the frame's real state — 0 for static / single image, 1 for slideshow — and update whenever the mode changes on the device or via the app, so API clients can tell whether the frame is cycling or holding a single image.
Steps To Reproduce
- GET /v1.1/devices/{deviceId}/status for an AI Art Frame → note displayMode (returns 0).
- Put the frame into slideshow mode (device or SwitchBot app).
- GET the status again.
- displayMode is still 0 — it never changes to 1.
Logs
Observed response (deviceId / imageUrl redacted):
{
"version": "V0.7-1.1",
"battery": 34,
"onlineStatus": "online",
"displayMode": 0,
"imageUrl": "<presigned S3 URL omitted>",
"deviceId": "<redacted>",
"deviceType": "AI Art Frame",
"hubDeviceId": "<redacted>"
}
Configuration
Custom client calling the SwitchBot Cloud API v1.1 directly (no SDK).
Request:
GET https://api.switch-bot.com/v1.1/devices/{deviceId}/status
Headers: Authorization, sign, t, nonce (standard HMAC-SHA256 signing per the API docs)
No special configuration — the issue is in the API response payload (displayMode),
Environment
- OS: macOS 26.4.1 (build 25E253)
- Software: SwitchBot Cloud API v1.1 ; device firmware V0.7-1.1 (AI Art Frame)
- Client runtime: Python 3.12.4 (urllib, no SDK) — not a Node project, so node/npm N/A
- Note: this is a server-side API behavior, reproducible from any HTTP client regardless of language/runtime
Additional Context
The displayMode field is the only documented way to detect whether the frame is holding a single image vs. running a slideshow. Because it is stuck at 0, integrations cannot tell the frame's actual mode. Polling the status repeatedly always returns displayMode: 0 even after the mode is changed on the device and in the SwitchBot app. All other fields (battery, onlineStatus, imageUrl) update correctly — only displayMode appears stale/hardcoded.
Analysis
GET /v1.1/devices/{deviceId}/status for an AI Art Frame always returns "displayMode": 0, regardless of the frame's actual display mode. Switching the frame between static (single image) and slideshow — on the device or in the SwitchBot app — never changes the value; it stays 0 on every poll. The field appears to be stuck/never updated server-side, so there is no reliable way to read the frame's current mode via the API.
Observed response (deviceId / imageUrl redacted):
{
"version": "V0.7-1.1",
"battery": 34,
"onlineStatus": "online",
"displayMode": 0,
"imageUrl": "",
"deviceId": "",
"deviceType": "AI Art Frame",
"hubDeviceId": ""
}
Expected Behavior
displayMode should reflect the frame's real state — 0 for static / single image, 1 for slideshow — and update whenever the mode changes on the device or via the app, so API clients can tell whether the frame is cycling or holding a single image.
Steps To Reproduce
Logs
Observed response (deviceId / imageUrl redacted): { "version": "V0.7-1.1", "battery": 34, "onlineStatus": "online", "displayMode": 0, "imageUrl": "<presigned S3 URL omitted>", "deviceId": "<redacted>", "deviceType": "AI Art Frame", "hubDeviceId": "<redacted>" }Configuration
Environment
Additional Context
The displayMode field is the only documented way to detect whether the frame is holding a single image vs. running a slideshow. Because it is stuck at 0, integrations cannot tell the frame's actual mode. Polling the status repeatedly always returns displayMode: 0 even after the mode is changed on the device and in the SwitchBot app. All other fields (battery, onlineStatus, imageUrl) update correctly — only displayMode appears stale/hardcoded.