Summary
The NAD T758 (with Volume) Series is an AV receiver controllable via the BluOS Custom Integration API (v1.7). The API uses HTTP GET requests over TCP to port 11000, with UTF-8 XML responses. Commands cover playback control, volume management, play queue manipulation, presets, content browsing, player grouping, input selection, and system reboot.
Transport
protocols:
- http
addressing:
port: 11000
base_url: "http://{player_ip}:11000"
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- queryable # /Status, /SyncStatus, /Volume queries return device state
- levelable # volume control via level (0-100), dB (absolute/relative), and mute
- routable # input selection via /Play?url=, /Play?inputIndex=, /Play?inputTypeIndex=
Actions
actions:
- id: play
label: Play
kind: action
params:
- name: seek
type: integer
description: "Jump to position in seconds within current track"
- name: id
type: integer
description: "Track ID in queue to play"
- name: url
type: string
description: "URL-encoded stream URL or input capture URL to play"
- id: pause
label: Pause
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 (Next Track)
kind: action
params: []
- id: back
label: Back (Previous Track)
kind: action
params: []
- id: set_volume
label: Set Volume
kind: action
params:
- name: level
type: integer
description: "Absolute volume level 0-100"
- name: db
type: integer
description: "Relative dB change (positive or negative)"
- name: abs_db
type: integer
description: "Absolute volume in dB"
- name: tell_slaves
type: integer
description: "For grouped players: 0=local only, 1=all group members"
- id: mute_on
label: Mute On
kind: action
params: []
- id: mute_off
label: Mute Off
kind: action
params: []
- id: shuffle
label: Set Shuffle
kind: action
params:
- name: state
type: integer
description: "0=off, 1=on"
- id: repeat
label: Set Repeat
kind: action
params:
- name: state
type: integer
description: "0=repeat queue, 1=repeat track, 2=off"
- id: clear_queue
label: Clear Play Queue
kind: action
params: []
- id: delete_track
label: Delete Track from Queue
kind: action
params:
- name: id
type: integer
description: "Track position in queue"
- id: move_track
label: Move Track in Queue
kind: action
params:
- name: old
type: integer
description: "Current position of track"
- name: new
type: integer
description: "Destination position"
- id: save_queue
label: Save Queue as Playlist
kind: action
params:
- name: name
type: string
description: "Name for the saved playlist"
- id: load_preset
label: Load Preset
kind: action
params:
- name: id
type: string
description: "Preset ID number, +1 for next, -1 for previous"
- id: select_input
label: Select Input (Active)
kind: action
params:
- name: url
type: string
description: "URL value from /RadioBrowse?service=Capture response"
- id: select_input_index
label: Select Input by Index
kind: action
params:
- name: inputIndex
type: integer
description: "1-based index from /Settings?id=capture (firmware 3.8.0-4.2.0)"
- id: select_input_type_index
label: Select Input by Type-Index
kind: action
params:
- name: inputTypeIndex
type: string
description: "Format type-index, e.g. spdif-1, analog-1, arc-1 (firmware 4.2.0+)"
- id: add_slave
label: Group Player
kind: action
params:
- name: slave
type: string
description: "IP address of secondary player"
- name: port
type: integer
description: "Port of secondary player"
- name: group
type: string
description: "Optional group name"
- id: remove_slave
label: Ungroup Player
kind: action
params:
- name: slave
type: string
description: "IP address of player to remove"
- name: port
type: integer
description: "Port of player to remove"
- id: reboot
label: Soft Reboot
kind: action
params: []
note: "POST /reboot with yes=1"
- id: doorbell
label: Doorbell Chime
kind: action
params:
- name: play
type: integer
description: "Always 1"
- id: bluetooth_mode
label: Set Bluetooth Mode
kind: action
params:
- name: bluetoothAutoplay
type: integer
description: "0=Manual, 1=Automatic, 2=Guest, 3=Disabled"
- id: streaming_action
label: Streaming Radio Action
kind: action
params:
- name: service
type: string
description: "Service name"
- name: action
type: string
description: "Action URL from /Status <action> element (skip, back, love, ban)"
- id: browse
label: Browse Content
kind: action
params:
- name: key
type: string
description: "Browse key from previous response"
- name: q
type: string
description: "Search query string"
- name: withContextMenuItems
type: integer
description: "Set to 1 to include inline context menu"
Feedbacks
feedbacks:
- id: playback_status
type: xml
description: "/Status response with state, volume, track info, etag"
- id: sync_status
type: xml
description: "/SyncStatus response with player info, grouping, volume"
- id: volume_state
type: xml
description: "/Volume response with level, dB, mute state, etag"
- id: player_state
type: enum
values: [play, pause, stop, stream, connecting]
description: "Current playback state from /Status or /Play response"
- id: mute_state
type: enum
values: ["0", "1"]
description: "1=muted, 0=unmuted"
- id: shuffle_state
type: enum
values: ["0", "1"]
description: "0=off, 1=on"
- id: repeat_state
type: enum
values: ["0", "1", "2"]
description: "0=repeat queue, 1=repeat track, 2=off"
- id: volume_level
type: integer
description: "Volume level 0-100, or -1 for fixed volume"
Variables
variables:
- id: volume
type: integer
min: 0
max: 100
description: "Player volume level percentage"
- id: volume_db
type: number
description: "Volume level in dB"
- id: shuffle
type: boolean
description: "Shuffle state"
- id: repeat
type: integer
description: "Repeat mode: 0=queue, 1=track, 2=off"
Events
# Long-polling mechanism via /Status?timeout=&etag= and /SyncStatus?timeout=&etag=
# returns updated XML when state changes or on timeout. No unsolicited push events.
Macros
# UNRESOLVED: no multi-step sequences explicitly described in source
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings, interlock procedures, or power-on sequencing
# requirements found in source. Reboot command has no confirmation requirement documented.
Notes
- All commands are HTTP GET requests except
/rebootwhich is a POST. - Responses are UTF-8 encoded XML.
- Long polling is supported via
timeoutandetagparameters on/Statusand/SyncStatus. Recommended polling intervals: 100s for/Status, 180s for/SyncStatus. - Without long polling, clients should poll at most once every 30 seconds. With long polling, consecutive requests must be at least 1 second apart.
- Volume range is typically -80..0 dB, configurable via BluOS Controller app.
- Input selection has three methods depending on firmware version: active URL-based (
/Play?url=), index-based (/Play?inputIndex=, firmware 3.8–4.2), and type-index-based (/Play?inputTypeIndex=, firmware 4.2+). - Player grouping uses primary/secondary terminology. Requests to secondary players are proxied to the primary.
- The LSDP discovery protocol uses UDP broadcast on port 11430 as an mDNS alternative.
Provenance
source_domains:
- bluos.io
source_urls:
- https://bluos.io/wp-content/uploads/2025/06/BluOS-Custom-Integration-API_v1.7.pdf
retrieved_at: 2026-04-29T09:36:15.329Z
last_checked_at: 2026-06-02T22:09:52.892Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T22:09:52.892Z
matched_actions: 25
action_count: 25
confidence: medium
summary: "All 25 spec actions traced to source (dip-safe re-verify). (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "exact firmware versions compatible with this API version not stated"
- "RS-232 or other serial control not covered in this source"
- "no multi-step sequences explicitly described in source"
- "no safety warnings, interlock procedures, or power-on sequencing"
- "exact NAD T758-specific input types not enumerated in this BluOS CI API doc"
- "power on/off commands not present — device may need CEC or IR for power control"
- "maximum number of grouped players not stated"
- "error response codes and handling not fully documented"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0