-
Notifications
You must be signed in to change notification settings - Fork 662
API (Draft)
- Protocol And Data Format
- Authentication
- API Calls
null
values should be avoided. In requests they are however accepted but will be internally converted to false
, 0
, or empty string (""
), depending on the expected data type.
Returns details about the motionEye server.
-
successful response:
{ "name": string, "version": string, "motion_version": string }
Changes the parameters of the motionEye server.
-
expects:
{ "normal_password": string }
-
successful response:
{}
Returns the list of all registered cameras.
-
successful response:
[ { "id": number, "name": string }, ... ]
The order of the cameras in the response is the actual order of the camera frames in the UI.
Adds a camera to the server.
-
expects:
{ "type": string, "device": string, "url": string, "username": string, "password": string, "camera_id": number }
Depending on the
type
, some of the fields may be required and others may be ignored. -
fields:
-
type
- the camera type; possible values:-
"v4l2"
- V4L2 camera -
"netcam"
- network (IP) camera -
"remote"
- remote motionEye camera -
"simple"
- simple MJPEG camera
-
-
device
- the device path, used only by"v4l2"
camera type (e.g."/dev/video0"
) -
url
- the netcam or remote motionEye camera URL -
username
- the username of the netcam or remote motionEye camera -
password
- the password of the netcam or remote motionEye camera -
camera_id
- the id of the remote motionEye camera
-
-
successful response:
{ "id": number }
-
id
is the id of the new camera
-
Removes the camera with the given id from the server.
-
expects:
{}
-
successful response:
{}
Returns the device parameters of the camera with the specified id.
-
successful response:
{ "enabled": boolean, "name": string, "type": string, "rotation": number, "resolution": { "width": number, "height": number }, "framerate": number, "brightness": number, "constrast": number, "saturation": number, "hue": number, "auto_brightness": boolean }
-
fields:
-
enabled
- whether the camera is enabled or not -
name
- the camera name (between 1 and 64 characters) -
type
- the camera type; possible values:-
"v4l2"
- V4L2 camera -
"netcam"
- network (IP) camera -
"remote"
- remote motionEye camera -
"simple"
- simple MJPEG camera
-
-
rotation
- camera rotation (in degrees); possible values are0
,90
,180
and270
-
resolution
:-
width
- the camera resolution width (between 96 and 4096, multiple of 8) -
height
- the camera resolution height (between 96 and 4096, multiple of 8)
-
-
framerate
- the capturing framerate (between 1 and 30) -
brightness
- the camera brightness control (between 0 and 100) -
contrast
- the camera contrast control (between 0 and 100) -
saturation
- the camera saturation control (between 0 and 100) -
hue
- the camera hue control (between 0 and 100) -
auto_brightness
- whether the brightness is adjusted automatically or not
-
Changes the device parameters of the camera with the specified id.
-
expects:
{ "enabled": boolean, "name": string, "type": string, "rotation": number, "resolution": { "width": number, "height": number }, "framerate": number, "brightness": number, "constrast": number, "saturation": number, "hue": number, "auto_brightness": boolean }
All fields are optional and only the specified fields will be updated. For the meaning of each field, see
GET /api/camera/<id>/device
. -
successful response:
{}
Returns the media files configuration of the camera with the specified id.
-
successful response:
{ "disk": { "used": number, "total": number }, "upload_stills": boolean, "upload_movies": boolean, "webhook_url": string, "webhook_method": ["get", "post", "post_form", "post_json"], "command_enabled": boolean, "command_exec": "string" }
-
fields:
-
disk.used
- the disk usage, in bytes -
disk.total
- the total disk capacity, in bytes -
upload_stills
- whether the still images are uploaded to the configured upload service or not -
upload_movies
- whether the movies are uploaded to the configured upload service or not -
webhook_url
- the complete URL to request whenever a media file is created, including any URL-encoded query arguments (up to 512 characters); special tokens:-
%Y
- year -
%m
- month -
%d
- day -
%H
- hour -
%M
- minute -
%S
- second -
%f
- media file path
-
-
webhook_method
- the HTTP method to use; possible values:-
"get"
- a simple HTTP GET -
"post"
- a simple HTTP POST without body -
"post_form"
- an HTTP POST with form data (URL-encoded) body -
"post_json"
- an HTTP POST with JSON body
The fields transmitted in body (where applicable) are in fact the query arguments configured for
webhook_url
. -
-
command_enabled
- whether the configured command will be executed or not upon the creation of a media file -
command_exec
- a command to execute upon the creation of a media file (up to 512 characters); special tokens fromwebhook_url
apply here as well
-
-
expects:
{ "upload_stills": boolean, "upload_movies": boolean, "webhook_url": string, "webhook_method": string, "command_enabled": boolean, "command_exec": "string" }
All fields are optional and only the specified fields will be updated. For the meaning of each field, see
GET /api/camera/<id>/media
. -
successful response:
{}
Returns the text overlay configuration of the camera with the specified id.
-
successful response:
{ "left": string, "right": string }
-
fields:
-
left
- the text to overlay on the bottom-left side of the image -
right
- the text to overlay on the bottom-left side of the image
Special tokens can be used in both fields, as follows:
* `%Y` - year * `%m` - month * `%d` - day * `%H` - hour * `%M` - minute * `%S` - second * `%T` - HH:MM:SS * `%q` - frame number inside a second * `\n` - new line
-
-
expects:
{ "left": string, "right": string }
All fields are optional and only the specified fields will be updated. For the meaning of each field, see
GET /api/camera/<id>/overlay
. -
successful response:
{}
-
successful response:
{ "snapshot_url": string, "streaming_url": string, "embed_url": string, "enabled": boolean, "auth_mode": ["disabled", "basic", "digest"], "framerate": number, /* 0 - 30 */ "quality": number, /* 0 - 100 */ "resolution_downscale": number, /* 0 - 100 */ "motion_optimization": boolean }
-
expects:
{ "enabled": boolean, "auth_mode": ["disabled", "basic", "digest"], "framerate": number, /* 0 - 30 */ "quality": number, /* 0 - 100 */ "resolution_downscale": number, /* 0 - 100 */ "motion_optimization": boolean }
All fields are optional and only the specified fields will be updated. For the meaning of each field, see
GET /api/camera/<id>/streaming
. -
successful response:
{}
-
successful response:
{ "mode": ["disabled", "motion-triggered", "interval-snapshots", "all-frames"], "filename": string, "quality": number, /* 0 - 100 */, "interval": number, /* 1 - 86400 */ "preserve": number, /* 0 - 3650 */ }
-
expects:
{ "mode": ["disabled", "motion-triggered", "interval-snapshots", "all-frames"], "filename": string, "quality": number, /* 0 - 100 */, "interval": number, /* 1 - 86400 */ "preserve": number, /* 0 - 3650 */ }
All fields are optional and only the specified fields will be updated. For the meaning of each field, see
GET /api/camera/<id>/stills
. -
successful response:
{}
-
successful response:
{ "mode": ["disabled", "motion-triggered", "continuous"], "filename": string, "quality": number, /* 0 - 100 */ "format": ["mpeg4", "msmpeg4", "swf", "flv", "mov", "ogg", "mp4", "hevc", "mkv"], "max_length": number, /* 0 - 86400 */ "preserve": number, /* 0 - 3650 */ }
-
expects:
{ "mode": ["disabled", "motion-triggered", "continuous"], "filename": string, "quality": number, /* 0 - 100 */ "format": ["mpeg4", "msmpeg4", "swf", "flv", "mov", "ogg", "mp4", "hevc", "mkv"], "max_length": number, /* 0 - 86400 */ "preserve": number, /* 0 - 3650 */ }
All fields are optional and only the specified fields will be updated. For the meaning of each field, see
GET /api/camera/<id>/movies
. -
successful response:
{}
-
successful response:
{ "enabled": boolean, "frame_changes": boolean, "threshold": number, /* 0 - 20 */ "noise_level": number, /* 0 - 25 */ "light_switch_detect": boolean, "despeckle_filter": boolean, "event_gap": number, /* 1 - 86400 */ "pre_capture": number, /* 0 - 1000 */ "post_capture": number, /* 0 - 1000 */ "min_frames": number, /* 0 - 1000 */ "mask_mode": ["disabled", "smart", "editable"], "mask_sluggishness": number, /* 1 - 10 */ "mask_lines": number[][], /* 0/1 */ }
-
expects:
{ "enabled": boolean, "frame_changes": boolean, "threshold": number, /* 0 - 20 */ "noise_level": number, /* 0 - 25 */ "light_switch_detect": boolean, "despeckle_filter": boolean, "event_gap": number, /* 1 - 86400 */ "pre_capture": number, /* 0 - 1000 */ "post_capture": number, /* 0 - 1000 */ "min_frames": number, /* 0 - 1000 */ "mask_mode": ["disabled", "smart", "editable"], "mask_sluggishness": number, /* 1 - 10 */ "mask_lines": number[][], /* 0/1 */ }
All fields are optional and only the specified fields will be updated. For the meaning of each field, see
GET /api/camera/<id>/motion_detection
. -
successful response:
{}
-
successful response:
{ "email_enabled": boolean, "email_from": string, "email_to": string[], "email_smtp_server": string, "email_smtp_port": number, /* 1 - 65535 */ "email_smtp_account": string, "email_smtp_tls": boolean, "email_picture_timespan": number, /* 0 - 60 */ "webhook_enabled": boolean, "webhook_url": string, "webhook_method": ["get", "post", "post_form", "post_json"], "command_enabled": boolean, "command_exec": string }
-
expects:
{ "email_enabled": boolean, "email_from": string, "email_to": string[], "email_smtp_server": string, "email_smtp_port": number, /* 1 - 65535 */ "email_smtp_account": string, "email_smtp_tls": boolean, "email_picture_timespan": number, /* 0 - 60 */ "webhook_enabled": boolean, "webhook_url": string, "webhook_method": ["get", "post", "post_form", "post_json"], "command_enabled": boolean, "command_exec": string }
All fields are optional and only the specified fields will be updated. For the meaning of each field, see
GET /api/camera/<id>/notifications
. -
successful response:
{}
-
successful response:
{ "mode": ["disabled", "during", "outside"], "monday": [ { "from": number, /* 0 - 23 */ "to": number /* 0 - 59 */ }, ... ], ... }
-
expects:
{ "mode": ["disabled", "during", "outside"], "monday": [ { "from": number, /* 0 - 23 */ "to": number /* 0 - 59 */ }, ... ], ... }
All fields are optional and only the specified fields will be updated. For the meaning of each field, see
GET /api/camera/<id>/working_schedule
. -
successful response:
{}
home | installation | faq