Summary

Magewell USB Fusion V2.0 is a multi-input video capture/streaming device with HDMI, USB webcam, and screencast sources. Control via REST HTTP API (JSON), firmware 2.4.68+. No serial control documented.

Transport

protocols:
  - http
addressing:
  base_url: "http://[device-ip]"  # stated: "Request Domain: The device network card IP (IPv4) address"
auth:
  type: session  # stated: session cookie sid-[serial-number]=xxx; password sha256 hash

Traits

- powerable       # block-goto-sleep, fall-to-sleep, wake/sleep events
- queryable       # get-summary-info, get-device-status, get-streaming-status, etc.
- routable        # set-launch-scene, switch-presentation, set-hdmi-output-mode
- levelable       # set-volume-config, set-audio-card-mixer, set-mic-gain

Actions

# General
- id: block_goto_sleep
  label: Prevent Device from Sleeping
  kind: action
  params:
    - name: block
      type: integer
      description: "0: No; 1: Yes"
- id: fall_to_sleep
  label: Put Device to Sleep
  kind: action
- id: reboot
  label: Reboot Device
  kind: action  # requires admin
- id: reset
  label: Reset Device
  kind: action  # requires admin
- id: set_launch_scene
  label: Set Landing Scene
  kind: action
  params:
    - name: launchScene
      type: integer
      description: Landing scene ID
- id: set_auto_switch_settings
  label: Set Auto Switch Policy
  kind: action
  params:
    - name: autoSwitchType
      type: integer
      description: "0: Disable; 2: Higher priority; 3: New signal"
    - name: autoSwitchSequence
      type: array
      description: "Signal priority: 1=HDMI 1, 2=HDMI 2, 3=WEBCAM, 31=Screencast"
- id: set_auto_backup
  label: Set Auto Backup
  kind: action
  params:
    - name: autoBackup
      type: integer
    - name: backupSchedule
      type: integer
    - name: backupStartTime
      type: integer
    - name: backupEndTime
      type: integer
- id: set_sleep_policy
  label: Set Sleep Policy
  kind: action
  params:
    - name: gotoSleep
      type: integer
      description: "0: Never; 1: 30min; 2: 1h; 3: 2h; 4: 4h; 5: 8h; 6: 12h"
- id: set_reboot_when_wake_up
  label: Set Reboot on Wake-up
  kind: action
  params:
    - name: rebootWhenWakeUp
      type: boolean
- id: set_usb_mirror
  label: Set Mirror USB-C Output
  kind: action
  params:
    - name: usbMirror
      type: integer
      description: "0: No; 1: Yes"

# App Settings
- id: set_app_pairing_status
  label: Start/Stop App Pairing
  kind: action
  params:
    - name: enable
      type: boolean
- id: set_app_password
  label: Set App Login Mode
  kind: action
  params:
    - name: pairingMode
      type: integer
      description: "0: Free login; 1: Password; 2: Pairing"
    - name: new-password
      type: string
- id: set_encoder_format
  label: Set Preview Quality
  kind: action
  params:
    - name: encodeMode
      type: integer
      description: "0: 720p; 1: 1080p; 2: Auto; 3: Customize"
    - name: resolution
      type: string
    - name: duration
      type: integer
    - name: video-bitrate
      type: integer
- id: set_network_port
  label: Set Network Protocol Port
  kind: action
  params:
    - name: control-port
      type: integer
      description: TCP control port
    - name: stream-port
      type: integer
      description: SRT stream port
- id: set_observer_settings
  label: Set Watcher
  kind: action
  params:
    - name: observerCount
      type: integer
      description: "0: None; 1: 1; 2: 2"
    - name: observerLocked
      type: boolean
    - name: observerAnnotateEnable
      type: boolean

# Input
- id: export_edid
  label: Export HDMI Input EDID
  kind: action
  params:
    - name: source-id
      type: integer
      description: "0: HDMI 1; 1: HDMI 2"
    - name: file-name
      type: string
- id: set_default_edid
  label: Restore Default HDMI Input EDID
  kind: action
  params:
    - name: smart-edid
      type: boolean
    - name: data
      type: string
- id: set_edid_config
  label: Change HDMI Input EDID
  kind: action
  params:
    - name: source-id
      type: integer
    - name: smart-edid
      type: boolean
    - name: data
      type: string
- id: set_video_config
  label: Change HDMI Video Source Config
  kind: action
  params:
    - name: source-id
      type: integer
    - name: in-auto-color-fmt
      type: boolean
    - name: in-color-fmt
      type: string
    - name: in-auto-quant-range
      type: boolean
    - name: in-quant-range
      type: string
    - name: brightness
      type: integer
    - name: contrast
      type: integer
    - name: hue
      type: integer
    - name: saturation
      type: integer
    - name: deinterlace
      type: string
    - name: out-mirror
      type: boolean
- id: set_webcam_config
  label: Change Web Camera Config
  kind: action
  params:
    - name: width
      type: integer
    - name: height
      type: integer
    - name: fps
      type: integer
    - name: fourcc
      type: string
    - name: out-mirror
      type: boolean
- id: set_webcam
  label: Switch Web Camera Device
  kind: action
  params:
    - name: dev-path
      type: string
- id: set_projection_screen_config
  label: Enable/Disable Screencast Protocols
  kind: action
  params:
    - name: airPlayEnable
      type: integer
    - name: miracastEnable
      type: integer
    - name: googleCastEnable
      type: integer
- id: set_screencast_bg_color
  label: Set Screencast Background Color
  kind: action
  params:
    - name: screencastBGColor
      type: integer
- id: set_screencast_cut_black_edge_enable
  label: Crop Black Bars for Screencast
  kind: action
  params:
    - name: cropBlackArea
      type: integer
      description: "1: Yes; 0: No"
- id: set_screencast_format_enable
  label: Overlay Screencast Image Size/Frame Rate
  kind: action
  params:
    - name: screencastFormatEnable
      type: integer
- id: set_screencast_name_enable
  label: Overlay Screencast Device Name
  kind: action
  params:
    - name: screencastNameEnable
      type: integer
- id: set_screencast_overlay_fade_out
  label: FTB for Screencast Overlay
  kind: action
  params:
    - name: screencastOverlayFadeOut
      type: integer
      description: "0: Never; 1: 5s; 2: 10s; 3: 20s; 4: 30s; 5: 1min"
- id: set_mirroring_passcode
  label: Set Screencast Security Authentication
  kind: action
  params:
    - name: mirroringVerificationMode
      type: integer
      description: "0: None; 1: Password; 2: Onscreen Code"
    - name: mirroringPasscode
      type: string

# Output
- id: export_output_edid
  label: Export HDMI Output EDID
  kind: action
  params:
    - name: file-name
      type: string
- id: set_hdmi_output_mode
  label: Set HDMI Output Image
  kind: action
  params:
    - name: mode
      type: integer
      description: "0: HDMI 1; 1: HDMI 2; 2: PROGRAM"
- id: set_hdmi_output_res
  label: Set HDMI Output Resolution
  kind: action
  params:
    - name: width
      type: integer
    - name: height
      type: integer
    - name: fps
      type: integer
- id: set_record_encoder_format
  label: Set Recording Parameters
  kind: action
  params:
    - name: duration
      type: integer
    - name: video-bitrate
      type: integer
    - name: resolution
      type: string
    - name: codeType
      type: integer
      description: "0: H.264; 1: H.265"
    - name: profile
      type: integer
    - name: encodingMode
      type: integer
      description: "0: VBR; 1: CBR"
    - name: keyframeInterval
      type: integer
    - name: audioBitrate
      type: integer
    - name: splitMode
      type: integer
    - name: splitBlock
      type: integer
    - name: fileNamePrefix
      type: string
    - name: savePath
      type: string
    - name: fileExtention
      type: integer
      description: "0: MP4; 1: MOV"
    - name: recordSourceId
      type: integer
    - name: recordWithAudio
      type: integer
    - name: scheduleMode
      type: integer
    - name: scheduleStartDate
      type: integer
    - name: scheduleEndDate
      type: integer
    - name: weeklyDate
      type: integer
    - name: scheduleRecordTime
      type: object
    - name: scheduleRecordCache
      type: array

# Album
- id: remove_album_file
  label: Delete Album Files
  kind: action
  params:
    - name: ids
      type: string
      description: File IDs, comma-separated

# Streaming
- id: add_rtmp
  label: Add RTMP Stream
  kind: action
  params:
    - name: type
      type: integer
      description: "1: RTMP"
    - name: name
      type: string
    - name: url
      type: string
    - name: streamKey
      type: string
    - name: authentication
      type: boolean
    - name: userName
      type: string
    - name: password
      type: string
    - name: autoSwitch
      type: boolean
    - name: encoder
      type: object
- id: update_rtmp
  label: Change RTMP Stream Configuration
  kind: action
  params:
    - name: id
      type: integer
    - name: type
      type: integer
    - name: name
      type: string
    - name: url
      type: string
    - name: streamKey
      type: string
    - name: authentication
      type: boolean
    - name: userName
      type: string
    - name: password
      type: string
    - name: autoSwitch
      type: boolean
    - name: encoder
      type: object
- id: remove_stream_server
  label: Delete Streaming Server
  kind: action
  params:
    - name: id
      type: integer
- id: start_streaming
  label: Start Streaming
  kind: action
  params:
    - name: id
      type: integer
- id: stop_streaming
  label: Stop Streaming
  kind: action
  params:
    - name: id
      type: integer

# Audio
- id: set_audio_card_mixer
  label: Set Sound Card Property
  kind: action
  params:
    - name: card
      type: integer
    - name: id
      type: integer
    - name: vol
      type: integer
      description: "0-100"
- id: set_mic_gain
  label: Set Mic Gain
  kind: action
  params:
    - name: gain
      type: integer
      description: "0: Disabled; 1: Enabled"
- id: set_mic_monitor
  label: Set Monitor Mic
  kind: action
  params:
    - name: monitor
      type: boolean
- id: set_usb_audio
  label: Set USB Audio Device Usage
  kind: action
  params:
    - name: target
      type: integer
      description: "0: With camera; 1: Global mic; 2: Playback"
    - name: dev-path
      type: string
    - name: audioOffset
      type: integer
- id: set_volume_config
  label: Set Volume
  kind: action
  params:
    - name: id
      type: integer
    - name: db
      type: integer
      description: "dB, range -70 to 0"
    - name: mute
      type: boolean

# Presentation
- id: switch_presentation
  label: Switch Presentation
  kind: action
  params:
    - name: id
      type: integer
- id: update_button_mode
  label: Change Device Button Binding Mode
  kind: action
  params:
    - name: showId
      type: integer
    - name: modeOfButton
      type: integer
      description: "0: Default; 1: Custom; 2: Auto"
- id: update_scene_of_button
  label: Set Custom Button Function
  kind: action
  params:
    - name: showId
      type: integer
    - name: sceneOfButton1
      type: integer
    - name: sceneOfButton2
      type: integer
    - name: sceneOfButton3
      type: integer
    - name: sceneOfButton4
      type: integer
    - name: sceneOfButton5
      type: integer

# System/User
- id: set_datetime
  label: Set Date and Time
  kind: action  # requires admin
  params:
    - name: datetime
      type: integer
      description: Timestamp in ms since 1970-01-01
    - name: timezone
      type: string
- id: set_device_name
  label: Set Device Name
  kind: action  # requires admin
  params:
    - name: deviceName
      type: string
- id: set_timezone
  label: Set Time Zone
  kind: action  # requires admin
  params:
    - name: timezone
      type: string
- id: login
  label: Log In
  kind: action
  params:
    - name: username
      type: string
    - name: password
      type: string
      description: SHA256 hash of plaintext password
- id: logout
  label: Log Out
  kind: action
- id: user_add
  label: Add User
  kind: action  # requires admin
  params:
    - name: username
      type: string
    - name: password
      type: string
      description: SHA256 hash
    - name: role
      type: integer
      description: "0: Normal; 1: Administrator"
- id: user_del
  label: Delete User
  kind: action  # requires admin
  params:
    - name: username
      type: string
- id: change_password
  label: Change Login Password
  kind: action
  params:
    - name: oldPassword
      type: string
    - name: newPassword
      type: string

# Queries
- id: get_server_launch_scenes
  label: Get Landing Scene List
  kind: action
- id: get_encoder_params
  label: Get Preview Quality Parameters
  kind: action
- id: get_wifi_list
  label: Get Wi-Fi List
  kind: action
- id: get_vumeter_info
  label: Get Audio Level
  kind: action
- id: get_device_base_info
  label: Get Basic Device Info
  kind: action
- id: get_record_encoder_params
  label: Get Recording Parameters
  kind: action
- id: get_streaming_status
  label: Get Streaming Status
  kind: action
- id: get_default_stream_server_config
  label: Get Default Streaming Configuration
  kind: action
- id: get_summary_info
  label: Get Device Summary
  kind: action
- id: get_album_files_list
  label: Get Album File List
  kind: action
  params:
    - name: type
      type: integer
      description: "0: All the files; 1: Screenshot; 2: Recorded video"
- id: get_def_video_config
  label: Get Default HDMI Video Configuration
  kind: action
- id: get_video_config
  label: Get HDMI Video Configuration
  kind: action
- id: get_app_settings
  label: Get App Settings
  kind: action
- id: get_signal_info
  label: Get HDMI Input Signal Status
  kind: action
  params:
    - name: signal-info-types
      type: array
      description: "Signal type, including video-info, audio-info, hdmi-info and info-frames"
- id: get_edid_config
  label: Get HDMI Input EDID
  kind: action
- id: get_webcam_list
  label: Get Web Camera Device List
  kind: action
- id: get_usb_output_config
  label: Get USB Output Configuration
  kind: action
- id: get_usb_audio_list
  label: Get External Audio Device List
  kind: action
  params:
    - name: target
      type: integer
      description: "0: Get available audio devices for Web Camera.; 1: Get available microphone devices.; 2: Get available USB audio playback devices."
- id: get_audio_card_list
  label: Get Sound Card Device List
  kind: action
- id: get_volume_config
  label: Get Volume
  kind: action

Feedbacks

# Device Status
- id: summary_info
  type: object
  description: Device status dashboard (V2.0 and V2.5 API versions)
  query_command: get-summary-info
  properties:
    - device: DeviceInfo
    - out: USBOutData

- id: device_status
  type: object
  description: Full device status including scene, recording, streaming, annotations
  query_command: get-device-status
  properties:
    - deviceName: string
    - serialNumber: string
    - firmwareVersion: string
    - hardwareVersion: string
    - deviceWorkingStatus: integer
    - ftbEnable: integer
    - recordStatus: RecordStatus
    - sceneStatus: SceneStatus
    - musicStatus: MusicStatus
    - srtStatus: SrtStatus
    - videoPlayerStatus: VideoPlayerStatus

# Input Signal
- id: signal_info
  type: object
  description: HDMI input signal status
  query_command: get-signal-info
  properties:
    - video-info: VideoInfoData
    - audio-info: AudioInfoData
    - hdmi-info: HdmiInfoData
    - info-frames: array

- id: hdmi_output_info
  type: object
  description: HDMI output signal status
  query_command: get-hdmi-output-info

- id: webcam_list
  type: array
  description: Web Camera device list
  query_command: get-webcam-list

# Settings
- id: general_settings
  type: object
  description: General device settings
  query_command: get-server-settings

- id: app_settings
  type: object
  description: App settings including pairing, encoding, ports
  query_command: get-app-settings

- id: video_config
  type: object
  description: HDMI video source configuration
  query_command: get-video-config

- id: def_video_config
  type: object
  description: Default HDMI video source configuration
  query_command: get-def-video-config

- id: edid_config
  type: object
  description: HDMI input EDID configuration
  query_command: get-edid-config

# Streaming
- id: streaming_status
  type: object
  description: Live streaming status
  query_command: get-streaming-status
  properties:
    - id: integer
    - state: integer  # 0: Unknown; 1: Connecting; 2: Connected; 3: Failed
    - speed: integer
    - duration: integer

- id: stream_server_list
  type: array
  description: Streaming server list
  query_command: get-default-stream-server-config

- id: default_stream_server_config
  type: object
  description: Default streaming configuration
  query_command: get-default-stream-server-config

# Audio
- id: volume_config
  type: object
  description: Volume configuration for all inputs/outputs
  query_command: get-volume-config

- id: vu_meter_info
  type: object
  description: Real-time audio levels
  query_command: get-vumeter-info

- id: audio_card_list
  type: array
  description: Sound card device list
  query_command: get-audio-card-list

- id: audio_card_mixer
  type: array
  description: Sound card properties
  query_command: get-audio-card-mixer

- id: mic_gain
  type: object
  description: Mic gain status
  query_command: get-mic-gain
  properties:
    - gain: integer  # 0: Disabled; 1: Enabled
    - monitor: boolean

- id: usb_audio_list
  type: object
  description: External USB audio device list
  query_command: get-usb-audio-list

# Album
- id: album_files_list
  type: object
  description: Recorded videos and screenshots
  query_command: get-album-files-list

# System
- id: device_info
  type: object
  description: Device information
  query_command: get-device-info
  properties:
    - serialNumber: string
    - mac: string
    - model: string
    - deviceName: string
    - firmwareVersion: string
    - hardwareVersion: string

- id: device_base_info
  type: object
  description: Basic device info
  query_command: get-device-base-info

- id: wifi_list
  type: array
  description: Wi-Fi network list
  query_command: get-wifi-list

- id: user_list
  type: array
  description: System user list
  query_command: get-all

- id: ping
  type: boolean
  description: Network connection test (no auth required)
  query_command: ping

# Recording
- id: record_encoder_params
  type: object
  description: Recording parameters
  query_command: get-record-encoder-params

- id: usb_output_config
  type: object
  description: USB output (UVC/UAC) configuration
  query_command: get-usb-output-config

Variables

# Scene/Presentation (queried via scene list APIs)
- id: scene_list
  type: array
  description: Landing scene list with layers, sources, GFX
  query_command: get-server-launch-scenes

# Encoding preview params
- id: encoder_params
  type: object
  description: Available encoding parameters for preview
  query_command: get-encoder-params

Events

# WebSocket: ws://[device-ip]:[control-port]/
# Monitor device status changes and annotation drawing
# Control port from app settings

Macros

# No explicit multi-step macros documented

Safety

confirmation_required_for: []
interlocks:
  # Device cannot sleep during: live streaming, recording, file backup, screencast, capturing
  - condition: "Device busy (recording/streaming/backup) blocks fall-to-sleep"
    reference: "error code 11 MW_STATUS_DEVICE_BUSY"

Notes

Default login: username Admin, password admin (SHA256: c1c224b03cd9bc7b6a86d77f5dace40191766c485cd55dc48caf9ac873335d6f). Session expires on device power-off or restart. API versioning: V2.6.0+ uses /mwapi/V2.0/ path prefix; V2.5.0 and below use /mwapi/ without version. Ping endpoint requires no authentication.

Provenance

source_domains:
  - magewell.com
source_urls:
  - https://www.magewell.com/api-docs/usb-fusion-api/usb-fusion-api-en_US.pdf
retrieved_at: 2026-04-30T13:13:07.891Z
last_checked_at: 2026-10-07T21:04:31.280Z

Verification Summary

verdict: verified
checked_at: 2026-10-07T21:04:31.280Z
matched_actions: 101
action_count: 101
confidence: medium
summary: "All 101 action units match documented endpoints with agreeing parameter shapes, transport claims are source-supported, and every source endpoint is represented in the spec. (4 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "no RS-232, UDP, or OSC support documented"
- "TCP control port default value not explicitly stated in source; examples use 9000"
- "WebSocket event types/format not documented beyond URL pattern"
- "SRT stream port default not stated"

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