Summary

REST API-based IP control for Magewell Pro Convert IP to USB capture device. Provides device management, source routing, stream monitoring, network configuration, user authentication, firmware upgrade, and logging operations via HTTP JSON API.

Transport

protocols:
  - http
addressing:
  base_url: "http://{ip}/api"
auth:
  type: sha256
  note: "Passwords transmitted as SHA-256 hash; session managed via Cookie sid-{serial}"

Traits

- queryable
- routable
- levelable

Actions

- id: ping
  label: Ping Test
  kind: query
  params: []

- id: reboot_device
  label: Reboot Device
  kind: action
  params:
    - name: delay
      type: integer
      description: Delay time before rebooting, in seconds
    - name: estimate-sec
      type: integer
      description: Estimated time for a restart, in seconds

- id: check_factory_reset_permission
  label: Check Factory Reset Permission
  kind: query
  params: []

- id: factory_reset
  label: Reset Device to Factory Defaults
  kind: action
  params:
    - name: estimated-duration
      type: integer
      description: Estimated duration

- id: schedule_auto_reboot
  label: Schedule Automatic Reboots
  kind: action
  params:
    - name: enable
      type: boolean
      description: Enable auto-reboot
    - name: hour
      type: integer
      description: Hour for auto-reboot (0-23)
    - name: min
      type: integer
      description: Minute for auto-reboot (0-59)
    - name: week
      type: array
      description: Weekly repeat days, 1=Monday through 7=Sunday

- id: get_device_info
  label: Get Device Info
  kind: query
  params: []

- id: get_basic_info
  label: Get Basic System Info
  kind: query
  params: []

- id: set_device_name
  label: Set Device Name
  kind: action
  params:
    - name: name
      type: string
      description: New device name

- id: set_date_time
  label: Set Date and Time
  kind: action
  params:
    - name: ntp-enable
      type: boolean
      description: Enable NTP
    - name: ntp-server1
      type: string
      description: NTP server 1 address
    - name: ntp-server2
      type: string
      description: NTP server 2 address
    - name: time
      type: string
      description: System time in yyyy-MM-dd HH:mm:ss format (required when ntp-enable=false)

- id: set_timezone
  label: Set Time Zone
  kind: action
  params:
    - name: zonename
      type: string
      description: Time zone name

- id: get_summary
  label: Obtain Summary Information
  kind: query
  params: []

- id: get_usb_mode
  label: Obtain USB Mode
  kind: query
  params: []

- id: set_usb_mode
  label: Set USB Mode
  kind: action
  params:
    - name: mode
      type: string
      enum:
        - "Normal mode"
        - "Content mode"
      description: USB operation mode

- id: export_config
  label: Export Device Configurations
  kind: action
  params:
    - name: filename
      type: string
      description: Output filename

- id: get_video_config
  label: Get Video Settings
  kind: query
  params: []

- id: update_video_config
  label: Update Video Settings
  kind: action
  params:
    - name: h_flip
      type: boolean
      description: Enable horizontal mirror
    - name: v_flip
      type: boolean
      description: Enable vertical flip
    - name: ar_convert_mode
      type: string
      enum:
        - "Windowbox"
        - "Crop"
        - "Stretch"
      description: Aspect ratio conversion mode

- id: get_ndi_config
  label: Get NDI Discovery Settings
  kind: query
  params: []

- id: update_ndi_config
  label: Set NDI Discovery
  kind: action
  params:
    - name: enable
      type: boolean
      description: Enable NDI discovery
    - name: discovery_server
      type: string
      description: Discovery server addresses (comma-separated)
    - name: groups
      type: string
      description: NDI group information

- id: upload_no_signal_image
  label: Upload No-Signal Image
  kind: action
  params:
    - name: id
      type: string
      description: Image ID
    - name: type
      type: string
      description: Reserved
    - name: file
      type: binary
      description: PNG file via multipart/form-data

- id: delete_no_signal_image
  label: Delete No-Signal Image
  kind: action
  params:
    - name: id
      type: string
      description: Image ID
    - name: type
      type: string
      description: Reserved

- id: get_no_signal_images
  label: Get No-Signal Image Info
  kind: query
  params:
    - name: id
      type: string
      description: Image ID
    - name: type
      type: string
      description: Reserved

- id: get_source_list
  label: Get Source List
  kind: query
  params:
    - name: type
      type: string
      enum:
        - "static"
        - "dynamic"
      description: Source type filter
    - name: page
      type: integer
      description: Page number
    - name: page_size
      type: integer
      description: Items per page

- id: add_source
  label: Add Source
  kind: action
  params:
    - name: name
      type: string
      description: Source name
    - name: protocol
      type: string
      enum:
        - "ndi"
        - "rtmp"
        - "ts-srt"
        - "ts-udp"
        - "ts-rtp"
        - "rtsp"
        - "http"
      description: Protocol type
    - name: type
      type: string
      enum:
        - "url"
        - "d_ndi"
        - "ndi"
      description: Source type
    - name: data
      type: object
      description: Source-specific configuration data

- id: update_source
  label: Modify Source
  kind: action
  params:
    - name: id
      type: integer
      description: Source unique ID
    - name: config
      type: object
      description: Updated source configuration

- id: delete_source
  label: Delete Source
  kind: action
  params:
    - name: id
      type: integer or array
      description: Source ID(s) to delete

- id: select_source
  label: Select Source
  kind: action
  params:
    - name: id
      type: integer
      description: Source ID (>0 selects, <=0 deselects all)

- id: get_stream_status
  label: Get Stream Status
  kind: query
  params: []

- id: get_network_info
  label: Get Network Card Info
  kind: query
  params: []

- id: configure_ethernet
  label: Configure Ethernet
  kind: action
  params:
    - name: iface
      type: string
      description: Network interface name (eth0)
    - name: use-dhcp
      type: boolean
      description: Use DHCP for IP address
    - name: ipaddr
      type: string
      description: Static IP address (required when use-dhcp=false)
    - name: netmask
      type: string
      description: Subnet mask
    - name: gateway
      type: string
      description: Gateway address
    - name: dns1
      type: string
      description: Primary DNS
    - name: dns2
      type: string
      description: Secondary DNS

- id: configure_usb_net
  label: Configure USB NET
  kind: action
  params:
    - name: iface
      type: string
      description: Network interface name (usb0)
    - name: ipaddr
      type: string
      description: IP address for USB NET

- id: login
  label: Login
  kind: action
  params:
    - name: username
      type: string
      description: User name
    - name: password
      type: string
      description: SHA-256 hashed password

- id: logout
  label: Logout
  kind: action
  params: []

- id: get_user_list
  label: Get System User List
  kind: query
  params: []

- id: add_user
  label: Add User
  kind: action
  params:
    - name: username
      type: string
      description: New user name
    - name: password
      type: string
      description: SHA-256 hashed password

- id: delete_user
  label: Delete User
  kind: action
  params:
    - name: username
      type: string
      description: User to delete

- id: change_password
  label: Change Login Password
  kind: action
  params:
    - name: password
      type: string
      description: Current password (SHA-256)
    - name: new-password
      type: string
      description: New password (SHA-256)

- id: reset_password
  label: Reset User Password
  kind: action
  params:
    - name: username
      type: string
      description: Target user name
    - name: password
      type: string
      description: New password (SHA-256)

- id: upload_firmware
  label: Upload Firmware
  kind: action
  params:
    - name: file
      type: binary
      description: Firmware file (.mwf) via multipart/form-data
    - name: need-clean-data
      type: boolean
      description: Clear user data during upgrade
    - name: up-to-date
      type: boolean
      description: Check if firmware is latest
    - name: version
      type: string
      description: Firmware version string
    - name: size
      type: integer
      description: Firmware size in bytes

- id: upgrade_firmware
  label: Upgrade Firmware
  kind: action
  params:
    - name: is-online
      type: boolean
      description: Online vs manual upgrade
    - name: mode
      type: integer
      description: Upgrade mode (0=Auto)
    - name: timeout
      type: integer
      description: Timeout in seconds

- id: get_upgrade_state
  label: Get Firmware Upgrade Status
  kind: query
  params: []

- id: clear_upgrade_state
  label: Clear Upgrade Status
  kind: action
  params: []

- id: clear_logs
  label: Clear System Logs
  kind: action
  params: []

- id: filter_logs
  label: Filter Logs
  kind: query
  params:
    - name: types
      type: string
      description: Log types (all, info, warn, error)
    - name: key
      type: string
      description: Filter keyword

- id: export_logs
  label: Export Logs
  kind: action
  params:
    - name: filename
      type: string
      description: Output filename

Feedbacks

- id: error_code
  type: integer
  values:
    - 0: MW_STATUS_SUCCESS
    - 1: MW_STATUS_PENDING
    - 2: MW_STATUS_TIMEOUT
    - 3: MW_STATUS_INTERRUPTED
    - 4: MW_STATUS_TRY_AGAIN
    - 5: MW_STATUS_NOT_IMPLEMENTED
    - 6: MW_STATUS_UNKNOWN_ERROR
    - 7: MW_STATUS_INVALID_ARG
    - 8: MW_STATUS_NO_MEMORY
    - 9: MW_STATUS_UNSUPPORTED
    - 10: MW_STATUS_FILE_BUSY
    - 11: MW_STATUS_DEVICE_BUSY
    - 12: MW_STATUS_DEVICE_LOST
    - 13: MW_STATUS_IO_FAILED
    - 14: MW_STATUS_READ_FAILED
    - 15: MW_STATUS_WRITE_FAILED
    - 16: MW_STATUS_NOT_EXIST
    - 17: MW_STATUS_TOO_MANY
    - 18: MW_STATUS_TOO_LARGE
    - 19: MW_STATUS_OVERFLOW
    - 20: MW_STATUS_UNDERFLOW
    - 21: MW_STATUS_FORMAT_ERROR
    - 22: MW_STATUS_FILE_EXISTS
    - 23: MW_STATUS_FILE_TYPE_ERROR
    - 24: MW_STATUS_DEVICE_TYPE_ERROR
    - 25: MW_STATUS_IS_DIRECTORY
    - 26: MW_STATUS_READ_ONLY
    - 27: MW_STATUS_RANGE_ERROR
    - 28: MW_STATUS_BROKEN_PIPE
    - 29: MW_STATUS_NO_SPACE
    - 30: MW_STATUS_NOT_DIRECTORY
    - 31: MW_STATUS_NOT_PERMITTED
    - 32: MW_STATUS_BAD_ADDRESS
    - 33: MW_STATUS_SEEK_ERROR
    - 34: MW_STATUS_CROSS_DEVICE_LINK
    - 35: MW_STATUS_NOT_INITIALIZED
    - 36: MW_STATUS_AUTH_FAILED
    - 37: MW_STATUS_NOT_LOGGED_IN
    - 38: MW_STATUS_WRONG_STATE
    - 39: MW_STATUS_MISMATCH
    - 40: MW_STATUS_VERIFY_FAILED
    - 41: MW_STATUS_CONSTRAINT_VIOLATION
    - 42: MW_STATUS_CANCELED
    - 43: MW_STATUS_IN_PROGRESS
    - 44: MW_STATUS_CONN_REFUSED
    - 45: MW_STATUS_CONN_RESET
    - 46: MW_STATUS_ADDR_IN_USE
    - 47: MW_STATUS_NO_RESPONSE
    - 48: MW_STATUS_INFO_CHANGED
    - 49: MW_STATUS_INVALID_DATA
    - 50: MW_STATUS_NEED_MORE_DATA
    - 51: MW_STATUS_NO_BUFFER
    - 52: MW_STATUS_BUFFER_TOO_SMALL
    - 53: MW_STATUS_BUFFER_IS_EMPTY
    - 54: MW_STATUS_BUFFER_IS_FULL

- id: device_info
  type: struct
  fields:
    - device-name: string
    - product-id: string
    - product-name: string
    - hardware-rev: string
    - serial-number: string
    - firmware-ver: string
    - firmware-name: string
    - build-time: string
    - capability: object

- id: system_info
  type: struct
  fields:
    - device-name: string
    - mdns-url: string
    - uptime: integer
    - cpu: object
    - mem: object
    - datetime: object
    - auto-reboot: object

- id: stream_status
  type: struct
  fields:
    - name: string
    - protocol: string
    - state: integer
    - uptime: integer
    - video: object
    - audio: object
    - extra: object

- id: usb_mode
  type: enum
  values:
    - "Normal mode"
    - "Content mode"

- id: session_id
  type: string
  note: "Returned in Set-Cookie header as sid-{serial number} after login"

- id: user_list
  type: array
  fields:
    - username: string
    - group: string

Variables

- id: device_name
  type: string
  settable: true
  description: Configurable device name

- id: ntp_enable
  type: boolean
  settable: true
  description: Enable NTP time synchronization

- id: ntp_server1
  type: string
  settable: true
  description: Primary NTP server

- id: ntp_server2
  type: string
  settable: true
  description: Secondary NTP server

- id: timezone
  type: string
  settable: true
  description: Time zone name

- id: auto_reboot
  type: object
  settable: true
  description: Scheduled automatic reboot settings

- id: video_h_flip
  type: boolean
  settable: true
  description: Horizontal mirror

- id: video_v_flip
  type: boolean
  settable: true
  description: Vertical flip

- id: video_ar_convert_mode
  type: string
  settable: true
  description: Aspect ratio conversion mode

- id: ndi_enable
  type: boolean
  settable: true
  description: NDI discovery enable

- id: ndi_discovery_server
  type: string
  settable: true
  description: NDI discovery server addresses

- id: ndi_groups
  type: string
  settable: true
  description: NDI group information

- id: ethernet_config
  type: object
  settable: true
  description: Ethernet interface configuration (DHCP or static IP)

- id: usb_net_config
  type: object
  settable: true
  description: USB NET interface configuration

- id: selected_source_id
  type: integer
  settable: true
  description: Currently selected source ID

Events

# UNRESOLVED: source does not document unsolicited push notifications

Macros

# UNRESOLVED: source does not describe multi-step command sequences

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: safety warnings not found in source

Notes

The API uses JSON request/response with HTTP GET/POST methods. Authentication is session-based via Cookie after login. Passwords are transmitted as SHA-256 hashes. Source management supports multiple protocols (NDI, RTMP, SRT, UDP, RTP, RTSP, HTTP) and types (static URL, auto-discovered NDI, manual NDI). Stream status includes video codec, bitrate, resolution, frame rate, audio codec, sample rate, and tally indicators. Network interfaces include Ethernet, Wi-Fi, USB sharing, USB NET, and cellular (on supported models).

Provenance

source_domains:
  - magewell.com
source_urls:
  - https://www.magewell.com/api-docs/pro-convert-ip-to-usb-api/pro-convert-ip-to-usb-api-en_US.pdf
  - https://www.magewell.com/api-docs/pro-convert-ip-to-usb-api/
  - https://www.magewell.com/developer/27/detail
  - https://www.magewell.com/developer
retrieved_at: 2026-05-27T05:56:47.616Z
last_checked_at: 2026-05-27T06:51:37.828Z

Verification Summary

verdict: verified
checked_at: 2026-05-27T06:51:37.828Z
matched_actions: 44
action_count: 44
confidence: medium
summary: "All 44 spec actions matched API endpoints in source; transport and SHA256 auth verified. (9 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "serial/RS-232 not mentioned in source"
- "default HTTP port not stated in source"
- "source does not document unsolicited push notifications"
- "source does not describe multi-step command sequences"
- "safety warnings not found in source"
- "default HTTP port not stated — port must be discovered or configured"
- "RS-232/serial not documented in source"
- "unsolicited event push notifications not documented"
- "firmware version compatibility ranges not stated"

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