API
The webservices described below will help you build your own application based on your Dride or dride-core enabled device. Let's dive in.
Base URL
http://192.168.10.1
Or
https://<SERIAL_NUMBER>.dride.cloud
You can either access this endpoint locally by using the base URL or by using the dride.cloud proxy server by using the DNS SERIAL_NUMBER.dride.cloud. Replace <SERIAL_NUMBER>
with your device's actual serial number.
Authentication
In order to communicate with your units, you will need a valid access token. You can acquire it via this API:
https://us-central1-dride-2384f.cloudfunctions.net/getToken?apiKey=**API_KEY**
Response
{
"idToken": "TOKEN_STRING_HERE",
"expiresIn": "3600"
}
Add your access token to each API request you make as an authorization header. For example, you should add this field to each request header:
Authorization |
TOKEN_STRING_HERE |
Need access? Email us at hello@dride.io
Routes
URL |
Params |
Type |
Description |
/getClips |
limit: int (optional, default 200) page: int (optional, default 0) fromTimestamp: int (optional) untilTimestamp: int (optional) withEMR: boolean (optional, default true) |
GET |
A list of video clips. Pagination is available via page and limit . Time range filtering via fromTimestamp and untilTimestamp . withEMR controls inclusion of Emergency/Event clips. |
Response
{
"videos": [
{
"id": "10510",
"timestamp": "10510",
"clips": [
{
"name": "front", // Camera name/identifier
"videoSrc": "http://192.168.10.1/recordings/10510/videos/0.mp4",
"thumbSrc": "http://192.168.10.1/recordings/10510/thumbs/0.jpg",
"checksum": "5f039b4ef0058a1d652f13d612375a5b"
}
],
"gpx": "http://192.168.10.1/recordings/10510/route.geojson",
"haveEmergencyEvent": true,
"event": [
{
"name": "buttonPress",
"date": 1629730257
}
],
"onSubDir": false // Indicates if stored on primary or secondary storage
}
]
}
URL |
Params |
Type |
Description |
/getEMRClips |
limit: int (optional, default 200) page: int (optional, default 0) fromTimestamp: int (optional) untilTimestamp: int (optional) |
GET |
A list of all emergency/event video clips. Pagination and time range filtering are available. |
Response
// Same as /getClips response structure
{
"videos": [
// ... array of video objects
]
}
URL |
Params |
Type |
Description |
/getRoute |
videoId: string (optional) rideId: string (optional) fromTimestamp: int (optional) untilTimestamp: int (optional) isEMR: boolean (optional, for use with videoId ) isSUB: boolean (optional, for use with videoId ) |
GET |
Get GPS route. Priority: rideId , then videoId , then fromTimestamp & untilTimestamp . If no params, latest route is fetched. isEMR and isSUB specify storage for videoId . |
Response
{
"Route": [ // Note: Field name in actual response is "Route" (capital R)
{
"timestamp": "1636446515",
"latitude": 34.443334,
"longitude": 32.548484,
"speed": 44,
"heading": 184
}
// ... more points
]
}
URL |
Params |
Type |
Description |
/triggerEvent |
eventName: string (e.g., "crash", "GPIO_event") |
GET |
Will save an emergency event under the category provided. Event videos can be retrieved via /getEMRClips. |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/getSettings |
None |
GET |
A list of device settings. |
Response
// Example (actual response contains many more fields):
{
"videoRecord": {
"value": true, // Booleans are actual booleans, not strings
"readOnly": false,
"type": "bool"
},
"resolution": {
"value": "1080p60fps",
"readOnly": false,
"type": "select",
"options": ["720p60fps", "1080p60fps", "3840p30fps"]
},
// ... other settings like flipVideo, gps, speaker, mic, etc.
"networkSSID": {
"value": "Dride4K",
"readOnly": true,
"type": "string"
},
"serial": {
"value": "YOUR_SERIAL_NUMBER",
"readOnly": true,
"type": "string"
},
"hooks": {
"type": "hooks",
"value": [
{
"id": "48a13dcd-8d7a-4bce-b39d-3daf671de38c",
"inputType": "gpio",
// ... other hook properties
}
],
// ... hook options
}
}
URL |
Params |
Type |
Description |
/setSetting |
fieldName: string fieldValue: any withReset: boolean (optional) |
GET |
Update a device setting. withReset (if true) may trigger a device reset. |
Response
{
"done": true, // Note: Field name in actual response is "done"
"Info": "NO_CHANGE" // Optional field, present if setting was already the same
}
URL |
Params |
Type |
Description |
/deleteClip |
videoId: string |
GET |
Delete a video by videoId. |
Response
{
"done": true // or false if error. Note: Field name is "done"
}
URL |
Params |
Type |
Description |
/deleteAllClips |
None |
GET |
Delete all video clips on the device. |
Response
{
"done": true // or false if error. Note: Field name is "done"
}
URL |
Params |
Type |
Description |
/getSerialNumber |
None |
GET |
Return device serial number and CPU info. |
Response
{
"serialNumber": "4da5860e7144f4386940668a26d29ec8", // Note: Field name casing
"CPU": "sun8iw16"
}
URL |
Params |
Type |
Description |
/setTimestamp |
timestamp: int (UNIX timestamp, 10 digits) |
GET |
Set device time. |
Response
{
"done": true // Note: Field name is "done"
}
URL |
Params |
Type |
Description |
/setLiveMode |
mode: string ("on" or "off") resolution: string (e.g., "4k", "1080", "640") streamType: string (optional, "all" or "mjpeg") withSlaves: boolean (optional, default true)
|
GET |
Enter or exit live mode. streamType dictates HLS/RTSP ("all") or MJPEG. withSlaves applies mode to connected slave cameras. resolution sets stream resolution. |
Response
{
"done": true, // Note: Field name is "done"
"dashboard": "http://192.168.10.1/live/dashboard", // Dashboard URL
"cameras": [ // Array of available camera streams
{
"name": "cam1",
"iframe": "http://192.168.10.1/live/camera?camId=1", // URL for iframe embedding
"hls": "http://192.168.10.1:8080/stream/camera1/index.m3u8" // HLS stream URL
}
// ... other cameras if applicable
]
}
URL |
Params |
Type |
Description |
/isOnline |
None |
GET |
Check if the dashcam is online (has internet connectivity). |
Response
{
"isOnline": true // boolean
}
URL |
Params |
Type |
Description |
/haveErrors |
None |
GET |
Check if the dashcam has any operational errors/issues. |
Response
{
"issues": ["no_sd", "another_issue"] // Array of issue strings.
}
URL |
Params |
Type |
Description |
/doFOTA |
withFile: boolean (optional) |
GET |
Update device firmware. If withFile is true, expects a file upload. Otherwise, downloads from cloud if internet is available. |
Response
{
"done": true // Note: Field name is "done"
}
URL |
Params |
Type |
Description |
/getCellularDetails |
None |
GET |
Get cellular connection status and info. |
Response
{
"provider": "Partner",
"providerStatus": "registered",
"dataService": "1",
"selectedNetwork": "3gpp",
"imei": "000000000000000",
"iccid": "00000000000000000000",
"rssi": "-68 dBm",
"rsrq": "-13 dB",
"rsrp": "-100 dBm",
"snr": "-2.4 dB",
"Model": "EC25EFAR06A21M4G",
"cellNetworkType": "lte",
"phoneNumber": "+1000000000",
"simLocked": false,
"simPresent": true,
"LTEDataUsageReceived": 22166559,
"LTEDataUsageSent": 146308417,
"fwVersion": "EC25EFAR06A21M4G_20.200.20.200"
}
URL |
Params |
Type |
Description |
/ping |
None |
GET |
Simple ping to check if the API is responsive, this can be used to detect if the device is a drideOS powered unit |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/getRides |
page: int (opt) limit: int (opt) fromTimestamp: int (opt) untilTimestamp: int (opt)
|
GET |
Fetches a list of rides with pagination and time filtering. |
Response
{
"rides": [
{
"id": "1a87755c",
"startTimestamp": 1749978375,
"endTimestamp": 1749978675,
"thumbnail": "http://192.168.10.1/recordings/1749978375/thumbs/0.webp",
"gpx": "http://192.168.10.1/getRoute?rideId=1a87755c",
"haveEmergencyEvent": false,
"active": true,
"inParking": true
}
]
}
URL |
Params |
Type |
Description |
/getRideClips |
page: int (opt) limit: int (opt) rideId: string |
GET |
Fetches clips associated with a specific ride ID. |
Response
// Similar to /getClips response
{
"videos": [
{
"id": "1749978375",
"timestamp": 1749978375,
"clips": [
{
"name": "cam0",
"videoSrc": "http://192.168.10.1/recordings/1749978375/videos/0.mp4",
"thumbSrc": "http://192.168.10.1/recordings/1749978375/thumbs/0.webp",
"duration": 60.288
},
{
"name": "cam1",
"videoSrc": "http://192.168.10.1/recordings/1749978375/videos/1.mp4",
"thumbSrc": "http://192.168.10.1/recordings/1749978375/thumbs/1.webp",
"duration": 60.736
}
],
"gpx": "http://192.168.10.1/getRoute?videoId=1749978375&isEMR=false&isSUB=false",
"haveEmergencyEvent": false,
"onSubDir": false
}
]
}
URL |
Params |
Type |
Description |
/getCurrentLocation |
None |
GET |
Gets the current GPS location of the device. |
Response
{
"route": [
{
"timestamp": 1678886400,
"latitude": 34.123,
"longitude": -118.456,
"speed": 50,
"heading": 180,
"seq": 154
}
]
}
URL |
Params |
Type |
Description |
/getSearchRange |
None |
GET |
Gets the available search range for clips (e.g., days ago). |
Response
{
"daysAgo": [
0,
1,
2,
3
]
}
URL |
Params |
Type |
Description |
/formatSubStorage |
None |
GET |
Formats the sub-storage (e.g., SD card). |
Response
{
"done": true // or error if failed
}
URL |
Params |
Type |
Description |
/getOdometer |
None |
GET |
Gets the total odometer reading and history. |
Response
{
"totalOdometer": 3663,
"history": [
{
"week": 24,
"year": 2025,
"odometer": 3659
},
{
"week": 23,
"year": 2025,
"odometer": 70707
}
]
}
URL |
Params |
Type |
Description |
/reorderCameras |
order: [{cameraId: 0, positionIndex 1},{cameraId: 1, positionIndex 0} ] |
GET |
Updates the display order of cameras. |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/startRecording |
None |
GET |
Starts video recording. |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/stopRecording |
None |
GET |
Stops video recording. |
Response
{
"done": false
}
URL |
Params |
Type |
Description |
/getLiveState |
None |
GET |
Checks if the live streaming process is running. |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/getCellularReception |
None |
GET |
Gets detailed cellular reception quality (strength, type, scores). |
Response
{
"done": true, // boolean indicating if LTE is available
"reception": "good", // e.g., "excellent", "good", "fair", "poor", "error"
"networkType": "LTE", // e.g., "3G", "LTE"
"info": {
"rssiScore": 3,
"rsrqScore": 2,
"rsrpScore": 3,
"snrScore": 1
}
}
URL |
Params |
Type |
Description |
/stopWiFi |
None |
GET |
Stops the Wi-Fi interface(s). |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/restartWiFi |
None |
GET |
Restarts the Wi-Fi interface(s). |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/restartCellular |
None |
GET |
Restarts the cellular connection. |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/getNetworkInfo |
None |
GET |
Gets basic network information (e.g., SSID). |
Response
{
"SSID": "Dride4K-cd04" // Example SSID
}
URL |
Params |
Type |
Description |
/getCurrentSTANetwork |
None |
GET |
Gets the SSID and BSSID of the currently connected Wi-Fi network (STA mode). |
Response
{
"SSID": "MyHomeWiFi",
"BSSID": "00:11:22:33:44:55"
}
URL |
Params |
Type |
Description |
/listKnownSTANetworks |
None |
GET |
Lists known/configured Wi-Fi networks (STA mode). |
Response
{
"Networks": [
{
"ssid": "MyHomeWiFi",
"password": "xxxxxx",
}
]
}
URL |
Params |
Type |
Description |
/addOrEditKnownWiFiCredential |
ssid: string password: string |
GET |
Adds or edits credentials for a known Wi-Fi network (STA mode). Password must be >= 8 chars. |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/shutdown |
None |
GET |
Shuts down the device. Response sent before actual shutdown. |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/restart |
onlyMCU: boolean (optional) |
GET |
Restarts the device, or only the MCU if onlyMCU is true. Response sent before restart. |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/resetBLE |
None |
GET |
Resets the BLE module via an MCU command. |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/isInIgnition |
None |
GET |
Checks if the device is in ignition state. |
Response
{
"inIgnition": true
}
URL |
Params |
Type |
Description |
/takePicture |
selectedCams: JSON string array (e.g., ["0","1"] ) format: string ("jpg" or "webp", default "webp") quality: int (opt, default 100) redirect: boolean (default false) |
GET |
Takes a picture with specified cameras. If redirect is true, redirects to image; otherwise, returns JSON with URL. |
Response
{
"done": true,
"url": "http://192.168.10.1/snapshots/1678886400/0.webp"
}
URL |
Params |
Type |
Description |
/uploadVideo |
accessToken: string videoId: string fleets: string (opt) isEMR: boolean (opt) isSUB: boolean (opt) |
GET |
Uploads a video to the cloud. |
Response
{
"done": true,
"videoCloudRef": "item ref in bucket"
}
URL |
Params |
Type |
Description |
/getLogs |
list: boolean (opt, default false) filter: string (opt) limit: int (opt, default 1000) page: int (opt, default 0) fromTimestamp: int (opt) untilTimestamp: int (opt) |
GET |
Fetches device logs. If list is true, returns plain text; otherwise, JSON. Filtering and pagination are available. |
Response
{
"log": [
{
"level": "info",
"ts": 1749978675,
"msg": "cellular",
"logger": "modem configuration completed..."
}
]
}
Thu Jan 1 00:38:21 1970 warn || Unit offline, cannot sync video queue right now
Thu Jan 1 00:38:19 1970 info || [success]✓ connected to slave BLE status: wakeup
Thu Jan 1 00:38:18 1970 info || [success]✓ ring triggered
Thu Jan 1 00:38:12 1970 error || signal: terminated
Thu Jan 1 00:38:06 1970 error || We've lost internet connection, try to reconnect..
Thu Jan 1 00:38:01 1970 info || temp
Thu Jan 1 00:37:56 1970 info || cellular
Thu Jan 1 00:37:52 1970 info || [success]GPS is activated
Thu Jan 1 00:37:52 1970 info || GPS state: +QGPS: 1
Thu Jan 1 00:37:52 1970 info || Activating GPS GPS is not enabled
Thu Jan 1 00:37:52 1970 error || modem resp error +CME ERROR: 504| AT+QGPS?
Thu Jan 1 00:37:50 1970 info || start record GPS
Thu Jan 1 00:37:49 1970 warn || Restart of process Successful 1340
// ... more log entries
URL |
Params |
Type |
Description |
/getDiagnostics |
None |
GET |
Gets diagnostic information about the device. |
Response
{
"Device": "Dride4K",
"cameras": [
{
"connected": true,
"name": "cam0",
"ip": "",
"physicalPort": "MIPI1",
"bleMac": ""
},
{
"connected": true,
"name": "cam1",
"ip": "",
"physicalPort": "MIPI2",
"bleMac": ""
},
{
"connected": true,
"name": "cam3",
"ip": "192.168.10.222",
"physicalPort": "WLAN0",
"bleMac": ""
}
],
"mainStorageCapacity": "116 GB",
"subStorageCapacity": "14 GB",
"temperature": 76,
"isOnline": false,
"lteSignal": "Good",
"display": false,
"gpsFix": true,
"gpsSNR": "12, 11, 5, 14",
"gpsSAT": "12",
"camerasCount": 3,
"on5V": false,
"OSVersion": "1.74.0",
"MCUVersion": "1.11.0",
"wlan0": true,
"wlan1": false,
"batteryVoltage": "1226",
"ignitionVoltage": "1128"
}
URL |
Params |
Type |
Description |
/qr |
None |
GET |
Generates and returns a QR code image for easy device linking via mobile app. |
Response
image/png content (binary data for QR code)
URL |
Params |
Type |
Description |
/canBeSlaveCam |
None |
GET |
Checks if the device is capable and configured to act as a slave camera in a multicam setup. |
Response
{
"canBeSlave": false,
}
URL |
Params |
Type |
Description |
/entangleCamera |
masterCameraMAC: string waitLongerForAP: boolean (opt) |
GET |
Entangles this device as a slave to a master camera using its MAC address. |
Response
{
"done": true,
"ip": "192.168.10.114" // IP address assigned
}
URL |
Params |
Type |
Description |
/entangleSlaveViaBLE |
slaveBLName: string masterWiFiMac: string slaveWiFiMac: string (opt) |
GET |
Master unit entangles a slave camera via a BLE connection handshake. |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/getSlaveCandidates |
None |
GET |
(Master unit) Finds potential slave cameras on the local network (ARP scan). |
Response
{
"candidates": [
{
"SSID": "DrideMini-f48e",
"BSSID": "B8:13:32:B4:29:16",
"signal": -33,
"signalTotal": 5,
"signalQuality": 5,
"channel": 36,
"security": "wep",
"frequency": "5.18 GHz",
"entangled": false
}
]
}
URL |
Params |
Type |
Description |
/getEntangledCameras |
None |
GET |
(Master unit) Gets a list of currently entangled slave cameras. |
Response
{
"candidates": [
{ "SSID": "DrideMini-f48e", "BSSID": "AA:BB:CC:DD:EE:FF", }
]
}
URL |
Params |
Type |
Description |
/haveConnectedCameras |
None |
GET |
(Master unit) Checks and lists IPs of connected slave cameras. |
Response
{
"slaves": [
"192.168.10.222"
]
}
URL |
Params |
Type |
Description |
/notifyMasterUnitIsAlive |
None |
GET |
(Slave unit) Notifies the master unit that this slave is alive (used for ARP registration). |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/getMulticamInfo |
None |
GET |
Gets information about the multicam setup (role, master/slave IPs, etc.). |
Response
{
"done": true,
"data": {
"slaveCameras": [
{
"ip": "192.168.10.222",
"osVersion": "1.74.0",
"mcuVersion": "1.11.0",
"deviceType": "Mini",
"serial": "00000000000000000000000000000000",
"bleStatus": "bleDisconnected",
"mainStorageCapacity": "7 GB",
"subStorageCapacity": "",
"temperature": 47,
"isOnline": true,
"batteryVoltage": "",
"ignitionVoltage": "",
"dfuOnBoot": true,
"flip": false,
"mirror": false,
"wiFiSignal": "-38 dBm",
"wiFiBars": 4
}
]
}
}
URL |
Params |
Type |
Description |
/getWiFiSignal |
None |
GET |
(Slave unit, if in STA mode) Gets Wi-Fi signal strength to the master AP. |
Response
{
"done": true,
"signal": {
"signal": -39,
"signalBars": 4
}
}
URL |
Params |
Type |
Description |
/scanForSTACandidates |
interface: string (opt, e.g. "wlan0", "wlan1") |
GET |
Scans for available Wi-Fi networks (STA mode candidates) on the specified interface. |
Response
[
{
"SSID": "Home1",
"BSSID": "00:11:22:33:44:55",
"signal": -41,
"signalTotal": 5,
"signalQuality": 5,
"channel": 36,
"security": "wep",
"frequency": "5.18 GHz",
"entangled": false
},
{
"SSID": "HOME2",
"BSSID": "01:12:23:34:45:56",
"signal": -79,
"signalTotal": 5,
"signalQuality": 2,
"channel": 36,
"security": "wep",
"frequency": "5.18 GHz",
"entangled": false
},
]
URL |
Params |
Type |
Description |
/removeExternalNetworks |
ssid: string |
GET |
Removes a Wi-Fi network credential. |
Response
{
"done": true
}
URL |
Params |
Type |
Description |
/speedTest |
None |
GET |
Performs an internet speed test (upload/download). |
Response
{
"done": true,
"data": {
"latency": 73,
"dl_speed": 1.616168707472649,
"ul_speed": 0.2354488927200212,
"server": "Server 1 north",
"country": "United States",
"distance": 144.03496987543417,
"sponsor": "ATT"
}
}
URL |
Params |
Type |
Description |
/upTime |
None |
GET |
Gets the system uptime. |
Response
{
"done": true,
"Uptime": 3600.5 // System uptime in seconds
}
Settings Parameters
This table lists common parameters that can be read via /getSettings
and, for many, updated via /setSetting
. Refer to the /getSettings
response for a comprehensive list of all available settings and their current values, types, and read-only status.
Param |
Type |
Settable |
Description |
debugLevel |
select (string) |
Yes |
Set debug log level. |
videoRecord |
bool |
Yes |
Turn video recording on/off. |
radar |
bool |
Yes |
Enable/disable radar. |
disableRadarOnIGN |
bool |
Yes |
Disable radar when ignition is on. |
radarInIgnition |
bool |
Yes |
Enable radar only when ignition is on. |
virtualCamerasEnabled |
bool |
Yes |
Enable/disable virtual cameras. |
shareVideosPublicly |
bool |
Yes |
Share videos publicly by default. |
shareButton |
bool |
Yes |
Enable/disable share button. |
parkingModeOffloading |
bool |
Yes |
Enable/disable offloading in parking mode. |
shareWithCellular |
bool |
Yes |
Allow sharing videos over cellular. |
internalCamera |
bool |
Yes |
Enable/disable internal camera. |
gps |
bool |
Yes |
Turn GPS on/off. |
suspendGPSInParking |
bool |
Yes |
Suspend GPS in parking mode. |
speaker |
bool |
Yes |
Enable/disable speaker. |
evergreen |
bool |
Yes |
Enable/disable evergreen mode. |
mic |
bool |
Yes |
Enable/disable microphone. |
resolution |
select (string) |
Yes |
Set video resolution (e.g., '720p60fps', '1080p60fps', '3840p30fps'). |
gSensorSensitivity |
int/range |
Yes |
Set G-sensor sensitivity (impact detection). |
maxLedBrightness |
int/range |
Yes |
Set maximum LED brightness. |
networkSSID |
string |
Yes |
Set Wi-Fi network SSID (AP mode). |
use24wifi |
bool |
Yes |
Use 2.4GHz Wi-Fi band. |
pauseRemoteLiveAfterTimeout |
bool |
Yes |
Pause remote live after timeout. |
recordLiveStream |
bool |
Yes |
Record live stream. |
bootInLive |
bool |
Yes |
Boot device in live mode. |
useInternalStorageForVideos |
bool |
Yes |
Use internal storage for videos. |
useFATFileSystem |
bool |
Yes |
Use FAT filesystem for storage. |
dfuOnBoot |
bool |
Yes |
Enable DFU (Device Firmware Update) on boot. |
preferWiFiSTAOverAP |
bool |
Yes |
Prefer Wi-Fi STA (client) mode over AP (access point) mode. |
parkingReminder |
bool |
Yes |
Enable/disable parking reminder. |
fastNotificationAlert |
bool |
Yes |
Enable/disable fast notification alerts. |
flip |
bool |
Yes |
Flip video 180 degrees. |
mirror |
bool |
Yes |
Mirror video horizontally. |
networkPassword |
string |
Yes |
Set Wi-Fi network password (AP mode, min 8 chars, WPA3 validated). |
hideSSID |
bool |
Yes |
Hide Wi-Fi SSID (AP mode). |
apn |
string |
Yes |
Set cellular APN (Access Point Name). |
apnUsername |
string |
Yes |
Set cellular APN username. |
apnPassword |
string |
Yes |
Set cellular APN password. |
nightMode |
bool |
Yes |
Enable/disable night mode. |
parkingMode |
bool |
Yes |
Enable/disable parking mode. |
depletionLevel |
float (string, 1 decimal) |
Yes |
Set battery depletion level (e.g., "11.5"). |
waitBeforeSleep |
string |
Yes |
Set wait time before sleep. |
smartTrimConcat |
bool |
Yes |
Enable/disable smart trim concat. |
thumbnails |
bool |
Yes |
Enable/disable thumbnail generation. |
shareHotspot |
bool |
Yes |
Enable/disable hotspot sharing. |
utcOffset |
string |
Yes |
Set UTC offset. |
timezone |
string |
Yes |
Set timezone. |
country |
string |
Yes |
Set country. |
language |
string |
Yes |
Set language. |
showWatermark |
bool |
Yes |
Show/hide video watermark. |
nickname |
string |
Yes |
Set device nickname. |
speedUnit |
select (string) |
Yes |
Set speed unit (e.g., "km/h", "mph"). |
soundType |
select (string) |
Yes |
Set sound type ("classic", "cowboy", etc). |
dateFormat |
select (string) |
Yes |
Set date format. |
serial |
string |
No |
Device serial number (read-only). |
osVersion |
string |
No |
Device OS version (read-only). |
fwVersion |
string |
No |
Device firmware version (read-only). |
hooks |
array/object |
|
|
Example for `/setSetting`:
http://192.168.10.1/setSetting?fieldName=videoRecord&fieldValue=false
Static Routes
Static routes offer direct access to media files like thumbnails, videos, and GPS data.
When accessing via a cloud URL (https://<SERIAL_NUMBER>.dride.cloud/...
), a valid token
query parameter is required (see /getAssetToken
).
The download=true
query parameter can be added to force a browser download with a filename.
Base paths for static assets:
-
/recordings/
: Main storage for video clips, thumbnails, and route data.
-
/recordingsSub/
: Secondary storage (e.g., internal eMMC) for video clips, thumbnails, and route data.
-
/recordingsEMR/
: Storage for emergency event clips.
-
/snapshots/
: Storage for still images taken via /takePicture
or other events.
-
/logs/
: Access to system and application log files.
Examples:
- Video:
http://192.168.10.1/recordings/<VIDEO_ID>/videos/<CAMERA_NAME_OR_INDEX>.mp4
- e.g.,
http://192.168.10.1/recordings/1515036499325/videos/0.mp4
- Thumbnail:
http://192.168.10.1/recordings/<VIDEO_ID>/thumbs/<CAMERA_NAME_OR_INDEX>.jpg
- e.g.,
http://192.168.10.1/recordings/1515036499325/thumbs/0.jpg
- Route Data:
http://192.168.10.1/recordings/<VIDEO_ID>/route.geojson
- e.g.,
http://192.168.10.1/recordings/1515036499325/route.geojson
- Snapshot:
http://192.168.10.1/snapshots/<TIMESTAMP>/<CAMERA_INDEX>.<FORMAT>
- e.g.,
http://192.168.10.1/snapshots/1678886400/0.webp
- Latest Snapshot:
http://192.168.10.1/snapshots/latest?camIndex=0
(redirects, add &token=
if cloud)
- Latest Clip Video:
http://192.168.10.1/recordings/latest?camIndex=0
(redirects, add &token=
if cloud)
- Latest Clip Thumbnail:
http://192.168.10.1/recordings/latest?thumb=true&camIndex=0
(redirects, add &token=
if cloud)
- Log file:
http://192.168.10.1/logs/dride.log
(actual log filenames may vary)
Accessing the API
First, establish a Wi-Fi connection with your device (it usually creates an Access Point) or ensure your workstation and the device are on the same local network. The device's local IP is typically 192.168.10.1
.
An Example:
This request will return the device serial number:
http://192.168.10.1/getSerialNumber
And output (example):
{"SerialNumber":"00000000445acdb3", "CPU":"sun8iw16"}
Live stream
You can live stream video from the device using HLS or MJPEG. First, ensure live mode is active using the /setLiveMode
endpoint.
1. HLS (HTTP Live Streaming):
- After calling
/setLiveMode?mode=on
(with streamType="all"
or default), the response will contain HLS URLs for each camera.
- Example HLS URL (from
/setLiveMode
response):
http://192.168.10.1:8080/stream/camera1/index.m3u8
- This stream can be played in browsers with HLS support (e.g., Safari, or others with libraries like hls.js).
HLS is a browser-friendly video streaming protocol.
2. MJPEG Stream:
- After calling
/setLiveMode?mode=on&streamType=mjpeg
, an MJPEG stream is available.
- Endpoint:
/live/stream
- Parameter:
devNum=[0 or 1]
(selects the camera, typically 0 for primary).
- Example MJPEG URL:
http://192.168.10.1/live/stream?devNum=0
- This stream can be embedded in web pages (e.g., in an
<img>
tag) or opened in media players like VLC.
MJPEG is suitable for low-latency preview but has higher bandwidth than H.264/H.265 based streams.
3. RTSP (Real Time Streaming Protocol):
- The documentation previously mentioned
rtsp://192.168.10.1:8554/ch0
.
- If
/setLiveMode
(with streamType="all"
) enables an RTSP server, this URL might still be valid. Configuration of the RTSP server is handled internally by setLiveMode
.
- RTSP streams are typically viewed with media players like VLC, mplayer, or FFMPEG.
You can open VLC, mplayer, or FFMPEG to view RTSP live streams on your PC.
4. Live View HTML Pages:
-
/live/dashboard
: Provides an HTML dashboard page (content defined by index.tmpl
).
-
/live/camera?camId=<ID>
: Provides an HTML page for a specific camera's live view (content defined by camera.tmpl
), often embedding one of the stream types above.