API reference
The HTTP API for the cameras can be directly accessed using a variety of languages that support standard HTTP requests, with python and MATLAB example snippets being illustrated here.
You should have network access to the e3v-watchtower process running on the camera host computer (see Network layout for more setup details.)
Setting up for scripted API calls
Python-based API calls as shown below require the requests library or similar, usually available in a full python3 or anaconda install.
MATLAB-based API calls as shown below require the webread and webwrite functions implemented in MATLAB R2015b or later with suppport for ArrayFormat.
Obtaining an API token
If you started Watchtower using Start Watchtower with web remote access, API calls must include an apitoken to authenticate yourself, obtained using a username and password pair set at initial setup.
If you are using Watchtower from local machine only (with watchtowerurl set to a localhost-based adddress, you do not need to obtain an API token.)
| Parameters | Value | Description |
|---|---|---|
username |
string | Valid log-in username as registered at initialization (/firstuse), or any new users created at /register |
password |
string | Valid registered password string for above username |
Connecting/Disconnecting cameras
Binding cameras
Operational camera commands, such as CONNECT or DISCONNECT, must be issued in a cryptographically secure session between the Watchtower software and the cameras. This session is started by "binding".
| Parameters | Value | Description |
|---|---|---|
Id |
numeric integer | Corresponds to database entry, can be looked up using the camera listing. Either Id or Serial must be set. |
Serial |
string | Camera unit serial as a string, such as e3v8100 or e3v8100.local. Either Id or Serial must be set. |
Action |
BIND |
Must be set to the literal string BIND |
Connect to camera stream
This is the main command used for starting up cameras.
| Parameters | Value | Description |
|---|---|---|
Id |
numeric integer | Corresponds to database entry, can be looked up using the camera listing. Either Id or Serial must be set. |
Serial |
string | Camera unit serial as a string, such as e3v8100 or e3v8100.local. Either Id or Serial must be set. |
Action |
CONNECT |
Must be set to the literal string CONNECT |
Iface |
ip address | IP address of the listening interface where video is to be streamed, such as 10.20.64.128. Set to empty string for automatic interface detection. |
Config |
480p15480p30600p15600p30600p60720p15720p301200p101200p151200p30 |
Video recording resolution and framerate. For example, 480p: 640×480 resolution600p: 800×600 resolution720p: 1280×720 resolution1600p: 1600×1200 resolution |
Codec |
H264MJPEG |
Video codec:
|
Annotation |
NameTimeName+TimeNone |
None: Do not overlay any text.Time: Overlay time obtained over the network.CameraName: Overlay the camera name (from step 10).Name+Time: Overlay both time and camera name. |
Segtime |
string with h m s |
Automatic rollover of video segment with a duration string, such as 15m, 1h30m, 45m30s |
apitoken |
string (optional) | if needed, API token as obtained above |
Standby / disconnect cameras
| Parameters | Value | Description |
|---|---|---|
Id |
numeric integer | Corresponds to database entry, can be looked up using the camera listing. Either Id or Serial must be set. |
Serial |
string | Camera unit serial as a string, such as e3v8100 or e3v8100.local. Either Id or Serial must be set. |
Action |
DISCONNECT |
Must be set to the literal string DISCONNECT |
apitoken |
string (optional) | if needed, API token as obtained above |
Update sync source
Note that this must be set before Connecting cameras, if not yet set via the API or web interface.
| Parameters | Value | Description |
|---|---|---|
Id |
numeric integer | Corresponds to database entry, can be looked up using the camera listing. Either Id or Serial must be set. |
Serial |
string | Camera unit serial as a string, such as e3v8100 or e3v8100.local. Either Id or Serial must be set. |
Action |
UPDATEMC |
Must be set to the string UPDATEMC |
apitoken |
string (optional) | if needed, API token as obtained above |
Control camera recordings
Start saving
Creates a set of concurrent saved videos under the pre-set save path with the name
[cameraname]-[starttime]-[endtime].[avi | mp4]. This is always a grouped operation.
| Parameters | Value | Description |
|---|---|---|
IdGroup[] |
numeric array | Array corresponding to database entries, can be looked up using the camera listing. Either IdGroup[] or SerialGroup[] must be set. |
SerialGroup[] |
string array | Array of camera unit serials, such as [e3v8100, e3v8101]. Either IdGroup[] or SerialGroup[] must be set. |
Action |
RECORDGROUP |
Must be set to the literal string RECORDGROUP |
AdditionalPath |
string (optional) | additional subdirectory to nest saved videos under; only applies to videos started this time and does not update global save path |
apitoken |
string (optional) | if needed, API token as obtained above |
Stop saving
| Parameters | Value | Description |
|---|---|---|
IdGroup[] |
numeric array | Array corresponding to database entries, can be looked up using the camera listing. Either IdGroup[] or SerialGroup[] must be set. |
SerialGroup[] |
string array | Array of camera unit serials, such as [e3v8100, e3v8101]. Either IdGroup[] or SerialGroup[] must be set. |
Action |
STOPRECORDGROUP |
Must be set to the literal string STOPRECORDGROUP |
apitoken |
string (optional) | if needed, API token as obtained above |
Trigger video segment
Creates a set of real-time video segments centered around the time of API call under
[cameraname]-[centertime]-[framecount].avi.
This is always a grouped operation, and can only be used with cameras set to MJPEG.
| Parameters | Value | Description |
|---|---|---|
IdGroup[] |
numeric array | Array corresponding to database entries, can be looked up using the camera listing. Either IdGroup[] or SerialGroup[] must be set. |
SerialGroup[] |
string array | Array of camera unit serials, such as [e3v8100, e3v8101]. Either IdGroup[] or SerialGroup[] must be set. |
Action |
TRIGGERGROUP |
Must be set to the literal string TRIGGERGROUP |
Duration |
string with s |
Must be 40s or shorter: for example: 30s creates a 30 second video segment, containing 15s before and 15s after the API call |
AdditionalPath |
string (optional) | additional subdirectory to nest saved videos under; only applies to videos started this time and does not update global save path |
apitoken |
string (optional) | if needed, API token as obtained above |
Stream camera video
Raw camera live view can be streamed in H264 or MJPEG codecs, whichever was set at the time of connection.
| Parameters | Value | Description |
|---|---|---|
c |
string | Camera unit serial as a string, such as e3v8100. |
rate |
numeric (optional) | Only applies to MJPEG streams: decimate video as a whole number fraction of the native framerate. For example, a 60 fps MJPEG camera can be streamed at 30, 10, 5, 2 fps, or any other whole number fraction |
Example URL for streaming from a local e3vision, for camera serial e3v8100, viewed at 10 fps.
https://localhost:4343/api/stream/http?c=e3v8100&rate=10
Camera and file management
Scan for cameras
| Parameters | Value | Description |
|---|---|---|
apitoken |
string (optional) | if needed, API token as obtained above |
List cameras
| Parameters | Value | Description |
|---|---|---|
apitoken |
string (optional) | if needed, API token as obtained above |
Set global save path
This applies globally to all streaming cameras on next video file creation.
| Parameters | Value | Description |
|---|---|---|
Filepath |
string | Global path where video files are saved |
apitoken |
string (optional) | if needed, API token as obtained above |
Set global segment duration
This applies globally to all streaming cameras on next video file creation.
| Parameters | Value | Description |
|---|---|---|
Segment |
string with h m s |
Automatic rollover of video segment with a duration string, such as 15m, 1h30m, 45m30s |
apitoken |
string (optional) | if needed, API token as obtained above |