Summary
The NAD T777 (with Volume) Series is a BluOS-enabled AV receiver controlled via the BluOS Custom Integration API (version 1.7). All commands are issued as HTTP GET requests (or POST for reboot) to the player's IP address on TCP port 11000. Responses are UTF-8 encoded XML. The API covers playback control, volume/mute, queue management, preset management, input selection, player grouping, and content browsing.
Transport
protocols:
- http
addressing:
port: 11000
base_url: http://<player_ip>:11000
auth:
type: none # inferred: no auth procedure in source
Traits
- queryable # inferred from /Status, /SyncStatus, /Volume query commands
- levelable # inferred from volume level and dB control commands
- routable # inferred from direct input selection commands (/Play?url=, /Play?inputTypeIndex=)
Actions
- id: play
label: Play
kind: action
params: []
- id: play_seek
label: Play with Seek
kind: action
params:
- name: seek
type: integer
description: Jump to position in seconds within the current track
- name: id
type: integer
description: Optional track id in the queue (0-based position)
- id: play_url
label: Play Stream URL
kind: action
params:
- name: url
type: string
description: URL-encoded stream URL to play
- id: pause
label: Pause
kind: action
params: []
- id: pause_toggle
label: Pause Toggle
kind: action
params:
- name: toggle
type: integer
description: Set to 1 to toggle current pause state
- id: stop
label: Stop
kind: action
params: []
- id: skip
label: Skip to Next Track
kind: action
params: []
- id: back
label: Back / Previous Track
kind: action
params: []
- id: set_volume_level
label: Set Volume Level
kind: action
params:
- name: level
type: integer
description: Absolute volume level 0–100
- name: tell_slaves
type: integer
description: "0 = only this player; 1 = all players in group"
- id: set_volume_abs_db
label: Set Volume (Absolute dB)
kind: action
params:
- name: abs_db
type: number
description: Absolute volume in dB
- name: tell_slaves
type: integer
description: "0 = only this player; 1 = all players in group"
- id: set_volume_relative_db
label: Set Volume (Relative dB)
kind: action
params:
- name: db
type: number
description: Relative dB change; positive = up, negative = down
- name: tell_slaves
type: integer
description: "0 = only this player; 1 = all players in group"
- id: mute_on
label: Mute
kind: action
params: []
- id: mute_off
label: Unmute
kind: action
params: []
- id: shuffle
label: Set Shuffle
kind: action
params:
- name: state
type: integer
description: "0 = disable shuffle, 1 = enable shuffle"
- id: repeat
label: Set Repeat
kind: action
params:
- name: state
type: integer
description: "0 = repeat queue, 1 = repeat track, 2 = repeat off"
- id: load_preset
label: Load Preset
kind: action
params:
- name: id
type: string
description: "Preset id, or +1 for next preset, -1 for previous preset"
- id: queue_delete_track
label: Delete Track from Queue
kind: action
params:
- name: id
type: integer
description: Track id/position to delete from play queue
- id: queue_move_track
label: Move Track in Queue
kind: action
params:
- name: old
type: integer
description: Current (old) position of the track
- name: new
type: integer
description: Destination (new) position of the track
- id: queue_clear
label: Clear Play Queue
kind: action
params: []
- id: queue_save
label: Save Play Queue
kind: action
params:
- name: name
type: string
description: Name to save the play queue as
- id: select_input_active
label: Select Active Input (by URL)
kind: action
params:
- name: url
type: string
description: URL-encoded input capture URL from /RadioBrowse?service=Capture
- id: select_input_by_type_index
label: Select Input by Type and Index (BluOS v4.2.0+)
kind: action
params:
- name: inputTypeIndex
type: string
description: "Input type-index string, e.g. spdif-1, analog-1, bluetooth-1, arc-1, earc-1, phono-1, coax-1, computer-1, aesebu-1, balanced-1, microphone-1"
- id: select_input_by_index
label: Select Input by Index (BluOS v3.8.0–v4.2.0)
kind: action
params:
- name: inputIndex
type: integer
description: 1-based index of input from /Settings?id=capture (Bluetooth excluded)
- id: set_bluetooth_mode
label: Set Bluetooth Mode
kind: action
params:
- name: bluetoothAutoplay
type: integer
description: "0 = Manual, 1 = Automatic, 2 = Guest, 3 = Disabled"
- id: group_add_slave
label: Add Player to Group
kind: action
params:
- name: slave
type: string
description: IP address of secondary player
- name: port
type: integer
description: Port of secondary player (default 11000)
- name: group
type: string
description: Optional group name
- id: group_remove_slave
label: Remove Player from Group
kind: action
params:
- name: slave
type: string
description: IP address of secondary player to remove
- name: port
type: integer
description: Port of secondary player
- id: reboot
label: Soft Reboot Player
kind: action
params: []
- id: doorbell_chime
label: Play Doorbell Chime
kind: action
params: []
- id: browse
label: Browse Content
kind: action
params:
- name: key
type: string
description: Optional URL-encoded browse key from a prior /Browse response; omit for top-level browse
- name: withContextMenuItems
type: integer
description: "Set to 1 to include inline context menus in response"
- id: search_content
label: Search Music Content
kind: action
params:
- name: key
type: string
description: searchKey value from a prior /Browse response
- name: q
type: string
description: Search string
- id: streaming_radio_action
label: Streaming Radio Action (skip/back/love/ban)
kind: action
params:
- name: service
type: string
description: Service name (e.g. Slacker)
- name: action_param
type: string
description: Action-specific parameter (e.g. skip=trackid, ban=trackid, love=trackid) as provided in the /Status response actions element
Feedbacks
- id: playback_status
label: Playback Status
type: object
description: Full playback and volume status from /Status endpoint
fields:
- name: state
type: enum
values: [play, pause, stop, stream, connecting]
- name: volume
type: integer
description: "0–100 or -1 for fixed volume"
- name: mute
type: integer
description: "1 = muted, 0 = unmuted"
- name: db
type: number
description: Volume level in dB
- name: title1
type: string
- name: title2
type: string
- name: title3
type: string
- name: artist
type: string
- name: album
type: string
- name: shuffle
type: integer
description: "0 = off, 1 = on"
- name: repeat
type: integer
description: "0 = repeat queue, 1 = repeat track, 2 = off"
- name: secs
type: integer
description: Elapsed seconds of current track
- name: totlen
type: integer
description: Total track length in seconds
- name: service
type: string
- name: syncStat
type: string
description: Sync status id; matches /SyncStatus syncStat attribute
- id: sync_status
label: Player and Group Sync Status
type: object
description: Player identity and grouping information from /SyncStatus endpoint
fields:
- name: volume
type: integer
description: "0–100 or -1 for fixed volume"
- name: mute
type: integer
description: "1 = muted, 0 = not muted"
- name: name
type: string
description: Player name
- name: modelName
type: string
- name: group
type: string
- name: initialized
type: boolean
- name: syncStat
type: string
- id: volume_state
label: Volume State
type: object
description: Response from /Volume query or command
fields:
- name: volume
type: integer
description: Current volume 0–100 or -1 for fixed
- name: db
type: number
- name: mute
type: integer
- name: muteDb
type: number
- name: muteVolume
type: integer
Variables
# UNRESOLVED: No persistent settable parameters beyond what is covered in Actions and Feedbacks are described in the source.
Events
- id: status_change
label: Status Changed (Long Poll)
description: Long-polling /Status returns when player state changes before the timeout expires. Use etag from previous response; timeout recommended 100s, minimum 10s between polls.
- id: sync_status_change
label: Sync Status Changed (Long Poll)
description: Long-polling /SyncStatus returns when player grouping or volume changes. Recommended poll interval 180s.
Macros
# UNRESOLVED: No multi-step macros are explicitly documented in the source.
Safety
confirmation_required_for:
- reboot
interlocks: []
# Note: The /reboot endpoint uses HTTP POST (not GET). All other commands are HTTP GET.
Notes
- All requests use the form
http://<player_ip>:11000/<endpoint>?params. Port 11000 applies to all standard BluOS players. The NAD CI580 (4-streamer chassis) uses ports 11000, 11010, 11020, 11030 for nodes 1–4. - Player discovery uses mDNS (services
_musc._tcp,_musp._tcp) or the proprietary LSDP protocol on UDP port 11430. - Long polling is supported on /Status and /SyncStatus. When not long-polling, clients should poll no faster than once every 30 seconds. When long-polling, do not make two consecutive requests for the same resource less than 1 second apart.
- Volume commands (level, abs_db, db, mute) can apply to the entire group by adding
tell_slaves=1. - The /mute parameter uses inverted logic for the Set Volume endpoint:
mute=0mutes the player,mute=1unmutes. (Confirmed from source: "If set to 0, the player is muted. If set to 1, the player is unmuted.") - Input selection: use
/Play?inputTypeIndex=<type>-<index>for BluOS v4.2.0+; use/Play?inputIndex=<n>for v3.8.0–v4.2.0; use/Play?url=<capture-url>for active input selection via /RadioBrowse. - Reboot is via HTTP POST:
curl -d yes=1 http://<player_ip>/reboot. - The source document (BluOS Custom Integration API v1.7) is shared across NAD, Bluesound, and DALI products. NAD T777-specific input availability depends on the physical hardware.
- The
entity_idin this spec is set tonad_t777_with_volume_seriesas provided; the known protocol listed as RS-232C in the intake form does not match the source document, which describes HTTP only.
Provenance
source_domains: []
source_urls: []
retrieved_at: 2026-06-02T22:09:54.484Z
last_checked_at: 2026-06-02T22:09:54.484Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T22:09:54.484Z
matched_actions: 31
action_count: 31
confidence: medium
summary: "All 31 spec actions traced to source (dip-safe re-verify). (6 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "The source document is the BluOS Custom Integration API shared across NAD, Bluesound, and DALI products; no NAD-T777-specific command set or feature exclusions are documented. Input types available depend on physical hardware."
- "No persistent settable parameters beyond what is covered in Actions and Feedbacks are described in the source."
- "No multi-step macros are explicitly documented in the source."
- "RS-232C/serial protocol mentioned in the intake form is not documented in this source. If the NAD T777 has a separate RS-232C command set, it would require a different source document."
- "Authentication — source describes no login or credential mechanism. auth.type set to none by Tier 2 inference."
- "Firmware version compatibility for the T777 model specifically is not stated."
- "model-specific source not located"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0