Summary
The WiiM Speaker (e.g. WiiM Mini) is a network-connected audio streaming device controlled via an HTTPS-based REST API. Commands are issued as HTTP GET requests to /httpapi.asp?command=<cmd> on the device's IP address. Responses are JSON or plain text depending on the command. The API covers playback control, volume, mute, EQ presets, input source switching, alarms, presets, device info queries, and power management (reboot/shutdown).
Transport
protocols:
- http
addressing:
base_url: "https://{device_ip}/httpapi.asp?command={command}"
port: null # UNRESOLVED: port number not stated in source
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- powerable # inferred: reboot and shutdown commands present
- queryable # inferred: getStatusEx, getPlayerStatus, getMetaInfo queries present
- levelable # inferred: volume (0-100) and mute controls present
- routable # inferred: switchmode command for input source selection
Actions
actions:
- id: play_url
label: Play Audio URL
kind: action
params:
- name: url
type: string
description: URL pointing to an audio stream
- id: play_playlist
label: Play Playlist
kind: action
params:
- name: url
type: string
description: URL pointing to an m3u or ASX playlist
- name: index
type: integer
description: Start index in the playlist
- id: play_hex_playlist
label: Play Hex-Encoded Playlist
kind: action
params:
- name: url
type: string
description: Hex-encoded URL pointing to an m3u or ASX playlist
- name: index
type: integer
description: Start index in the playlist
- id: pause
label: Pause
kind: action
params: []
- id: resume
label: Resume
kind: action
params: []
- id: toggle_pause_play
label: Toggle Pause/Play
kind: action
params: []
- id: prev_track
label: Previous Track
kind: action
params: []
- id: next_track
label: Next Track
kind: action
params: []
- id: seek
label: Seek
kind: action
params:
- name: position
type: integer
description: Position in seconds (0 to duration)
- id: stop
label: Stop
kind: action
params: []
- id: set_volume
label: Set Volume
kind: action
params:
- name: value
type: integer
description: Volume level from 0 to 100
- id: mute
label: Mute
kind: action
params:
- name: mute
type: integer
description: "1 to mute, 0 to unmute"
- id: set_loop_mode
label: Set Loop Mode
kind: action
params:
- name: mode
type: integer
description: "0 = sequence no loop, 1 = single loop, 2 = shuffle loop, -1 = sequence loop"
- id: eq_on
label: EQ On
kind: action
params: []
- id: eq_off
label: EQ Off
kind: action
params: []
- id: eq_load
label: Load EQ Preset
kind: action
params:
- name: name
type: string
description: "EQ preset name (e.g. Flat, Rock, Pop, Jazz, Classical, etc.)"
- id: switch_input
label: Switch Input Source
kind: action
params:
- name: mode
type: string
description: "Input source: line-in, bluetooth, optical, udisk, wifi"
- id: play_preset
label: Play Preset
kind: action
params:
- name: number
type: integer
description: Preset number from 1 to 12
- id: set_alarm
label: Set Alarm
kind: action
params:
- name: index
type: integer
description: Alarm slot (0-2, max 3 alarms)
- name: trigger
type: integer
description: "0 = cancel, 1 = once, 2 = every day, 3 = weekly (day 00-06), 4 = weekly bitmask, 5 = monthly"
- name: operation
type: integer
description: "0 = shell execute, 1 = playback/ring, 2 = stop playback"
- name: time
type: string
description: "HHMMSS in UTC"
- name: day
type: string
description: "Varies by trigger type (YYYYMMDD, or day bytes, or bitmask)"
- name: url
type: string
description: "Shell path or playback URL (max 256 bytes, optional)"
- id: stop_alarm
label: Stop Current Alarm
kind: action
params: []
- id: time_sync
label: Sync Time
kind: action
params:
- name: datetime
type: string
description: "YYYYMMDDHHMMSS in UTC"
- id: reboot
label: Reboot Device
kind: action
params: []
- id: shutdown
label: Shutdown
kind: action
params:
- name: seconds
type: integer
description: "0 = immediate shutdown, -1 = cancel previous shutdown timer"
- id: set_audio_output_mode
label: Set Audio Output Mode
kind: action
params:
- name: mode
type: integer
description: "1 = SPDIF, 2 = AUX, 3 = COAX"
Feedbacks
feedbacks:
- id: device_status
type: json
description: Full device status including firmware, network, MAC addresses, UUID, internet connectivity
- id: network_connect_state
type: enum
values: [PROCESS, PAIRFAIL, FAIL, OK]
description: WiFi connection status (plain text response, not JSON)
- id: playback_status
type: json
description: "Playback state: type, ch, mode, loop, eq, status (stop/play/loading/pause), curpos, totlen, vol, mute, playlist info"
- id: eq_status
type: enum
values: [On, Off]
description: Current EQ on/off state
- id: eq_preset_list
type: list
description: Available EQ preset names (Flat, Acoustic, Bass Booster, etc.)
- id: track_metadata
type: json
description: "Current track info: album, title, artist, albumArtURI, sampleRate, bitDepth"
- id: preset_list
type: json
description: List of configured presets with number, name, url, source, picurl
- id: shutdown_timer
type: integer
description: Remaining seconds until shutdown
- id: alarm
type: json
description: Alarm configuration for a given slot (0-2)
- id: audio_output_mode
type: json
description: "Audio output hardware mode (1=SPDIF, 2=AUX, 3=COAX), BT source mode, audiocast mode"
Variables
variables:
- id: volume
type: integer
min: 0
max: 100
description: Current volume level (0-100)
- id: loop_mode
type: integer
values: [-1, 0, 1, 2]
description: "-1=sequence loop, 0=sequence no loop, 1=single loop, 2=shuffle loop"
- id: audio_output_hardware
type: integer
values: [1, 2, 3]
description: "Hardware output mode: 1=SPDIF, 2=AUX, 3=COAX"
Events
# UNRESOLVED: source does not describe unsolicited notifications or event subscription mechanism
Macros
# UNRESOLVED: no multi-step macro sequences described in source
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: reboot and immediate shutdown commands exist but no safety warnings or
# interlock procedures are described in the source document.
Notes
- All commands are sent as HTTP GET requests to
https://{device_ip}/httpapi.asp?command={command}. - The
switchmodeinput valueline-inalso refers to AUX-in. - The
hex_playlistvariant expects a hex-encoded URL. - Alarms support max 3 slots (index 0-2); time values are in UTC.
- Volume range is 0-100. Mute is a separate toggle (1/0).
- EQ presets include: Flat, Acoustic, Bass Booster, Bass Reducer, Classical, Dance, Deep, Electronic, Hip-Hop, Jazz, Latin, Loudness, Lounge, Piano, Pop, R&B, Rock, Small Speakers, Spoken Word, Treble Booster, Treble Reducer, Vocal Booster.
- Preset keys (MCUKeyShortClick) are numbered 1-12.
- The slave mute state is also set when muting during group play.
Provenance
source_domains:
- wiimhome.com
source_urls:
- "https://www.wiimhome.com/pdf/HTTP%20API%20for%20WiiM%20Products.pdf"
retrieved_at: 2026-04-30T04:31:33.737Z
last_checked_at: 2026-06-02T22:16:13.960Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T22:16:13.960Z
matched_actions: 24
action_count: 24
confidence: medium
summary: "All 24 spec actions traced to source (dip-safe re-verify). (11 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "no specific port number stated in source (standard HTTPS implied but not confirmed)"
- "no authentication or login procedure described in source"
- "port number not stated in source"
- "source does not describe unsolicited notifications or event subscription mechanism"
- "no multi-step macro sequences described in source"
- "reboot and immediate shutdown commands exist but no safety warnings or"
- "no port number explicitly stated — standard HTTPS (443) is assumed but unconfirmed"
- "no authentication or login mechanism described"
- "no firmware version compatibility range stated"
- "no unsolicited event/notification mechanism described"
- "the source references WiiM Mini as an example device; exact model coverage is unclear"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0