Summary

IP-based HTTP API control for WiiM Amp streaming amplifier. Controls playback, volume, EQ, source switching, presets, and alarms via HTTPS GET requests to /httpapi.asp. Device supports multiple audio sources including AirPlay, DLNA, Spotify Connect, TIDAL Connect, AUX, Bluetooth, optical, and USB storage.

Transport

protocols:
  - http
addressing:
  base_url: https://{device_ip}/httpapi.asp?command=********
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable       # reboot, shutdown commands present
- queryable       # getStatusEx, getPlayerStatus, getMetaInfo present
- levelable       # volume control (0-100) present
- routable        # source input switching present

Actions

- id: play_url
  label: Play Audio URL
  kind: action
  params:
    - name: url
      type: string
      description: Audio stream URL

- id: play_playlist
  label: Play Playlist
  kind: action
  params:
    - name: url
      type: string
      description: Playlist URL (m3u or ASX)
    - name: index
      type: integer
      description: Start index

- id: play_hex_playlist
  label: Play Hex-Encoded Playlist
  kind: action
  params:
    - name: url
      type: string
      description: Hex-encoded playlist URL

- id: pause
  label: Pause
  kind: action
  params: []

- id: resume
  label: Resume
  kind: action
  params: []

- id: toggle_pause
  label: Toggle Pause/Play
  kind: action
  params: []

- id: stop
  label: Stop
  kind: action
  params: []

- id: prev
  label: Previous Track
  kind: action
  params: []

- id: next
  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: set_volume
  label: Set Volume
  kind: action
  params:
    - name: value
      type: integer
      description: Volume 0-100

- id: mute
  label: Mute
  kind: action
  params:
    - name: enable
      type: boolean
      description: "true: mute, false: 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: preset
      type: string
      description: EQ preset name (Flat, Acoustic, Bass Booster, etc.)

- id: reboot
  label: Reboot Device
  kind: action
  params: []

- id: shutdown
  label: Shutdown Device
  kind: action
  params:
    - name: seconds
      type: integer
      description: "0: immediate, -1: cancel timer"

- id: set_alarm
  label: Set Alarm
  kind: action
  params:
    - name: index
      type: integer
      description: Alarm index 0-2
    - name: trigger
      type: integer
      description: "0: cancel, 1: once, 2: daily, 3: weekly, 4: weekly bitmask, 5: monthly"
    - name: operation
      type: integer
      description: "0: shell, 1: playback, 2: stop"
    - name: time
      type: string
      description: HHMMSS UTC
    - name: day
      type: string
      description: Day parameter per trigger type
    - name: url
      type: string
      description: Shell path or playback URL (<256 bytes)

- id: stop_alarm
  label: Stop Alarm
  kind: action
  params: []

- id: switch_source
  label: Switch Source
  kind: action
  params:
    - name: source
      type: string
      description: "line-in, bluetooth, optical, udisk, wifi"

- id: play_preset
  label: Play Preset
  kind: action
  params:
    - name: number
      type: integer
      description: Preset number 1-12

- id: set_audio_output_mode
  label: Set Audio Output Mode
  kind: action
  params:
    - name: mode
      type: integer
      description: "1: SPDIF, 2: AUX, 3: COAX"
- id: get_device_status
  label: Get Device Status
  kind: query
  params: []

- id: get_network_status
  label: Get Network Connection Status
  kind: query
  params: []

- id: get_player_status
  label: Get Player Status
  kind: query
  params: []

- id: get_eq_status
  label: Get EQ Status
  kind: query
  params: []

- id: get_eq_list
  label: Get EQ Preset List
  kind: query
  params: []

- id: get_shutdown_timer
  label: Get Shutdown Timer
  kind: query
  params: []

- id: get_alarm
  label: Get Alarm
  kind: query
  params:
    - name: index
      type: integer
      description: Alarm index 0-2

- id: get_preset_list
  label: Get Preset List
  kind: query
  params: []

- id: get_track_metadata
  label: Get Track Metadata
  kind: query
  params: []

- id: get_audio_output_mode
  label: Get Audio Output Mode
  kind: query
  params: []

- id: time_sync
  label: Sync Device Time
  kind: action
  params:
    - name: datetime
      type: string
      description: UTC datetime in YYYYMMDDHHMMSS format

Feedbacks

- id: device_status
  label: Device Status
  type: object
  fields:
    - ssid, firmware, build, group, uuid, MAC, volume, mute, internet, etc.

- id: playback_status
  label: Playback Status
  type: object
  fields:
    - type: master(0) or slave(1)
    - ch: stereo(0), left(1), right(2)
    - mode: source type (AirPlay=1, DLNA=2, playlist=10-19, Spotify=31, TIDAL=32, etc.)
    - loop: loop mode
    - status: play/stop/loading/pause
    - curpos: position ms
    - totlen: duration ms
    - vol: volume 0-100
    - mute: mute state
    - plicount: playlist track count
    - plicurr: current track index

- id: network_status
  label: Network Status
  type: enum
  values: [PROCESS, PAIRFAIL, FAIL, OK]

- id: eq_status
  label: EQ Status
  type: enum
  values: [On, Off]

- id: eq_list
  label: EQ Preset List
  type: array
  values: [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]

- id: shutdown_timer
  label: Shutdown Timer
  type: integer
  description: Seconds remaining

- id: alarm_info
  label: Alarm Info
  type: object
  fields:
    - enable, trigger, operation, time, day/week_day/date per trigger type, path

- id: preset_list
  label: Preset List
  type: array
  fields: [number, name, url, source, picurl]

- id: track_metadata
  label: Track Metadata
  type: object
  fields:
    - album, title, artist, albumArtURI, sampleRate, bitDepth

- id: audio_output_mode
  label: Audio Output Mode
  type: object
  fields:
    - hardware: output mode (1: SPDIF, 2: AUX, 3: COAX)
    - source: BT output (0: disable, 1: active)
    - audiocast: audio cast output (0: disable, 1: active)

Variables

# UNRESOLVED: no discrete settable parameters outside action commands

Events

# UNRESOLVED: no unsolicited notifications documented - device is request-response only

Macros

# UNRESOLVED: no multi-step sequences documented

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings in source

Notes

HTTP API uses query parameters appended to /httpapi.asp?command=. Responses are JSON except wlanGetConnectState which returns plain strings. Volume range is 0-100. Presets are 1-indexed (1-12). Device has no login/auth mechanism described. Time sync and alarm operations use UTC. Shutdown timer accepts 0 (immediate), -1 (cancel).

Provenance

source_domains:
  - wiimhome.com
source_urls:
  - "https://www.wiimhome.com/pdf/HTTP%20API%20for%20WiiM%20Products.pdf"
retrieved_at: 2026-05-21T11:05:56.159Z
last_checked_at: 2026-06-09T12:54:22.745Z

Verification Summary

verdict: verified
checked_at: 2026-06-09T12:54:22.745Z
matched_actions: 34
action_count: 34
confidence: medium
summary: "All 34 spec action-units are documented in source with matching command names, parameters, and behavior. Source defines 34 distinct HTTP API endpoints in sections 2.1-2.10; spec exhaustively covers each. Transport (HTTP GET to /httpapi.asp with query parameters) is uniform across all commands. No authentication required per source. Parameter types and ranges match (e.g., volume 0-100, alarm indices 0-2, loop modes 0,1,2,-1). No gaps, no fabrications, no drift in semantics. (9 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "serial control not documented"
- "no discrete settable parameters outside action commands"
- "no unsolicited notifications documented - device is request-response only"
- "no multi-step sequences documented"
- "no safety warnings in source"
- "serial/RS-232 control not documented in source"
- "raw TCP socket control not documented in source"
- "firmware compatibility range not stated"
- "fault behavior and error recovery not documented"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0