Summary
Bond Bridge is a hub device that bridges RF remote-controlled fans, shades, fireplaces, and other appliances to HTTP/REST, MQTT, and BPUP (UDP) protocols. The Local API uses unencrypted HTTP with token-based authentication. Token obtained from /v2/token endpoint (available within 10 minutes of power cycle). Supports TCP HTTP, UDP BPUP, and MQTT.
Transport
protocols:
- http
- udp
addressing:
base_url: http://{bond_ip} # inferred: IP discovered via mDNS (ping BBxxxxx.local) or avahi-browse/dns-sd
auth:
type: token # token via BOND-Token HTTP header or _token body field
token_endpoint: /v2/token # token retrievable within 10 min of power cycle
token_header: BOND-Token
Traits
- powerable # TurnOn, TurnOff, TogglePower actions present
- routable # Open, Close, Raise, Lower, Retract, Extend for shades/motors
- queryable # state, properties, device list endpoints present
- levelable # SetSpeed, SetBrightness, SetPosition, SetHeat, SetFlame actions present
Actions
# Power
- id: turn_on
label: Turn On
kind: action
params: []
- id: turn_off
label: Turn Off
kind: action
params: []
- id: toggle_power
label: Toggle Power
kind: action
params: []
# Speed
- id: set_speed
label: Set Speed
kind: action
params:
- name: speed
type: integer
description: Speed value
- id: increase_speed
label: Increase Speed
kind: action
params:
- name: speeds
type: integer
description: Amount to increase
- id: decrease_speed
label: Decrease Speed
kind: action
params:
- name: speeds
type: integer
description: Amount to decrease
# Brightness
- id: set_brightness
label: Set Brightness
kind: action
params:
- name: brightness
type: integer
description: Brightness percentage (1-100)
- id: increase_brightness
label: Increase Brightness
kind: action
params:
- name: amount
type: integer
description: Amount to increase
- id: decrease_brightness
label: Decrease Brightness
kind: action
params:
- name: amount
type: integer
description: Amount to decrease (minimum 1%)
- id: cycle_brightness
label: Cycle Brightness
kind: action
params:
- name: amount
type: integer
description: Cycle amount
# Light
- id: turn_light_on
label: Turn Light On
kind: action
params: []
- id: turn_light_off
label: Turn Light Off
kind: action
params: []
- id: toggle_light
label: Toggle Light
kind: action
params: []
# Direction
- id: set_direction
label: Set Direction
kind: action
params:
- name: direction
type: integer
description: "1=forward, -1=reverse"
- id: toggle_direction
label: Toggle Direction
kind: action
params: []
# Timer
- id: set_timer
label: Set Timer
kind: action
params:
- name: s
type: integer
description: Seconds; turns on if off; zero cancels
# Breeze
- id: breeze_on
label: Breeze On
kind: action
params: []
- id: breeze_off
label: Breeze Off
kind: action
params: []
- id: set_breeze
label: Set Breeze
kind: action
params:
- name: breeze
type: array
description: "[mode, mean, var] - mode 0=disabled/1=enabled, mean 0-100, var 0-100"
# Shade/Motor control
- id: open
label: Open
kind: action
params: []
- id: close
label: Close
kind: action
params: []
- id: toggle_open
label: Toggle Open
kind: action
params: []
- id: raise
label: Raise
kind: action
params: []
- id: lower
label: Lower
kind: action
params: []
- id: retract
label: Retract
kind: action
params: []
- id: extend
label: Extend
kind: action
params: []
# Position
- id: set_position
label: Set Position
kind: action
params:
- name: position
type: integer
description: Position percentage (0-100)
# Tilt
- id: set_tilt_position
label: Set Tilt Position
kind: action
params:
- name: position
type: integer
description: Tilt degrees
- id: toggle_tilt
label: Toggle Tilt
kind: action
params: []
# Color Temp
- id: set_color_temp
label: Set Color Temperature
kind: action
params:
- name: int
type: integer
description: Color temperature in Kelvin
- id: increase_color_temp
label: Increase Color Temperature
kind: action
params:
- name: int
type: integer
description: Amount to increase
- id: decrease_color_temp
label: Decrease Color Temperature
kind: action
params:
- name: int
type: integer
description: Amount to decrease
# Color (HSV)
- id: set_hsv
label: Set HSV Color
kind: action
params:
- name: h
type: integer
description: Hue (0-359)
- name: s
type: integer
description: Saturation (0-100)
- name: v
type: integer
description: Value (0-100)
- id: cycle_color
label: Cycle Color
kind: action
params:
- name: amount
type: integer
description: Hue increase amount
- id: cycle_color_preset
label: Cycle Color Preset
kind: action
params: []
# Heat / Flame
- id: set_heat
label: Set Heat
kind: action
params:
- name: heat
type: integer
description: Heat level (1-100)
- id: increase_heat
label: Increase Heat
kind: action
params:
- name: heat
type: integer
description: Amount to increase
- id: decrease_heat
label: Decrease Heat
kind: action
params:
- name: heat
type: integer
description: Amount to decrease
- id: heat_preset_next
label: Heat Preset Next
kind: action
params: []
- id: heat_preset_prev
label: Heat Preset Previous
kind: action
params: []
- id: set_flame
label: Set Flame
kind: action
params:
- name: flame
type: integer
description: Flame level (1-100)
- id: increase_flame
label: Increase Flame
kind: action
params:
- name: flame
type: integer
description: Amount to increase
- id: decrease_flame
label: Decrease Flame
kind: action
params:
- name: flame
type: integer
description: Amount to decrease
# FP Fan
- id: turn_fp_fan_on
label: Turn FP Fan On
kind: action
params: []
- id: turn_fp_fan_off
label: Turn FP Fan Off
kind: action
params: []
- id: set_fp_fan
label: Set FP Fan Speed
kind: action
params:
- name: speed
type: integer
description: FP Fan speed (1-100)
# Hold / Stop / Preset
- id: hold
label: Hold
kind: action
params: []
- id: stop
label: Stop
kind: action
params: []
- id: preset
label: Preset
kind: action
params: []
# Pair
- id: pair
label: Pair
kind: action
params: []
- id: unpair
label: Unpair
kind: action
params: []
- id: unpair_self
label: Unpair Self
kind: action
params: []
# Dimmer
- id: start_dimmer
label: Start Dimmer
kind: action
params: []
- id: start_up_light_dimmer
label: Start Up Light Dimmer
kind: action
params: []
- id: start_down_light_dimmer
label: Start Down Light Dimmer
kind: action
params: []
- id: start_increasing_brightness
label: Start Increasing Brightness
kind: action
params: []
- id: start_decreasing_brightness
label: Start Decreasing Brightness
kind: action
params: []
Feedbacks
- id: device_list
type: object
description: List of device IDs - GET /v2/devices returns {"_":"hash","device_id":{"_":"hash"}}
- id: device_state
type: object
description: "State variables: power, speed, light, brightness, timer, breeze, direction, etc."
- id: device_properties
type: object
description: "Device properties: trust_state, addr, freq, bps, zero_gap, feature_light, etc."
- id: token_response
type: object
description: "Token endpoint response: locked, pin_attempts_left, token, nonce"
Variables
# Settable state via PATCH /v2/devices/{id}/state:
- id: power
type: integer
values: [0, 1]
- id: speed
type: integer
description: 1 to max_speed
- id: light
type: integer
values: [0, 1]
- id: brightness
type: integer
description: 1-100 percentage
- id: timer
type: integer
description: Seconds remaining, 0 = no timer
- id: direction
type: integer
values: [1, -1]
- id: breeze
type: array
description: "[mode, mean, var]"
- id: position
type: integer
description: 0-100 for shades
- id: tilt_position
type: integer
description: Degrees
- id: color_temp
type: integer
description: Kelvin
- id: hsv
type: object
description: "{h: 0-359, s: 0-100, v: 0-100}"
- id: heat
type: integer
description: 1-100
- id: flame
type: integer
description: 1-100
- id: battery
type: integer
description: 0-100 percentage
- id: signal
type: integer
description: 0-100 signal quality
Events
# BPUP (UDP push on port 30007):
# Keep-Alive: send newline; subscription ack: {"B":"ZZBL12345"}\n
# Update format: {"B":"bond_id","d":discoverability,"v":"fw_ver","t":"topic","i":"request_id","s":200,"m":method,"f":flags,"b":body}\n
#
# MQTT: subscribes v2/<bond_id>/down/#, publishes v2/<bond_id>/up/<subtopic>
# Same message format as BPUP.
#
# Discoverability values:
# 0 = not discoverable (Bond on account)
# 1 = setup mode (not on account, green light ring)
# 2 = SOS mode (on account but cloud connection problem)
#
# UNRESOLVED: explicit push event types not enumerated in source - consult BPUP topic paths for subscribed events
Macros
# Scene execution: PUT /v2/scenes/{scene_id}/run
# Body: {"name":"Privacy","actors":[{"device":"aabbccdd","action":"TurnOn"},{"group":"11223344","action":"SetBrightness","argument":50}]}
# Blocks until all member devices execute action (timeout ≤7 seconds).
#
# Schedule (Sked): POST /v2/devices/{device_id}/skeds
# Body: {"enabled":true,"action":"SetBrightness","argument":80,"seconds":-3600,"days_of_week":[false,true,true,true,true,false],"mark":"sunset"}
# Requires sys/time.tz for midnight mark, sys/time.grid+sys/time.tz for solar marks.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures in source
Notes
Token acquisition: Token available from /v2/token within 10 minutes of power cycle. Token required for all endpoints except /v2/sys/version and /v2/token. Provide via BOND-Token HTTP header or _token field in request body.
IP discovery: mDNS — ping BBxxxxx.local, avahi-browse -a | grep bond (Linux), dns-sd -B _bond._tcp . (MacOS).
64-bit IDs: v3.0.0+ uses 64-bit (16-hex) resource identifiers. API accepts both 32-bit (v2.x) and 64-bit formats.
Hash tree: Nodes have _ hash (32-bit) changed on modification. Child values replaced with hashes when not expanded.
Request ID: _request_id (HTTP) or i (BPUP/MQTT) enables retry-safe non-idempotent requests (PUT, POST, PATCH, DELETE).
Action timeout: PUT /v2/devices/{device_id}/actions/{action_name} blocks up to 7 seconds for confirmation.
BPUP keep-alive: Send newline every 60 seconds; Bond stops push after 125 seconds without keep-alive. Port 30007.
Provenance
source_domains:
- docs-local.appbond.com
- github.com
source_urls:
- https://docs-local.appbond.com/
- https://github.com/bondhome/api-v2
retrieved_at: 2026-04-29T12:56:15.451Z
last_checked_at: 2026-06-02T21:56:32.599Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:56:32.599Z
matched_actions: 57
action_count: 57
confidence: medium
summary: "All 57 spec actions traced to source. (7 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "port number not explicitly stated in source — no default port stated for HTTP"
- "explicit push event types not enumerated in source - consult BPUP topic paths for subscribed events"
- "no safety warnings or interlock procedures in source"
- "HTTP port not explicitly stated in source"
- "MQTT broker address/port not stated"
- "firmware version compatibility not stated"
- "voltage/power specifications not in source"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0