Version 0.96 November 11 2013
The VIO Stream API protocol is a web-based interface allowing for camera control over TCP/IP and HTTP/1.1. The API is accessed via the following URL on the camera:
This command will return the general system status.
/api/system <system> <status>Running</status> <version>v1.5039</version> <serialnumber>ETP-1234-00001</serialnumber> <ipaddress>172.16.197.197</ipaddress> <time>1373912804</time> <utc>-7</utc> <user>none</user> <password>none</password> </system>
Note that each item may be retrieved individually instead of as a group. For instance /api/system/time will retrieve only the time.
/api/system/subnet=255.255.255.252 Sets the subnet for the IP over USB interface. This should be changed before the IP address. Once the IP address changes, the change takes effect.
/api/system/ipaddress=172.16.197.197 Sets the IP address for the USB interface. Once this command is sent the IP address will change and the camera needs to be re-booted.
/api/system?time=1373912804 Sets the system time in EPOCH.
/api/system?utc=-8 Sets the Universal time code (UTC/GMT) for local time
Note that after setting a username and password, all subsequent requests must utilize HTTP basic authentication
/api/system/defaults Resets the system settings to the default manufacturers configuration
/api/system/settingssave Saves the new setting configuration to memory so that these settings will be used until either they are changed by command or the reset to defaults is used. If settings are changed and not saved, the previously saved settings will be reverted to at next power up.
Note that mounting as a mass storage device will cause a loss of RNDIS (IP over USB) connectivity to the camera
The following resolution, quality level, and frame rate combinations are supported.
1080p30-high-record1080p-streamNO 1080p30-med-record1080p-streamNO 1080p30-low-record1080p-stream1080p 1080p30-low-record1080p-stream480p 1080p30-low-record1080p-stream240p 1080p30-high-record480p-stream480p 1080p30-med-record480p-stream480p 1080p30-low-record480p-stream480p 1080p30-high-record240p-stream240p 1080p30-med-record240p-stream240p 1080p30-low-record240p-stream240p
1080p25-high-record1080p-streamNO 1080p25-med-record1080p-streamNO 1080p25-low-record1080p-stream1080p 1080p25-low-record1080p-stream480p 1080p25-low-record1080p-stream240p 1080p25-high-record480p-stream480p 1080p25-med-record480p-stream480p 1080p25-low-record480p-stream480p 1080p25-high-record240p-stream240p 1080p25-med-record240p-stream240p 1080p25-low-record240p-stream240p
1080p24-high-record1080p-streamNO 1080p24-med-record1080p-streamNO 1080p24-low-record1080p-stream1080p 1080p24-low-record1080p-stream480p 1080p24-low-record1080p-stream240p 1080p24-high-record480p-stream480p 1080p24-med-record480p-stream480p 1080p24-low-record480p-stream480p 1080p24-high-record240p-stream240p 1080p24-med-record240p-stream240p 1080p24-low-record240p-stream240p
720p60-high-record720p 720p60-med-record720p 720p60-low-record720p 720p60-high-record480p 720p60-med-record480p 720p60-low-record480p 720p60-high-record240p 720p60-med-record240p 720p60-low-record240p
720p50-high-record720p 720p50-med-record720p 720p50-low-record720p 720p50-high-record480p 720p50-med-record480p 720p50-low-record480p 720p50-high-record240p 720p50-med-record240p 720p50-low-record240p
720p30-high-record720p-stream720p 720p30-med-record720p-stream720p 720p30-low-record720p-stream720p 720p30-med-record720p-stream480p 720p30-low-record720p-stream480p 720p30-med-record720p-stream240p 720p30-low-record720p-stream240p 720p30-high-record480p-stream480p 720p30-med-record480p-stream480p 720p30-low-record480p-stream480p 720p30-high-record240p-stream240p 720p30-med-record240p-stream240p 720p30-low-record240p-stream240p
720p25-high-record720p-stream720p 720p25-med-record720p-stream720p 720p25-low-record720p-stream720p 720p25-med-record720p-stream480p 720p25-low-record720p-stream480p 720p25-med-record720p-stream240p 720p25-low-record720p-stream240p 720p25-high-record480p-stream480p 720p25-med-record480p-stream480p 720p25-low-record480p-stream480p 720p25-high-record240p-stream240p 720p25-med-record240p-stream240p 720p25-low-record240p-stream240p
720p24-high-record720p-stream720p 720p24-med-record720p-stream720p 720p24-low-record720p-stream720p 720p24-med-record720p-stream480p 720p24-low-record720p-stream480p 720p24-med-record720p-stream240p 720p24-low-record720p-stream240p 720p24-high-record480p-stream480p 720p24-med-record480p-stream480p 720p24-low-record480p-stream480p 720p24-high-record240p-stream240p 720p24-med-record240p-stream240p 720p24-low-record240p-stream240p
/api/power <power> <status>Running</status> <level>100</level> <timeout>0</timeout> </power>
Power off after 30 minutes (1800 seconds). Setting the timeout to zero disables the power off timeout.
/api/sensor <sensor> <status>Running</status> <resolution>1080p</resolution> <fps>30</fps> <sharpener>0</sharpener> <noisefilter>0</noisefilter> <exposuretime>70</exposuretime> <exposurezone>spot</exposurezone> </sensor>
Note that each item may be retrieved individually instead of as a group. For instance /api/sensor/fps will retrieve only the frames per second.
You should generally have the sharpener turned on unless you plan to do sharpening in video post-production. Setting the sharpener to 0 will disable the sharpener.
You should generally have the noise filter turned on unless you plan to do noise filtering in video post-production. Setting the noise filter to 0 will disable the noise filter.
Increase exposure time to brighten / decrease to darken images (suggested range 40-90). The full range is from 10 to 255.
Spot uses the middle of the sensor for exposure calculations, while fullframe uses the entire frame
/api/record <record> <status>Stopped</status> <type>clip</type> <resolution>1080p</resolution> <quality>6000000</quality> <looptime>10</looptime> <loopforwardtime>10</loopforwardtime> <filetype>mov</filetype> <files> <file> <name>V0000000.mov</name> <lastmodified>946685322</lastmodified> <size>2007662</size> </file> <file> <name>V0000001.mov</name> <lastmodified>946685330</lastmodified> <size>2143798</size> </file> </files> </record>
Note that each item may be retrieved individually instead of as a group. For instance /api/files will retrieve the list of files on the micro SDHC card.
"clip" mode will record as you expect. "loop" mode will record clips of length "looptime" seconds, and keep only clips during which "tag" is called (it may also keep clips the before and after the tag, if the tag was at the beginning or a the end of the loop). "loopforward" will record loops of "looptime" and then delete them, unless tag is called, in which case it will save the previous loop and keep recording the current file until recording is stopped.
specify looptime in seconds (30 seconds in this example)
specify looptime in seconds (30 seconds in this example)
/api/stream <stream> <status>Stopped</status> <resolution>1080p</resolution> <quality>6000000</quality> <url>rtsp://172.16.197.197:8554/stream</url> </stream>
Note that each item may be retrieved individually instead of as a group. For instance /api/url will retrieve only the url for the stream.
/api/mjpeg <mjpeg> <status>Stopped</status> <resolution>1080p</resolution> <quality>75</quality> </mjpeg>
Note that each item may be retrieved individually instead of as a group. For instance /api/mjpeg/quality will retrieve only the mjpeg quality setting.
/api/still <still> <status>Stopped</status> <resolution>1080p</resolution> <quality>75</quality> <files> <file> <name>P0000000.jpg</name> <lastmodified>946685292</lastmodified> <size>142842</size> </file> </files> </still>
Note that each item may be retrieved individually instead of as a group. For instance /api/still/quality will retrieve only the still quality setting.
/api/overlay <overlay> <enable>0</enable> <loc_x>50</loc_x> <loc_y>720</loc_y> <height>48</height> <color>blue</color> </overlay>
Note that each item may be retrieved individually instead of as a group. For instance /api/overlay/height will retrieve only the height of the time and date overlay in pixels.
Note that it is not recommended to use the overlay in "dual encoding" scenarios (simultaneous recording and streaming) due to performance limitations.
Specifies the x offset for the time and date overlay from the upper left in pixels.
Specifies the y offset for the time and date overlay from the upper left in pixels.
Specifies the height of the time and date overlay font (e.g. 24, 48, 96) in pixels.
Specifies the color of the time and date overlay characters (e.g. red, white, green, blue, black)
/api/wifiap <wifiap> <status>stopped</status> <autorun>0</autorun> <ssid>Stream</ssid> <password>extremetech</password> <channel>11</channel> <enctype>wpa2</enctype> <ipaddress>none</ipaddress> <subnet>none</subnet> </wifiap>
Note that each item may be retrieved individually instead of as a group. For instance /api/wifiap/ipaddress will retrieve only the ip address.
Restart after any settings change for changes to take effect
wpa2, wep, and none are supported
/api/wificlient <wificlient> <status>Off</status> <autorun>0</autorun> <ssid>foo</ssid> <iptype>DHCP</iptype> <ipaddress>none</ipaddress> <subnet>none</subnet> <enctype>wpa2</enctype> </wificlient>
Note that each item may be retrieved individually instead of as a group. For instance /api/wificlient/autorun will retrieve only the autorun setting.
wpa2, wep, and none are supported
/api/mic <mic> <enable>1</enable> <volume>100</volume> <alc>0</alc> <alclevel>7</alclevel> <boost>0</boost> </mic>
Note that each item may be retrieved individually instead of as a group. For instance /api/mic/level will retrieve only the volume setting.
/api/beeper <beeper> <volume>5</volume> </beeper>
/api/sdcard <sdcard> <status>inserted</status> <size>1645056000</size> <free>1612410000</free> </sdcard>
Note that each item may be retrieved individually instead of as a group. For instance /api/sdcard/size will retrieve only the size of the Micro SDHC card in bytes.