Summary

Cisco SX Series video conferencing endpoints (SX10, SX20, SX80) running Cisco Collaboration Endpoint (CE) Software. Exposes the Cisco xAPI — a hierarchical command/status/configuration/event API accessed via SSH, Telnet, HTTP/HTTPS, WebSocket, or RS-232 serial. Commands use the xCommand prefix; state is read via xStatus; persistent settings via xConfiguration; push notifications via xFeedback and xEvent. API structure is identical across all transport methods.

Transport

# SX Series supports SSH, Telnet (SX-series eligible), HTTP/HTTPS, WebSocket
# (over HTTP), and RS-232 serial. All transports expose the same xAPI.
# Telnet is disabled by default; SSH enabled by default; serial enabled by
# default. WebSocket requires HTTP/HTTPS enabled.
protocols:
  - tcp       # SSH, Telnet, HTTP/HTTPS, WebSocket all carried over TCP/IP
  - serial    # RS-232
addressing:
  # Source uses <ip-address> placeholders for all HTTP/SSH/Telnet URLs.
  # No explicit port number stated for any service.
  port: null  # UNRESOLVED: port numbers (SSH/Telnet/HTTP) not stated in source
  base_url: null  # UNRESOLVED: only "<ip-address>" host placeholder stated; no path base documented beyond per-endpoint paths
serial:
  baud_rate: 38400  # default for SX10 and SX80; SX20 defaults to 115200. Selectable: 9600/19200/38400/57600/115200. SX20 also uses 38400 briefly during initial boot sequence.
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none  # source: "Hardware flow control: Off"
auth:
  # Source documents authentication is required, not absent.
  # - SSH: passphrase mandatory for admin user (default user "admin", no
  #   passphrase set initially but must be set).
  # - HTTP XMLAPI: HTTP Basic Access Authentication as ADMIN-role user;
  #   unauthenticated requests get 401. Session auth via
  #   /xmlapi/session/begin (SessionId cookie) recommended for repeated calls.
  # - Serial: xConfiguration SerialPort LoginRequired On by default.
  type: basic  # HTTP XMLAPI uses HTTP Basic; SSH/serial use username+passphrase login
  notes: "ADMIN role required for HTTP XMLAPI. Default user 'admin' with mandatory passphrase. Session-based auth available over HTTP to avoid per-request re-authentication. Serial LoginRequired On by default."

Traits

# Inferred from documented command examples in source:
traits:
  - powerable    # inferred: Standby Activate/Deactivate/Halfwake commands present
  - queryable    # inferred: xStatus queries (Call, Audio Volume, Standby, etc.) return values
  - routable     # inferred: Video Matrix Assign/Swap, Audio Select, Presentation Start route sources
  - levelable    # inferred: Audio Volume Set Level, Camera PositionSet pan/tilt/zoom ranges

Actions

- id: x_command_audio_diagnostics_advanced_run
  label: "xCommand Audio Diagnostics Advanced Run"
  kind: action
  command: "xCommand Audio Diagnostics Advanced Run"
  params: []

- id: x_command_audio_diagnostics_aec_reverb_reset
  label: "xCommand Audio Diagnostics AecReverb Reset"
  kind: action
  command: "xCommand Audio Diagnostics AecReverb Reset"
  params: []

- id: x_command_audio_diagnostics_aec_reverb_run
  label: "xCommand Audio Diagnostics AecReverb Run"
  kind: action
  command: "xCommand Audio Diagnostics AecReverb Run"
  params: []

- id: x_command_audio_diagnostics_measure_delay
  label: "xCommand Audio Diagnostics MeasureDelay"
  kind: action
  command: "xCommand Audio Diagnostics MeasureDelay"
  params: []

- id: x_command_audio_equalizer_list
  label: "xCommand Audio Equalizer List"
  kind: action
  command: "xCommand Audio Equalizer List"
  params: []

- id: x_command_audio_equalizer_update
  label: "xCommand Audio Equalizer Update"
  kind: action
  command: "xCommand Audio Equalizer Update"
  params: []

- id: x_command_audio_local_input_add_add_connector_remove_remove_connector_update
  label: "xCommand Audio LocalInput Add / AddConnector / Remove / RemoveConnector / Update"
  kind: action
  command: "xCommand Audio LocalInput Add / AddConnector / Remove / RemoveConnector / Update"
  params: []

- id: x_command_audio_local_output_add_add_connector_remove_remove_connector_update_connect_input_disconnect_input_update_input_gain
  label: "xCommand Audio LocalOutput Add / AddConnector / Remove / RemoveConnector / Update / ConnectInput / DisconnectInput / UpdateInputGain"
  kind: action
  command: "xCommand Audio LocalOutput Add / AddConnector / Remove / RemoveConnector / Update / ConnectInput / DisconnectInput / UpdateInputGain"
  params: []

- id: x_command_audio_remote_output_connect_input_disconnect_input_update_input_gain
  label: "xCommand Audio RemoteOutput ConnectInput / DisconnectInput / UpdateInputGain"
  kind: action
  command: "xCommand Audio RemoteOutput ConnectInput / DisconnectInput / UpdateInputGain"
  params: []

- id: x_command_audio_select
  label: "xCommand Audio Select"
  kind: action
  command: "xCommand Audio Select"
  params: []

- id: x_command_audio_sound_play_stop
  label: "xCommand Audio Sound Play / Stop"
  kind: action
  command: "xCommand Audio Sound Play / Stop"
  params: []

- id: x_command_audio_speaker_check
  label: "xCommand Audio SpeakerCheck"
  kind: action
  command: "xCommand Audio SpeakerCheck"
  params: []

- id: x_command_audio_volume_decrease
  label: "xCommand Audio Volume Decrease"
  kind: action
  command: "xCommand Audio Volume Decrease"
  params: []

- id: x_command_audio_volume_increase
  label: "xCommand Audio Volume Increase"
  kind: action
  command: "xCommand Audio Volume Increase"
  params: []

- id: x_command_audio_volume_mute
  label: "xCommand Audio Volume Mute"
  kind: action
  command: "xCommand Audio Volume Mute"
  params: []

- id: x_command_audio_volume_set
  label: "xCommand Audio Volume Set"
  kind: action
  command: "xCommand Audio Volume Set"
  params: []

- id: x_command_audio_volume_set_to_default
  label: "xCommand Audio Volume SetToDefault"
  kind: action
  command: "xCommand Audio Volume SetToDefault"
  params: []

- id: x_command_audio_volume_toggle_mute
  label: "xCommand Audio Volume ToggleMute"
  kind: action
  command: "xCommand Audio Volume ToggleMute"
  params: []

- id: x_command_audio_volume_unmute
  label: "xCommand Audio Volume Unmute"
  kind: action
  command: "xCommand Audio Volume Unmute"
  params: []

- id: x_command_audio_vu_meter_start_stop_stop_all
  label: "xCommand Audio VuMeter Start / Stop / StopAll"
  kind: action
  command: "xCommand Audio VuMeter Start / Stop / StopAll"
  params: []

- id: x_command_audio_microphones_mute_unmute_toggle_mute
  label: "xCommand Audio Microphones Mute / Unmute / ToggleMute"
  kind: action
  command: "xCommand Audio Microphones Mute / Unmute / ToggleMute"
  params: []

- id: x_command_audio_microphones_music_mode_start_stop
  label: "xCommand Audio Microphones MusicMode Start / Stop"
  kind: action
  command: "xCommand Audio Microphones MusicMode Start / Stop"
  params: []

- id: x_command_audio_microphones_noise_removal_activate_deactivate
  label: "xCommand Audio Microphones NoiseRemoval Activate / Deactivate"
  kind: action
  command: "xCommand Audio Microphones NoiseRemoval Activate / Deactivate"
  params: []

- id: x_command_call_accept
  label: "xCommand Call Accept"
  kind: action
  command: "xCommand Call Accept"
  params: []

- id: x_command_call_disconnect
  label: "xCommand Call Disconnect"
  kind: action
  command: "xCommand Call Disconnect"
  params: []

- id: x_command_call_dtmfsend
  label: "xCommand Call DTMFSend"
  kind: action
  command: "xCommand Call DTMFSend"
  params: []

- id: x_command_call_far_end_control_camera_move
  label: "xCommand Call FarEndControl Camera Move"
  kind: action
  command: "xCommand Call FarEndControl Camera Move"
  params: []

- id: x_command_call_far_end_control_camera_stop
  label: "xCommand Call FarEndControl Camera Stop"
  kind: action
  command: "xCommand Call FarEndControl Camera Stop"
  params: []

- id: x_command_call_far_end_control_request_capabilities
  label: "xCommand Call FarEndControl RequestCapabilities"
  kind: action
  command: "xCommand Call FarEndControl RequestCapabilities"
  params: []

- id: x_command_call_far_end_control_room_preset_activate_store
  label: "xCommand Call FarEndControl RoomPreset Activate / Store"
  kind: action
  command: "xCommand Call FarEndControl RoomPreset Activate / Store"
  params: []

- id: x_command_call_far_end_control_source_select
  label: "xCommand Call FarEndControl Source Select"
  kind: action
  command: "xCommand Call FarEndControl Source Select"
  params: []

- id: x_command_call_far_end_message_send_sstring_send_tstring_send
  label: "xCommand Call FarEndMessage Send / SStringSend / TStringSend"
  kind: action
  command: "xCommand Call FarEndMessage Send / SStringSend / TStringSend"
  params: []

- id: x_command_call_forward_hold_ignore_join_reject_resume_unattended_transfer
  label: "xCommand Call Forward / Hold / Ignore / Join / Reject / Resume / UnattendedTransfer"
  kind: action
  command: "xCommand Call Forward / Hold / Ignore / Join / Reject / Resume / UnattendedTransfer"
  params: []

- id: x_command_camera_position_reset
  label: "xCommand Camera PositionReset"
  kind: action
  command: "xCommand Camera PositionReset"
  params: []

- id: x_command_camera_position_set
  label: "xCommand Camera PositionSet"
  kind: action
  command: "xCommand Camera PositionSet"
  params: []

- id: x_command_camera_preset_activate
  label: "xCommand Camera Preset Activate"
  kind: action
  command: "xCommand Camera Preset Activate"
  params: []

- id: x_command_camera_preset_activate_default_position
  label: "xCommand Camera Preset ActivateDefaultPosition"
  kind: action
  command: "xCommand Camera Preset ActivateDefaultPosition"
  params: []

- id: x_command_camera_preset_edit_list_remove_show_store
  label: "xCommand Camera Preset Edit / List / Remove / Show / Store"
  kind: action
  command: "xCommand Camera Preset Edit / List / Remove / Show / Store"
  params: []

- id: x_command_camera_ramp
  label: "xCommand Camera Ramp"
  kind: action
  command: "xCommand Camera Ramp"
  params: []

- id: x_command_camera_trigger_autofocus
  label: "xCommand Camera TriggerAutofocus"
  kind: action
  command: "xCommand Camera TriggerAutofocus"
  params: []

- id: x_command_dial
  label: "xCommand Dial"
  kind: action
  command: "xCommand Dial"
  params: []

- id: x_command_gpio_manual_state_set
  label: "xCommand GPIO ManualState Set"
  kind: action
  command: "xCommand GPIO ManualState Set"
  params: []

- id: x_command_presentation_start
  label: "xCommand Presentation Start"
  kind: action
  command: "xCommand Presentation Start"
  params: []

- id: x_command_presentation_stop
  label: "xCommand Presentation Stop"
  kind: action
  command: "xCommand Presentation Stop"
  params: []

- id: x_command_standby_activate
  label: "xCommand Standby Activate"
  kind: action
  command: "xCommand Standby Activate"
  params: []

- id: x_command_standby_deactivate
  label: "xCommand Standby Deactivate"
  kind: action
  command: "xCommand Standby Deactivate"
  params: []

- id: x_command_standby_halfwake
  label: "xCommand Standby Halfwake"
  kind: action
  command: "xCommand Standby Halfwake"
  params: []

- id: x_command_standby_reset_halfwake_timer
  label: "xCommand Standby ResetHalfwakeTimer"
  kind: action
  command: "xCommand Standby ResetHalfwakeTimer"
  params: []

- id: x_command_standby_reset_timer
  label: "xCommand Standby ResetTimer"
  kind: action
  command: "xCommand Standby ResetTimer"
  params: []

Feedbacks

Variables

# Settable persistent parameters exposed via xConfiguration (survive reboot).
# Full valuespace via xConfiguration ?? ; current values via xConfiguration.
# Examples documented in source:
- id: network_services_ssh_mode
  path: "xConfiguration NetworkServices SSH Mode"
  type: enum
  values: [Off, On]
  default: On

- id: network_services_telnet_mode
  path: "xConfiguration NetworkServices Telnet Mode"
  type: enum
  values: [Off, On]
  default: Off

- id: network_services_http_mode
  path: "xConfiguration NetworkServices HTTP Mode"
  type: enum
  values: [Off, "HTTP+HTTPS", HTTPS]

- id: network_services_websocket
  path: "xConfiguration NetworkServices WebSocket"
  type: enum
  values: [Off, FollowHTTPService]

- id: serialport_mode
  path: "xConfiguration SerialPort Mode"
  type: enum
  values: [Off, On]
  default: On

- id: serialport_baudrate
  path: "xConfiguration SerialPort BaudRate"
  type: enum
  values: [9600, 19200, 38400, 57600, 115200]
  default: 38400  # SX10/SX80; SX20 default is 115200

- id: serialport_login_required
  path: "xConfiguration SerialPort LoginRequired"
  type: enum
  values: [Off, On]
  default: On

- id: preferences_outputmode
  path: "xPreferences outputmode"
  type: enum
  values: [terminal, xml, json]
  default: terminal

Events

# Unsolicited xEvent notifications; subscribe via xFeedback register /Event/<...>
# or via HTTP feedback slots. Result depends on device state at emission time.
- id: outgoing_call_indication
  path: "/Event/OutgoingCallIndication"
  fields: [CallId]

- id: call_disconnect
  path: "/Event/CallDisconnect"
  fields: [CallId, CauseValue, CauseString, CauseType, OrigCallDirection, RemoteURI, CauseCode, CauseOrigin]
  # CauseType value space: OtherLocal, LocalDisconnect, UnknownRemoteSite,
  # LocalBusy, LocalReject, InsufficientSecurity, OtherRemote, RemoteDisconnect,
  # RemoteBusy, RemoteRejected, RemoteNoAnswer, CallForwarded, NetworkRejected

- id: call_successful
  path: "/Event/CallSuccessful"
  fields: [CallId, Protocol, Direction, CallRate, RemoteURI, EncryptionIn, EncryptionOut]

- id: fecc_action_indication
  path: "/Event/FeccActionInd"
  fields: [Id, Req, Pan, PanRight, Tilt, TiltUp, Zoom, ZoomIn, Focus, FocusIn, Timeout, VideoSrc]

- id: tstring_message_received
  path: "/Event/TString"
  fields: [CallId, Message]

- id: sstring_message_received
  path: "/Event/SString"
  fields: [String, Id]

Macros

# UNRESOLVED: no multi-step sequenced macros explicitly authored in source.
# Source documents xCommand Macros Macro Save/Activate/Rename for on-device
# JavaScript macros (out of scope for this control spec).

Safety

confirmation_required_for: []
interlocks:
  - "xCommand Audio Diagnostics AecReverb Reset is not allowed during a call."
warnings:
  - "Never register for all status feedback via 'xFeedback register /Status' - may overwhelm the control application and cause sluggish or unpredictable behavior."
  - "HTTP XMLAPI sessions are limited and do not time out automatically; explicitly close via POST /xmlapi/session/end when done or the device may run out of sessions."
  - "Serial baud rate change takes effect only after a device reboot."
  - "SX20 uses 38400 bps during initial boot sequence regardless of configured baud rate."
# UNRESOLVED: no explicit electrical/voltage interlocks or power-sequencing
# requirements stated in source.

Notes

  • API surface: Four hierarchical groups — xCommand (actions), xConfiguration (persistent settings), xStatus (current state), xEvent (notifications). Available commands vary by product, backend (on-prem/cloud), and user role (admin/audit/integrator/roomcontrol/user).
  • Case-insensitive: All commands case-insensitive. XCOMMAND DIAL, xcommand dial, xCommand Dial all valid.
  • Value formats: <x..y> integer range; <X/Y/Z> enum; <S: x, y> string with min/max length. Values containing spaces must be quoted.
  • Output modes: terminal (default, line-based), XML, JSON. Set per-session via xPreferences outputmode <mode>.
  • Async API: No guarantee responses arrive in command-issued order. Use | resultId="tag" for request/response matching (works with xcommand, xconfiguration, xstatus).
  • Multiline commands: Payload after command line, terminated by . on its own line. Used for in-room control definitions, branding images (base64), macros, banners, certificates.
  • Searching: // wildcard searches status/configuration hierarchy (e.g. xconfiguration //out//hdmi).
  • HTTP XMLAPI: GET /getxml?location=<path> retrieves documents; POST /putxml (Content-Type: text/xml) sends commands/configs. status.xml, configuration.xml, command.xml, valuespace.xml return full documents.
  • Feedback limits: 38 expressions per terminal session; 4 HTTP feedback slots × 15 expressions each. Feedback subscriptions are per-connection and must be re-registered after reconnect.
  • Telnet eligibility: Telnet available only on DX, MX, and SX series.
  • Serial eligibility: Serial API access not available on DX70, DX80, Room 55 Dual, Room 70 (does not affect SX Series).
  • User roles: USER (basic), AUDIT (certificates), ROOMCONTROL (UI panels), ADMIN (full config), INTEGRATOR (AV integration). ADMIN role required for HTTP XMLAPI.

## Provenance

```yaml
source_domains:
  - cisco.com
source_urls:
  - https://www.cisco.com/c/dam/en/us/td/docs/telepresence/endpoint/ce915/collaboration-endpoint-software-api-reference-guide-ce915.pdf
retrieved_at: 2026-06-25T10:06:05.938Z
last_checked_at: 2026-06-25T15:31:42.365Z
```

## Verification Summary

```yaml
verdict: verified
checked_at: 2026-06-25T15:31:42.365Z
matched_actions: 49
action_count: 49
confidence: medium
summary: "deterministic presence proof: 49/49 payloads verbatim in source; stratified Sonnet sample corroborated (10 unresolved item(s) noted in Known Gaps.)"
```

## Known Gaps

```yaml
- "exact TCP port numbers for SSH/Telnet/HTTP not stated in source (only IP-address placeholders shown)."
- "firmware version compatibility range across SX10/SX20/SX80 not separately stated; CE9.15 is the API guide revision."
- "port numbers (SSH/Telnet/HTTP) not stated in source"
- "only \"<ip-address>\" host placeholder stated; no path base documented beyond per-endpoint paths"
- "no multi-step sequenced macros explicitly authored in source."
- "no explicit electrical/voltage interlocks or power-sequencing"
- "exact SSH/Telnet/HTTP TCP port numbers not stated in source — only IP-address placeholders used throughout."
- "firmware version compatibility ranges per model not stated; CE9.15 is the API guide document revision only."
- "protocol version numbers for H.323/SIP not stated in this control-protocol section."
- "binary/byte-level framing for RS-232 not specified (text-line based command interface implied by examples)."
```

---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0