Summary
External ASCII API for Yealink video conferencing systems (VC110/VC120/VC400/VC500/VC800/VC880) over TCP port 6024 or RS-232 serial. Each command is a single line terminated with \r\n; commands are case sensitive and use half-width input. The API exposes call control, contact/history query, camera PTZ and presets, input source selection, layout, mute, volume, DND, system status, version, and a button namespace that emulates remote control key presses. Several commands also produce unsolicited feedback on state change.
Transport
protocols:
- tcp
- serial
addressing:
port: 6024
serial:
baud_rate: 115200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none # UNRESOLVED: flow control not stated in source
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable # inferred from button power command
- routable # inferred from inputsource and layout command set
- queryable # inferred from callinfo/history/sysstatus/version query commands
- levelable # inferred from volume get/up/down/set commands
Actions
- id: answer
label: Answer or Refuse Call
kind: action
command: 'answer <yes|no>'
params:
- name: response
type: enum
values: [yes, no]
description: yes = answer incoming call, no = refuse incoming call
- id: addrbook_all
label: Get All Contacts
kind: query
command: 'addrbook all'
params: []
- id: addrbook_get_all
label: Get All Contacts Of Type
kind: query
command: 'addrbook <local|conf> get all'
params:
- name: type
type: enum
values: [local, conf]
description: Contact type: local or conference
- id: addrbook_get_n
label: Get First N Contacts Of Type
kind: query
command: 'addrbook <local|conf> get {1..n}'
params:
- name: type
type: enum
values: [local, conf]
- name: count
type: integer
description: Positive integer, number of contacts to retrieve
- id: addrbook_search
label: Search Contacts
kind: query
command: 'addrbook search "searchstring"'
params:
- name: searchstring
type: string
- id: button_power
label: Power Button (Remote Emulation)
kind: action
command: 'button power'
params: []
- id: button_f1
label: F1 Button (Red / Record)
kind: action
command: 'button F1'
params: []
notes: VC110/VC120/VC400: red button. VC500/VC800/VC880: recording button.
- id: button_f2
label: F2 Button (Yellow / Layout)
kind: action
command: 'button F2'
params: []
notes: VC110/VC120/VC400: yellow button. VC500/VC800/VC880: layout button.
- id: button_f3
label: F3 Button (Blue / Custom)
kind: action
command: 'button F3'
params: []
notes: VC110/VC120/VC400: blue button. VC500/VC800/VC880: custom (Presentation/Input/Screenshot/Mute Speaker).
- id: button_volume_up
label: Volume Up Button
kind: action
command: 'button volume+'
params: []
- id: button_volume_down
label: Volume Down Button
kind: action
command: 'button volume-'
params: []
- id: button_zoom_in
label: Camera Zoom In Button
kind: action
command: 'button zoom+'
params: []
- id: button_zoom_out
label: Camera Zoom Out Button
kind: action
command: 'button zoom-'
params: []
- id: button_arrow_up
label: Arrow Up Button
kind: action
command: 'button up'
params: []
- id: button_arrow_down
label: Arrow Down Button
kind: action
command: 'button down'
params: []
- id: button_arrow_right
label: Arrow Right Button
kind: action
command: 'button right'
params: []
- id: button_arrow_left
label: Arrow Left Button
kind: action
command: 'button left'
params: []
- id: button_select
label: OK / Select Button
kind: action
command: 'button select'
params: []
- id: button_mute
label: Mute Button
kind: action
command: 'button mute'
params: []
- id: button_home
label: Home Button
kind: action
command: 'button home'
params: []
- id: button_show
label: Video Source Button (VC110/VC120/VC400 only)
kind: action
command: 'button show'
params: []
- id: button_back
label: Back Button (VC500/VC800/VC880 only)
kind: action
command: 'button back'
params: []
- id: button_call
label: Off-Hook Button
kind: action
command: 'button call'
params: []
- id: button_delete
label: Delete Button
kind: action
command: 'button delete'
params: []
- id: button_hangup
label: On-Hook Button
kind: action
command: 'button hangup'
params: []
- id: button_digit
label: Numeric / * / # Button
kind: action
command: 'button <1|2|3|4|5|6|7|8|9|0|*|#>'
params:
- name: digit
type: enum
values: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "*", "#"]
notes: VC110/VC120/VC400: * starts recording, # captures screenshot. VC500/VC800/VC880: no special behaviour.
- id: button_recordstart
label: Start Recording Button
kind: action
command: 'button recordstart'
params: []
- id: button_recordstop
label: Stop Recording Button
kind: action
command: 'button recordstop'
params: []
- id: button_screenshot
label: Screenshot Button
kind: action
command: 'button screenshot'
params: []
- id: camera_near_move
label: Near Camera Continuous Move
kind: action
command: 'camera near move <left|right|up|down|zoom+|zoom-|stop>'
params:
- name: direction
type: enum
values: [left, right, up, down, "zoom+", "zoom-", stop]
- id: camera_near_getposition
label: Near Camera Get PTZ Position
kind: query
command: 'camera near getposition'
params: []
notes: Returns pan(x:0-1920) tilt(y:0-1080) zoom(z:0-100) of currently selected PTZ camera.
- id: camera_near_setposition
label: Near Camera Set PTZ Position
kind: action
command: 'camera near setposition "x" "y" "z"'
params:
- name: x
type: integer
description: pan 0-1920
- name: y
type: integer
description: tilt 0-1080
- name: z
type: integer
description: zoom 0-100
- id: camera_near_get_id_list
label: Get Connected Camera List
kind: query
command: 'camera near get_id_list'
params: []
notes: Returns up to 9 camera ids.
- id: camera_near_get_id_detail
label: Get Camera Detail
kind: query
command: 'camera near get_id_detial "id:int"'
params:
- name: id
type: integer
notes: Returns id, status, name, default, ip, mac.
- id: camera_near_set_active_status
label: Activate Camera
kind: action
command: 'camera near set_active_status "id:int"'
params:
- name: id
type: integer
- id: camera_near_move_id
label: Move Camera By Id
kind: action
command: 'camera near move_id "id:int" "direct:int"|stop'
params:
- name: id
type: integer
- name: direction
type: integer
description: '2=down, 4=up, 6=right, 8=left, or stop'
notes: Use `stop` to halt movement.
- id: camera_near_zoom_id
label: Zoom Camera By Id
kind: action
command: 'camera near zoom_id "id:int" "direct:int"|stop'
params:
- name: id
type: integer
- name: direction
type: integer
description: '0=zoom out, 1=zoom in, or stop'
- id: callinfo_all
label: Get All Call Statistics
kind: query
command: 'callinfo all'
params: []
notes: Returns audio and video callinfo rows with codec/resolution/bitrate/jitter/packet loss fields.
- id: callinfo_callid
label: Get Call Statistics By Callid
kind: query
command: 'callinfo callid "callid"'
params:
- name: callid
type: string
- id: dial_auto
label: Dial With Default Type/Protocol
kind: action
command: 'dial auto "dialstring"'
params:
- name: dialstring
type: string
notes: May pass multiple dialstrings for conference contact dialing.
- id: dial_manual
label: Manual Dial With Type/Protocol/Bandwidth
kind: action
command: 'dial manual <video|audio|auto> <auto|sip|h323> "speed" "dialstring"'
params:
- name: calltype
type: enum
values: [video, audio, auto]
- name: protocol
type: enum
values: [auto, sip, h323]
- name: speed
type: string
description: Bandwidth string, e.g. "auto" or "1024"
- name: dialstring
type: string
- id: donotdisturb_global
label: DND Global Get/On/Off
kind: action
command: 'donotdisturb global <get|on|off>'
params:
- name: mode
type: enum
values: [get, "on", "off"]
- id: donotdisturb_talk
label: DND During Call Get/On/Off
kind: action
command: 'donotdisturb talk <get|on|off>'
params:
- name: mode
type: enum
values: [get, "on", "off"]
- id: gendial
label: Generate DTMF Tone
kind: action
command: 'gendial <0|1|2|3|4|5|6|7|8|9|#|*>'
params:
- name: digit
type: enum
values: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "#", "*"]
- id: getcallid
label: Get Call IDs For Active Connections
kind: query
command: 'getcallid'
params: []
- id: history_all
label: Get All Call History
kind: query
command: 'history all'
params: []
- id: history_get_all
label: Get All Call History Of Type
kind: query
command: 'history <placed|received|misscalled> get all'
params:
- name: type
type: enum
values: [placed, received, misscalled]
- id: history_get_n
label: Get First N Call History Of Type
kind: query
command: 'history <placed|received|misscalled> get {1..n}'
params:
- name: type
type: enum
values: [placed, received, misscalled]
- name: count
type: integer
- id: inputsource_camera
label: Set Camera As Video Source
kind: action
command: 'inputsource camera'
params: []
- id: inputsource_pc
label: Set PC As Video Source
kind: action
command: 'inputsource pc'
params: []
- id: inputsource_share
label: Set PC + Camera As Video Source
kind: action
command: 'inputsource share'
params: []
notes: PC+camera may be selected only during a call.
- id: layout_near_get
label: Get Local Video Layout
kind: query
command: 'layout near get'
params: []
notes: Not applicable to VC110/VC120/VC400.
- id: layout_near_get_list
label: Get Supported Local Layout Modes
kind: query
command: 'layout near get list'
params: []
notes: Not applicable to VC110/VC120/VC400.
- id: layout_near_set
label: Set Local Video Layout
kind: action
command: 'layout near set <layoutmode> <idlist>'
params:
- name: layoutmode
type: enum
values: [equal, surround, fullscreen, share, pip, empspk]
- name: idlist
type: string
description: callid, or pc | share | camera
notes: Not applicable to VC110/VC120/VC400.
- id: layout_near_camera_layout_get
label: Get Multi-Camera Layout
kind: query
command: 'layout near camera_layout_get'
params: []
notes: Not applicable to VC110/VC120/VC400.
- id: layout_near_camera_layout_set
label: Set Multi-Camera Layout
kind: action
command: 'layout near camera_layout_set <layoutmode> <idlist>'
params:
- name: layoutmode
type: enum
values: [equal, surround, fullscreen]
- name: idlist
type: string
description: camera id list (per camera near get_id_list)
notes: Not applicable to VC110/VC120/VC400.
- id: mute_near
label: Local Mute Get/On/Off/Toggle
kind: action
command: 'mute near <get|on|off|toggle>'
params:
- name: mode
type: enum
values: [get, "on", "off", toggle]
- id: preset_near_go
label: Recall Camera Preset
kind: action
command: 'preset near go <0|1|2|3|4|5|6|7|8|9>'
params:
- name: preset
type: enum
values: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
- id: preset_near_set
label: Save Camera Preset
kind: action
command: 'preset near set <0|1|2|3|4|5|6|7|8|9>'
params:
- name: preset
type: enum
values: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
- id: storage_get
label: Get USB Storage Status
kind: query
command: 'storage get'
params: []
- id: sysstatus_get
label: Get System Status
kind: query
command: 'sysstatus get'
params: []
notes: Returns sleeping/idle/outgoing/ringing/talking/finished/talking max.
- id: volume_get
label: Get Audio Volume
kind: query
command: 'volume get'
params: []
- id: volume_up
label: Volume Up
kind: action
command: 'volume up'
params: []
- id: volume_down
label: Volume Down
kind: action
command: 'volume down'
params: []
- id: volume_set
label: Set Audio Volume
kind: action
command: 'volume set {0..10}'
params:
- name: level
type: integer
description: '0..10'
- id: version
label: Query Device Version
kind: query
command: 'version'
params: []
notes: Returns model, firmware, hardware, productId, cc_version.
Feedbacks
- id: incoming_call
type: string
description: Active feedback when an incoming call arrives.
pattern: 'incoming "num:string" "name:string"'
- id: sysstatus
type: enum
values: [sleeping, idle, outgoing, ringing, talking, finished, "talking max"]
description: Active feedback of system state; emitted on state change and as reply to sysstatus get.
- id: donotdisturb_global_status
type: enum
values: ["on", "off"]
description: Active feedback when global DND state changes.
pattern: 'donotdisturb global get <on|off>'
- id: donotdisturb_talk_status
type: enum
values: ["on", "off"]
description: Active feedback when in-call DND state changes.
pattern: 'donotdisturb talk get <on|off>'
- id: mute_near_status
type: enum
values: ["on", "off"]
description: Active feedback when local mute state changes.
pattern: 'mute near get <on|off>'
- id: storage_status
type: enum
values: [available, unavailable]
description: Active feedback when USB storage availability changes.
pattern: 'storage get <available|unavailable>'
- id: version_info
type: string
description: Active feedback sent on first LAN/serial connection establishment.
pattern: 'version "model:..." "firmware:..." "hardware:..." "productId:..." "cc_version:..."'
Events
# Unsolicited notifications are documented inline under Feedbacks. The following
# commands produce active feedback independent of a query: incoming,
# donotdisturb global/talk status changes, mute near status changes, storage
# status changes, sysstatus state transitions, version (on connect).
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source does not document safety warnings, interlock procedures,
# or power-on sequencing requirements.
Notes
- All commands are case sensitive, half-width, and end with
\r\n. - Some commands have model-specific behaviour: layout commands are not applicable to VC110/VC120/VC400;
button showis VC110/VC120/VC400 only;button backis VC500/VC800/VC880 only; on VC110/VC120/VC400 the*digit starts recording and#captures screenshot, while on VC500/VC800/VC880 these digits have no special behaviour. - Multiple
sysstatusstates may be reported in a single response (e.g. ongoing call plus incoming call); the system does not continuously emit status, only at state transitions and on H.323 audio↔video switch. callinforows include many per-stream fields (TotalBw, VRes, VCodec, VFr, VJr, Vtpl/Vtplp, A* audio equivalents, S* content-share fields). See source for the full field list.- On the first LAN or serial configuration the device emits a one-shot
versionline. - Error responses:
error: command has illegal parameters\r\nanderror: command not found\r\n. - Document scope: this spec covers the VC110/VC120/VC400/VC500/VC800/VC880 line. Newer MVC/ZVC room-system kits (MVC S40/S50/S80/S90/S98, ZVC S90) are not explicitly documented in the refined source.
Provenance
source_domains:
- support-cdn.yealink.com
- applicationmarket.crestron.com
- voipinfo.net
- support.yealink.com
source_urls:
- https://support-cdn.yealink.com/attachment/upload/attachment/2019-12-19/5/ea3f2d1b-51d1-43db-86f8-ba1b1f133d04/API_Commands_Introduction_for_Yealink_Video_Conferencing_System_V1.08.pdf
- "https://applicationmarket.crestron.com/content/Help/Yealink/Yealink%20VC%20Series%20RS232%20v1.0%20Help.pdf"
- https://www.voipinfo.net/docs/yealink/API_Commands_Introduction_for_Yealink_Video_Conferencing_System_V1.06.pdf
- https://support.yealink.com
retrieved_at: 2026-06-12T06:13:52.597Z
last_checked_at: 2026-06-12T20:02:36.962Z
Verification Summary
verdict: verified
checked_at: 2026-06-12T20:02:36.962Z
matched_actions: 66
action_count: 66
confidence: medium
summary: "All 66 spec actions confirmed verbatim in source; transport (TCP 6024, baud 115200, 8N1) matches source exactly; feedbacks cover incoming/sysstatus/donotdisturb/mute/storage/version which are all documented in source. (4 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source uses examples with firmware 30.20.254.12 and 50.20.251.31 across different VC models; the compatible firmware range is not stated."
- "flow control not stated in source"
- "source does not document safety warnings, interlock procedures,"
- "firmware version compatibility, hardware revision compatibility, exact flow control setting for the serial transport, and authentication requirements (the source describes no login flow at all, so `none` is inferred)."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0