Summary
PIXNET is an HTTP-based control API for Sound Devices PIX video recorders. Controls transport (rec/play/stop), settings, file management, timecode, and event polling via HTTP requests to the unit's IP address on port 80. CORS enabled; no authentication required.
Transport
protocols:
- http
addressing:
base_url: http://[host] # host = PIX unit IP address, port 80
auth:
type: none # inferred: no auth/login procedure in source
Traits
- powerable # power on/off via transport commands
- routable # UNRESOLVED: no input/output routing commands found
- queryable # transport state, timecode, settings queryable
- levelable # input gain adjustable (-250 to +200 tenths of dB)
Actions
- id: settransport
label: Set Transport State
kind: action
params:
- name: state
type: enum
values: [play, stop, rec]
- id: setsetting
label: Change a Setting
kind: action
params:
- name: setting
type: string
description: Setting name from Setting Names section (case-sensitive)
- name: value
type: string
description: URL-encoded setting value as shown on unit
- id: false_take
label: Initiate False Take
kind: action
params: []
- id: fast_forward
label: Fast Forward Playback
kind: action
params:
- name: speed
type: enum
values: [PlayX2, PlayX16]
- id: fast_reverse
label: Fast Reverse Playback
kind: action
params:
- name: speed
type: enum
values: [PlayX2, PlayX16]
- id: set_input_gain
label: Set Input Gain
kind: action
params:
- name: input_index
type: integer
description: Zero-based input index
- name: gain_value
type: integer
description: Tenths of dB (-250 to +200; -2550 = OFF)
- id: set_device_name
label: Set PIX Device Name
kind: action
params:
- name: name
type: string
description: Alpha-numeric, spaces, dashes only
- id: simulate_key
label: Simulate Key Press
kind: action
params:
- name: keycode
type: string
description: Hex keycode (e.g. "0x01000080" = Play)
- name: event_type
type: enum
values: [KeyPressAndRelease, KeyPress, KeyRelease]
- id: close_message_box
label: Push Dialog Button
kind: action
params:
- name: button_text
type: string
description: Exact button text displayed (case-sensitive)
- id: set_auto_dismiss
label: Set Dialog Auto-Dismiss
kind: action
params:
- name: time_ms
type: integer
description: Milliseconds before auto-dismiss (0 = disabled)
- name: action
type: enum
values: [Accept, Reject]
- id: jam_received_tc
label: Jam Received Timecode
kind: action
params: []
- id: jam_time_of_day
label: Jam Time-of-Day Timecode
kind: action
params: []
- id: format_all_drives
label: Format All Drives
kind: action
params:
- name: label
type: string
description: Alpha-numeric, spaces, dashes only
- id: file_copy
label: Copy File
kind: action
params:
- name: file_path
type: string
description: Full path of file to copy
- name: drive_id
type: enum
values: [HDD, HD2, HD3, HD4]
- id: reel_copy
label: Copy Reel
kind: action
params:
- name: reel_path
type: string
description: Full path of reel (no trailing slash)
- name: drive_id
type: enum
values: [HDD, HD2, HD3, HD4]
- id: set_list_setting
label: Update Phrase List
kind: action
params:
- name: phrases
type: string
description: Comma-separated list of phrases
- id: create_sound_report_current
label: Create Sound Report (Current Reel)
kind: action
params: []
- id: create_sound_report
label: Create Sound Report (Specific Reel)
kind: action
params:
- name: drive_id
type: enum
values: [HDD, HD2, HD3, HD4]
- name: reel_name
type: string
- id: enable_timecode_events
label: Enable Timecode Events
kind: action
params: [] # UNRESOLVED: command pattern not fully documented
- id: get_transport
label: Get Transport State
kind: query
params: []
- id: get_timecode
label: Get Timecode Value
kind: query
params: []
- id: get_framerate
label: Get Timecode Framerate
kind: query
params: []
- id: get_device_table
label: Get PIX Device Table
kind: query
params: []
- id: get_absolute_time
label: Get Absolute Time
kind: query
params: []
- id: get_next_filename
label: Get Next Filename
kind: query
params: []
- id: get_current_take
label: Get Current Record Take
kind: query
params: []
- id: get_previous_take
label: Get Previous Record Take
kind: query
params: []
- id: getsettings
label: Get Setting Values
kind: query
params:
- name: settings
type: string
description: Comma-separated list of setting names (case-sensitive, from Setting Names section)
- id: get_video_input_source
label: Get Video Input Source
kind: query
params: []
- id: get_take_list_handle
label: Get Take List Handle
kind: query
params:
- name: drive_id
type: enum
values: [HDD, HD2, HD3, HD4]
- id: get_take_list_entry
label: Get Take List Entry
kind: query
params:
- name: take_list_handle
type: integer
description: As obtained from get_take_list_handle
- name: which
type: enum
values: [FirstEntry, NextEntry, CurrentEntry, NextSibling, ChildEntry]
- id: get_file_details
label: Get File Details
kind: query
params:
- name: file_path
type: string
description: Full path of the file (case-sensitive)
- id: getlistsetting
label: Get Phrase List
kind: query
params: []
- id: get_drive_status
label: Get Drive Status
kind: query
params:
- name: drive_id
type: enum
values: [HDD, HD2, HD3, HD4]
- id: get_events
label: Poll Event Queue
kind: query
params: []
Feedbacks
- id: transport_state
type: object
properties:
Transport: enum [stop, play, rec]
FileName: string
- id: timecode_value
type: string
description: HH:MM:SS:FF format
- id: timecode_framerate
type: string
description: e.g. "29.97ND"
- id: device_table
type: object
description: JSON listing all PIX units on network
- id: absolute_time
type: object
properties:
String: string
- id: next_filename
type: object
properties:
String: string
- id: current_take
type: object
properties:
String: string
- id: previous_take
type: object
properties:
String: string
- id: take_list_handle
type: integer
description: Handle for take list operations; 0 = empty
- id: take_list_entry
type: object
properties:
ArrayStrings: array
- id: file_details
type: object
description: Full file metadata (audio format, codec, duration, etc.)
- id: video_input_info
type: object
properties:
String: string
- id: drive_status
type: object
properties:
String: string
- id: phrase_list
type: object
properties:
PhraseList: array
- id: settings_value
type: object
description: Named setting values
- id: event_message
type: object
description: Polled events (Setting, Transport, FileName, TextMsg, etc.)
Variables
# Settable parameters via setsetting action - see Setting Names section for full enumeration
# Examples:
- id: RecordMode
type: enum
values: [Sequential, Simultaneous]
- id: VideoInput
type: enum
values: [HDMI, SDI]
- id: RecordCodec
type: enum
values: [DNxHD 220x, DNxHD 220, DNxHD 145, DNxHD 36, ProRes 4444, ProRes 422HQ, ProRes 422, ProRes 422LT, ProRes 422Proxy]
- id: AudioSampleRate
type: enum
values: [44.1 kHz, 47.952k, 47.952kF, 48k, 48.048k, 48.048kF]
- id: HeadphoneSource
type: enum
values: [1,2, 3,4, 5,6, 7,8, 9,10, 11,12, 13,14, 15,16, 17,18, 19,20, 21,22, 23,24, 25,26, 27,28, 29,30, 31,32, All tracks summed - mono, All tracks summed - stereo]
# Full list per Setting Names section
Events
# Polled via /sounddevices/update at up to 200ms intervals
# Event types:
- SettingChange # setting_name|index|new_value
- Transport # new transport state
- FileName # new filename
- TextMsg # popup message text|buttons
- MessageBoxClosed # popup dismissed
- VideoTimingChanged # video sync changed
- DisplayedTimeCode # timecode at event time
- InputGainChanged # input_index|new_gain_dB
- MaxEventsExceeded # full state refresh needed
Macros
# False take sequence: false_take() then close_message_box("OK")
# Drive format sequence: format_all_drives(label) then close_message_box("OK")
# File copy sequence: file_copy(path, drive) then close_message_box("Yes")
# Reel copy sequence: reel_copy(path, drive) then close_message_box("Yes")
Safety
confirmation_required_for:
- format_all_drives # confirmation dialog required
- file_copy # overwrite confirmation dialog
- reel_copy # overwrite confirmation dialog
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures documented
Notes
- CORS
Access-Control-Allow-Origin: *on all responses - Event queue is shared; single client should poll
/sounddevices/update - Event polled at max 200ms intervals; queue drains on read
- All setting values and filenames must be URL-encoded in requests
false_takeandformat_all_drivesrequire follow-upclose_message_boxto complete- Media recorded to temp formats (.sda audio, .sdv video) before finalization
/sounddevices/devtbllists network PIX units; queried unit has leading*
Provenance
source_domains:
- cdn.videodevices.com
source_urls:
- http://cdn.videodevices.com/download/guides/PIXNET_API.pdf
retrieved_at: 2026-04-30T01:30:16.434Z
last_checked_at: 2026-06-02T22:15:08.144Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T22:15:08.144Z
matched_actions: 35
action_count: 35
confidence: medium
summary: "All 35 spec actions traced to source (dip-safe re-verify). (5 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "serial/RS-232 not mentioned; RS-422 referenced only as OSD setting flag"
- "no input/output routing commands found"
- "command pattern not fully documented"
- "no safety warnings or interlock procedures documented"
- "serial/RS-232 config not documented; RS-422 shown only as OSD status flag"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0