Requests


List cameras

Returns a paginated list of cameras

Parameters:

Name Type Description Required
token String user's Monuv token
p String live url stream format (set to p=hls for Apple HLS)
page Integer Page number (Default: 1)

Response Main Fields:

Name Type Description
id String camera id
description String camera's description
stream_status_desc String camera's status description (ONLINE, OFFLINE, ERRO PERMANENTE, etc.)
live_url String live video url (this url should be given to the video player)
server_url String url of the server which the camera is connected
thumb_url String url to the camera's last thumbnail
digest String digest for camera API requests
player_digest String digest for camera player access (valid for current day). Use this to access the player without authentication token
hash String hash for camera video requests
client_id String camera's client id
address String camera's address
latitude String camera's latitude
longitude String camera's longitude
recording_error Boolean Informs if the camera recording has any errors
plan String Informs camera hired plan
last_recieved_width Integer Informs witdh of the last recieved video (given a caching interval)
last_recieved_height Integer Informs height of the last recieved video (given a caching interval)
resolution_error Boolean Informs if the recieved video dimensions are compatible with the camera current plan
{
    "data": [
        {
            "id": "0000",
            "description": "Teste IA#0000",
            "stream_status_desc": "OFFLINE",
            "live_url": "LIVE_URL",
            "server_url": "",
            "thumb_url": "THUMB_URL",
            "digest": "DIGEST",
            "player_digest": "PLAYER_DIGEST",
            "hash": "HASH",
            "client_id": "CLIENT_ID",
            "address": "ADRESS",
            "latitude": "LAT",
            "longitude": "LON",
            "plan": " HD  (7 dias)",
            "last_recieved_width": 1280,
            "last_recieved_height": 720,
            "resolution_error": 0,
        },
        ...
    ],
    "total": 100,
    "per_page": 10,
    "current_page": 1,
    "last_page": 10,
    "from": 1,
    "to": 10
}

Code example

curl --location 'https://app.monuv.com.br/api/v4/cameras?token=USER_TOKEN'
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/v4/cameras?token=USER_TOKEN',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
import requests

url = "https://app.monuv.com.br/api/v4/cameras?token=USER_TOKEN"

response = requests.request("GET", url)

print(response.text)

Get camera

Returns a registered camera object

Parameters:

Name Type Description Required
token String user's Monuv token

Response Main Fields:

Name Type Description
id String camera id
description String camera's description
status String camera's status description (ONLINE, OFFLINE, ERRO PERMANENTE, etc.)
live_url String live video url (this url should be given to the video player)
server_url String url of the server which the camera is connected
thumb_url String url to the camera's last thumbnail
digest String digest for camera API requests
player_digest String digest for camera player access (valid for current day). Use this to access the player without authentication token
hash String hash for camera video requests
client_id String camera's client id
address String camera's address
latitude String camera's latitude
longitude String camera's longitude
recording_error Boolean Informs if the camera recording has any errors
plan String Informs camera hired plan
last_recieved_width Integer Informs witdh of the last recieved video (given a caching interval)
last_recieved_height Integer Informs height of the last recieved video (given a caching interval)
resolution_error Boolean Informs if the recieved video dimensions are compatible with the camera current plan
{
    "id": "0000",
    "description": "Teste IA#0000",
    "status": "OFFLINE",
    "live_url": "LIVE_URL",
    "server_url": "",
    "thumb_url": "THUMB_URL",
    "digest": "DIGEST",
    "player_digest": "PLAYER_DIGEST",
    "hash": "HASH",
    "client_id": "CLIENT_ID",
    "address": "ADRESS",
    "latitude": "LAT",
    "longitude": "LON",
    "plan": " HD  (7 dias)",
    "last_recieved_width": 1280,
    "last_recieved_height": 720,
    "resolution_error": 0,
}

Code example

curl --location 'https://app.monuv.com.br/api/camera-player/1001?token=USER_TOKEN'
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/camera-player/1001?token=USER_TOKEN',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
import requests

url = "https://app.monuv.com.br/api/camera-player/1001?token=USER_TOKEN"

response = requests.request("GET", url)

print(response.text)

Get camera player

Returns HTML with the camera's video player

Parameters:

Name Type Description Required
player_digest String camera player digest obtained from camera listing (valid for current day) (or token)
id Integer camera id
footer Boolean Video timeline visibility
0 = Hidden
1 = Visible
controls Boolean Video controls visibility
0 = Hidden
1 = Visible
ts Integer Unix timestamp (seconds) to set recording player start (0 for live stream)
delay Integer delay in seconds to how further back the player will start from the given timestamp
timeline_interval Integer Timeline range that will be displayed (Default 24 hours)
10 = 10 minutes
1 = 1 hour
24 = 24 hour
video_speed String Speed at which recorded video will be displayed (Default 1x)
options: 0.5, 1, 2, 4, 8, 16
hideFooter Boolean Remove footer padding
true = Hidden
false = Visible
hideHeader Boolean Remove header padding
true = Hidden
false = Visible
fixFullScreen Boolean Remove outer paddings to allow full container usage
true = Enabled
false = Disabled
timeline_ranges String (JSON array) Custom timeline highlight ranges. Accepted range keys: start_ts + end_ts or ini + end (milliseconds)
start_ts Integer Single custom highlight start timestamp in milliseconds (alternative to timeline_ranges)
end_ts Integer Single custom highlight end timestamp in milliseconds (alternative to timeline_ranges)
start_timestamps[] Integer[] List of custom highlight start timestamps in milliseconds (paired by index with end_timestamps[])
end_timestamps[] Integer[] List of custom highlight end timestamps in milliseconds (paired by index with start_timestamps[])
timeline_ranges_fill String Default fill color used for custom highlight ranges. Accepted formats: #RGB, #RRGGBB, #RRGGBBAA, rgb(...), rgba(...)
token String user's Monuv token (alternative authentication method - use player_digest instead)

Response:

'<!DOCTYPE html>\n<html lang="pt-br" style=\'height:100%\'>\n<head>\n\n (...)

Code example

# Using player_digest (default method)
curl --location 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST'

# Alternative: using token
# curl --location 'https://app.monuv.com.br/api/camera/0000/player?token=USER_TOKEN'

# 1) Highlight only (default color)
# curl --location --globoff 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000}]'

# 2) One color for all custom ranges
# curl --location --globoff 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000},{"start_ts":1777319000000,"end_ts":1777319300000}]&timeline_ranges_fill=%23FFCC00'

# 3) One color per range
# curl --location --globoff 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000,"fill":"#FFCC00"},{"start_ts":1777319000000,"end_ts":1777319300000,"fill":"#00C853"}]'
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

// Using player_digest (default method)
let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST',
};

// Alternative: using token
// url: 'https://app.monuv.com.br/api/camera/0000/player?token=USER_TOKEN',

// 1) Highlight only (default color)
// url: 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000}]',

// 2) One color for all custom ranges
// url: 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000},{"start_ts":1777319000000,"end_ts":1777319300000}]&timeline_ranges_fill=%23FFCC00',

// 3) One color per range
// url: 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000,"fill":"#FFCC00"},{"start_ts":1777319000000,"end_ts":1777319300000,"fill":"#00C853"}]',

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
import requests

# Using player_digest (default method)
url = 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST'

# Alternative: using token
# url = 'https://app.monuv.com.br/api/camera/0000/player?token=USER_TOKEN'

# 1) Highlight only (default color)
# url = 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000}]'

# 2) One color for all custom ranges
# url = 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000},{"start_ts":1777319000000,"end_ts":1777319300000}]&timeline_ranges_fill=%23FFCC00'

# 3) One color per range
# url = 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000,"fill":"#FFCC00"},{"start_ts":1777319000000,"end_ts":1777319300000,"fill":"#00C853"}]'

response = requests.request("GET", url)

print(response.text)

Get recordings

Returns an array of jsons of stored recordings

Parameters:

Name Type Description Required
token String user's Monuv token
id Integer camera id
digest String camera digest obtained from camera listing
timeStamp Integer Unix timestamp (miliseconds) to set first time recording
p String live url stream format (set to p=hls for Apple HLS)

Response:

Name Type Description
CODE String return code (0 for success, 1 for error)
MSG String in case of error, related error message
DATA Array array of jsons describing the recordings
Data:
Name Type Description
ini String Unix timestamp (miliseconds) of first recording
start_date String timestamp of first recording (YYYY-MM-DD HH:ii:ss)
dur String video duration in ms
file String video file name
url String video url (to be give to the video player)
{   "DATA":
        [{ "ini":1679324828000,
           "start_date":"2023-03-20 12:07:08",
           "dur":62000,
           "file":"VIDEO.mp4",
           "url":"VIDEO_URL"},
           (...)
        ]
}

Code example

curl --location 'https://app.monuv.com.br/cameras/0000/recordings/?token=USER_TOKEN&digest=CAMERA_DIGEST'
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/cameras/0000/recordings/?token=USER_TOKEN&digest=CAMERA_DIGEST',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
import requests

url = 'https://app.monuv.com.br/cameras/0000/recordings/?token=USER_TOKEN&digest=CAMERA_DIGEST'

response = requests.request("GET", url)

print(response.text)

Get hourly images

Returns an array of jsons of stored hourly generated captures

Parameters:

Name Type Description Required
token String user's Monuv token
id Integer camera id
digest String camera digest obtained from camera listing
ts Integer Unix timestamp (seconds) to set first time recording

Response:

[
    {
        "ts": 1648782000,
        "url": "THUMB_URL"
    },
           (...)
]

Code example

curl --location 'https://app.monuv.com.br/api/camera/0000/thumbs-hourly?ts=1648844377&token=USER_TOKEN&digest=CAMERA_DIGEST'
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/camera/0000/thumbs-hourly?ts=1648844377&token=USER_TOKEN&digest=CAMERA_DIGEST',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
import requests

url = 'https://app.monuv.com.br/api/camera/0000/thumbs-hourly?ts=1648844377&token=USER_TOKEN&digest=CAMERA_DIGEST'

response = requests.request("GET", url)

print(response.text)

Get minute-by-minute images

Returns an array of jsons of stored generated captures minute-by-minute

Parameters:

Name Type Description Required
token String user's Monuv token
id Integer camera id
digest String camera digest obtained from camera listing
ts Integer Unix timestamp (seconds) to set first time recording

Response:

[
    {
        "ts": 1648782000,
        "url": "THUMB_URL"
    },
           (...)
]

Code example

curl --location 'https://app.monuv.com.br/api/camera/0000/thumbs-minutes?ts=1648844377&token=USER_TOKEN&digest=CAMERA_DIGEST'
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/camera/0000/thumbs-minutes?ts=1648844377&token=USER_TOKEN&digest=CAMERA_DIGEST',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
import requests

url = 'https://app.monuv.com.br/api/camera/0000/thumbs-minutes?ts=1648844377&token=USER_TOKEN&digest=CAMERA_DIGEST'

response = requests.request("GET", url)

print(response.text)

Get camera live stream url

Returns camera live stream url

Parameters:

Name Type Description Required
token String user's Monuv token
id Integer camera id

Response:

Name Type Description
code String return code (0 for success, 1 for error)
msg String in case of error, related error message
data String live stream url
{
    "code": 0,
    "msg": "",
    "data": "LIVE_STREAM_URL"
}

Code example

curl --location 'https://app.monuv.com.br/api/cameras/0000/live-url/?token=USER_TOKEN'
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/cameras/0000/live-url/?token=USER_TOKEN',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
import requests

url = 'https://app.monuv.com.br/api/cameras/0000/live-url/?token=USER_TOKEN'

response = requests.request("GET", url)

print(response.text)

Create downloadable video

Generates a continuos video evidence set between given timestamps

Parameters:

Name Type Description Required
token String user's Monuv token
camera_id Integer camera id
start_at Integer Unix timestamp (miliseconds) of video start
end_at Integer Unix timestamp (miliseconds) of video end
description String add a description to video

Response:

Name Type Description
code String return code (0 for success, 1 for error)
msg String in case of error, related error message
data Array array of jsons describing the requested video generation
video_thumb String url to the generated video thumbnail
Data:
Name Type Description
camera_id Integer camera id
description String video description
start_date String video start date (YYYY-MM-DD HH:MM:SS)
end_date String video end date (YYYY-MM-DD HH:MM:SS)
create_user_id Integer user id that created the video
update_user_id Integer user id that updated the video
status Integer 0 - under creation, 1 - success, 2 - erro generating video
id Integer downloadable video id
camera_name String camera name
last_thumb String url to the camera's last thumbnail
StartDateF String video start formated date (DD/MM/YYYY HH:MM)
EndDateF String video end formated date (DD/MM/YYYY HH:MM)
UrlDrive String downloadable video url
updated_at/created_at:
Name Type Description
date String date (YYYY-MM-DD HH:MM:SS)
timezone_type Integer timezone
timezone String timezone description
{
    "code": 0,
    "msg": "Vídeo sendo gerado. Para acompanhar os vídeos salvos, acesse a lista de vídeos salvos.",
    "video_thumb": "https://drives2.monuv.com.br/00000/00000.jpg",
    "data": {
        "camera_id": 00000,
        "description": "test",
        "start_date": "2024-08-28 19:02:36",
        "end_date": "2024-08-28 19:07:36",
        "create_user_id": 00000,
        "update_user_id": 00000,
        "status": 0,
        "updated_at": {
            "date": "2025-12-01 10:24:20.000000",
            "timezone_type": 3,
            "timezone": "America/Bahia"
        },
        "created_at": {
            "date": "2025-12-01 10:24:20.000000",
            "timezone_type": 3,
            "timezone": "America/Bahia"
        },
        "id": 00000,
        "camera_name": "Test",
        "last_thumb": "https://thumbnails.staging.monuv.com.br/00000/last/00000.jpg",
        "StartDateF": "28/08/2024 19:02",
        "EndDateF": "28/08/2024 19:07",
        "UrlDrive": "https://drives2.monuv.com.br/00000/"
    }
}

Code example

curl --location --request POST 'https://app.monuv.com.br/v2/api/drives?token=USER_TOKEN&camera_id=0000&start_at=1679324828000&end_at=1679325074000&description=DESC
const axios = require('axios');

let config = {
		method: 'post',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/v2/api/drives?token=USER_TOKEN&camera_id=0000&start_at=1679324828000&end_at=1679325074000&description=DESC',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
import requests

url = "https://app.monuv.com.br/v2/api/drives?token=USER_TOKEN&camera_id=0000&start_at=1679324828000&end_at=1679325074000&description=DESC"

response = requests.request("POST", url)

print(response.text)

List downloadable videos

List generated downloadable videos

Parameters:

Name Type Description Required
token String user's Monuv token
ids Integer downloadable videos ids (The ids must be separated by a comma, e.g.: 1001,1002)

Response:

Name Type Description
code String return code (0 for success, 1 for error)
msg String in case of error, related error message
data Array array of jsons describing the requested video generation
Data:
Name Type Description
id Integer downloadable video id
description String video description
url String generated video url
startDateF String video start date (YYYY-MM-DD HH:MM:SS)
endDateF String video end date (YYYY-MM-DD HH:MM:SS)
tsStart Integer Unix timestamp (miliseconds) of video start
tsEnd Integer Unix timestamp (miliseconds) of video end
camera_name String camera name
status Integer 0 = under creation, 1 = success, 2 = error generating video
last_thumb String url to the camera's last thumbnail
video_thumb String url to the generated video thumbnail
{
    "code": 0,
    "msg": "",
    "data": [
        {
            "id": 0000,
            "description": "cool",
            "url": "https://drives.monuv.com.br/00000/642de16230789",
            "startDateF": "20/03/2023 12:07",
            "endDateF": "20/03/2023 12:11",
            "tsStart": 1679324828,
            "tsEnd": 1679325074,
            "camera_name": "CAMERA_NAME",
            "status": 1,
            "last_thumb": "LAST_THUMB_URL",
            "video_thumb": "VIDEO_THUMB_URL"
        }
    ]
}

Code example

curl --location 'https://app.monuv.com.br/v2/api/drives?token=USER_TOKEN'
const axios = require('axios');

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/v2/api/drives?token=USER_TOKEN',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
import requests

url = "https://app.monuv.com.br/v2/api/drives?token=USER_TOKEN"

response = requests.request("GET", url)

print(response.text)

Remove downloadable video

Remove generated downloadable video

Parameters:

Name Type Description Required
token String user's Monuv token
id Integer generated video id

Response:

Name Type Description
code String return code (0 for success, 1 for error)
msg String in case of error, related error message
{
    "code": 0,
    "msg": "Vídeo excluído com sucesso.",
    "data": []
}

Code example

curl --location --request POST 'https://app.monuv.com.br/v2/api/drives/delete/0000?token=USER_TOKEN'
const axios = require('axios');

let config = {
		method: 'post',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/v2/api/drives/delete/0000?token=USER_TOKEN',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
import requests

url = 'https://app.monuv.com.br/v2/api/drives/delete/0000?token=USER_TOKEN'

response = requests.request("POST", url)

print(response.text)

Get camera snapshot

Returns a camera snapshot

  • Path: https://app.monuv.com.br/api/v1/cameras/{id}/print
  • Method: GET - Returns the last snapshot the camera or when using the TS parameter, returns a snapshot referring to the exact time passed.
  • Method: POST - Generate and returns a current snapshot from the camera

Parameters:

Name Type Description Required
id Integer camera id
token String user's Monuv token
digest String camera digest obtained from camera listing
ts Integer timestamp in UNIX format

Response:

Name Type Description
code String return code (0 for success, 1 for error)
msg String in case of error, related error message
print Object object with the link to the camera snapshot
{
  "print": "https://thumbnails.staging.monuv.com.br/00000/print/642de16230789"
}

Code example

curl --location 'https://app.monuv.com.br/api/v1/cameras/{id}/print?token=USER_TOKEN'
const axios = require('axios');

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/v1/cameras/{id}/print?token=USER_TOKEN',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
import requests

url = "https://app.monuv.com.br/api/v1/cameras/{id}/print?token=USER_TOKEN"

response = requests.request("GET", url)

print(response.text)