Summary
Video door station with HTTP REST API for local LAN integration. Supports live video/audio streaming, door relay control, light control, motion/doorbell event monitoring, SIP VoIP, and schedule-based automation. Control via HTTP CGI endpoints on TCP 80 (HTTP) or TCP 443 (HTTPS). Event notifications via UDP broadcasts on ports 6524/35344.
Transport
protocols:
- http
- tcp
- udp
addressing:
port: 80
https_port: 443
rtsp_port: 554
rtsp_http_port: 8557
sip_port: 5060
udp_ports:
- 6524
- 35344
base_url: http://<device-ip>/bha-api/
auth:
type: basic # Basic or Digest auth per RFC 2617
# Alternative: http-user/http-password query params (insecure)
# UNRESOLVED: HTTPS certificate validation details not stated
Traits
- queryable # info.cgi, sip.cgi?action=status
- levelable # mic_volume, spk_volume, relay1_passcode
- routable # input/output routing via schedules (doorbell, motion, rfid, fingerprint events)
Actions
- id: open_door
label: Open Door
kind: action
params:
- name: r
type: string
description: "Relay to trigger. Format '1' or '2' for physical relays, 'doorcontrollerID@relay' for paired IP I/O DoorController. Default: relay1"
- id: light_on
label: Light On
kind: action
params: []
- id: video_stream
label: Live Video Stream (MJPG)
kind: action
params: []
description: "Returns multipart JPEG live video stream (up to 8 fps). Content-Type: multipart/x-mixed-replace. Permission: watch always or ring event within 5 minutes."
- id: audio_receive
label: Live Audio Receive
kind: action
params: []
description: "GET real-time audio G.711 μ-law (8000 Hz) from device. Permission: watch always or ring event within 5 minutes."
- id: audio_transmit
label: Live Audio Transmit
kind: action
params: []
description: "POST G.711 μ-law audio (8000 Hz) to device. Only one consumer can transmit at a time. Permission: watch always or ring event within 5 minutes. Client must perform AEC/ANR."
- id: get_live_image
label: Get Live Image
kind: action
params: []
- id: get_history_image
label: Get History Image
kind: action
params:
- name: index
type: integer
description: "History index 1..50, where 1 is latest"
- name: event
type: string
description: "doorbell or motionsensor"
- id: monitor_events
label: Monitor Events
kind: action
params:
- name: ring
type: string
description: "doorbell,motionsensor"
description: "Returns continuous multipart stream of doorbell and motionsensor states. States: H (high/active), L (low/inactive). Up to 8 concurrent streams allowed."
- id: get_info
label: Get Device Info
kind: action
params: []
- id: get_session
label: Get Session ID
kind: action
params:
- name: invalidate
type: string
description: "Session ID to invalidate (optional)"
- id: list_favorites
label: List Favorites
kind: action
params: []
- id: save_favorite
label: Save Favorite
kind: action
params:
- name: action
type: string
const: save
- name: type
type: string
description: "sip or http"
- name: title
type: string
- name: value
type: string
description: "URL or SIP target"
- name: id
type: integer
description: "Optional: ID of existing favorite to change"
- id: delete_favorite
label: Delete Favorite
kind: action
params:
- name: action
type: string
const: remove
- name: type
type: string
- name: id
type: integer
- id: list_schedules
label: List Schedules
kind: action
params: []
- id: save_schedule
label: Save Schedule
kind: action
params:
- name: input
type: string
description: "doorbell, motion, rfid, or fingerprint"
- name: param
type: string
description: "Doorbell number, transponder ID, or fingerprint ID"
- name: output
type: array
description: "JSON array of output action configurations"
- id: delete_schedule
label: Delete Schedule
kind: action
params:
- name: action
type: string
const: remove
- name: input
type: string
- name: param
type: string
- id: restart_device
label: Restart Device
kind: action
params: []
- id: sip_registration
label: SIP Registration
kind: action
params:
- name: action
type: string
const: registration
- name: user
type: string
- name: password
type: string
- name: url
type: string
description: "SIP Proxy IP/hostname"
- id: sip_make_call
label: SIP Make Call
kind: action
params:
- name: action
type: string
const: makecall
- name: url
type: string
description: "SIP URL to call"
- id: sip_hangup
label: SIP Hangup
kind: action
params:
- name: action
type: string
const: hangup
- id: sip_settings
label: SIP Settings
kind: action
params:
- name: action
type: string
const: settings
- name: enable
type: integer
description: "0 or 1"
- name: mic_volume
type: integer
description: "1..100"
- name: spk_volume
type: integer
description: "1..100"
- name: dtmf
type: integer
description: "0 or 1"
- name: relay1_passcode
type: integer
description: "0..99999999"
- name: incoming_call_enable
type: integer
description: "0 or 1"
- name: incoming_call_user
type: string
- name: anc
type: integer
description: "0 or 1"
- name: ring_time_limit
type: integer
description: "10..300 seconds"
- name: call_time_limit
type: integer
description: "30..300 seconds"
- id: sip_status
label: SIP Status
kind: action
params:
- name: action
type: string
const: status
- id: sip_reset
label: SIP Reset
kind: action
params:
- name: action
type: string
const: reset
Feedbacks
- id: doorbell_event
type: string
description: "doorbell state: H (high/active) or L (low/inactive)"
- id: motion_sensor_event
type: string
description: "motionsensor state: H or L"
- id: sip_last_error
type: object
properties:
- LASTERRORCODE
- LASTERRORTEXT
- id: device_info
type: object
properties:
- FIRMWARE
- BUILD_NUMBER
- PRIMARY_MAC_ADDR
- RELAYS
- DEVICE-TYPE
- id: session_id
type: string
description: "Temporary session ID valid 10 minutes"
- id: notification_encryption_key
type: string
description: "32-64 byte key for decrypting UDP event broadcasts"
Variables
- id: mic_volume
type: integer
range: [1, 100]
default: 33
- id: spk_volume
type: integer
range: [1, 100]
default: 70
- id: dtmf_enabled
type: boolean
default: false
- id: relay1_passcode
type: integer
range: [0, 99999999]
- id: anc_enabled
type: boolean
default: true
- id: ring_time_limit
type: integer
range: [10, 300]
default: 300
- id: call_time_limit
type: integer
range: [30, 300]
default: 300
Events
# UDP broadcast events (ChaCha20-Poly1305 encrypted v2)
# Ports: 6524, 35344
# Keep-alive packets every 7 seconds - skip these
- id: doorbell_ring
fields:
- INTERCOM_ID # First 6 chars of username
- EVENT # "doorbell" or "motion"
- TIMESTAMP # Unix timestamp
- id: motion_detected
fields:
- INTERCOM_ID
- EVENT
- TIMESTAMP
Macros
# No explicit multi-step macros in source
# UNRESOLVED: populate from source if present
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: populate from source if explicit safety warnings exist
Notes
- Rate limit: 1 concurrent API connection per second; 423 response after wrong auth; 503 when line busy
- UDP event monitoring requires ChaCha20-Poly1305 decryption (libsodium); session key from getsession.cgi
- Audio codec: G.711 μ-law only (8000 Hz); client must handle AEC/ANR
- Video streaming: MJPG via HTTP (up to 8 fps) or MPEG4 H.264 via RTSP (up to 12 fps)
- SIP call auto-terminates after 180 seconds; P2P mode available from firmware 000099
- Live stream permission: "watch always" or ring event within 5 minutes (doorbell/video) / 1 minute (image)
- Video/audio stream precedence: official DoorBird App takes priority over LAN API
- HTTPS uses self-signed certificate; CA does not issue certs for IP addresses
- Session ID for video/audio streaming: obtain via getsession.cgi, append as parameter to avoid plaintext credentials
- SIP permissions: requires "API-Operator" permission for makecall/settings/registration
- Monitor stream: up to 8 concurrent streams; returns HTTP 509 when all busy
- RTSP paths: /mpeg/media.amp (default), /mpeg/720p/media.amp (firmware 129+, D21x), /mpeg/1080p/media.amp (D11x only)
- SIP: 1 simultaneous call; DTMF can trigger relay1_passcode; 3 second minimum between SIP requests
- Permissions model: watch always, history, motion, API-Operator (managed via DoorBird App Administration)
Provenance
source_domains:
- doorbird.com
source_urls:
- "https://www.doorbird.com/downloads/api_lan.pdf?rev=0.36"
retrieved_at: 2026-05-13T00:49:07.900Z
last_checked_at: 2026-06-03T06:39:18.223Z
Verification Summary
verdict: verified
checked_at: 2026-06-03T06:39:18.223Z
matched_actions: 23
action_count: 23
confidence: medium
summary: "Perfect match: all 23 actions cross-verified (7 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "RS-232 serial control not documented in source"
- "HTTPS certificate validation details not stated"
- "populate from source if present"
- "populate from source if explicit safety warnings exist"
- "RS-232 serial protocol not documented in source"
- "factory reset procedure not documented in source"
- "firmware version compatibility not stated (only specific examples: 000096, 000099, 000108, 000109, 000110, 000129)"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0