Created
May 2, 2025 19:20
-
-
Save gWOLF3/669289bd59e5590c9f3d944b8673bfef to your computer and use it in GitHub Desktop.
reolink http api summary
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Reolink Camera HTTP API (Condensed) | |
Protocol | |
HTTP/HTTPS: POST only, JSON payload, Content-Type: application/json or application/octet-stream (for uploads). | |
URL: https://<camera_ip>/api.cgi?cmd=<command>[&token=<token>] | |
Authentication: | |
Long Session: Login to get token (3600s lease), append &token=<token> to URLs. | |
Short Session: Append &user=<username>&password=<password> to URLs. | |
JSON Structure:[{"cmd": "<command>", "action": 0|1, "param": {...}}] | |
action: 0 (set), 1 (get initial/range). | |
Response: [{"cmd": "<command>", "code": 0, "value": {...}}] or "error": {"rspCode": <code>, "detail": "<msg>"}. | |
Core Commands | |
System | |
GetAbility: cmd=GetAbility, param: {"User": {"userName": "<name>"}}. Returns permissions (permit), versions (ver). | |
GetDevInfo: cmd=GetDevInfo. Returns model, firmware, channel count, etc. | |
Get/SetDevName: cmd=GetDevName/SetDevName, param: {"channel": 0, "DevName": {"name": "<name>"}}. | |
Get/SetTime: cmd=GetTime/SetTime, param: {"Dst": {"enable": 0|1, ...}, "Time": {"year": <int>, "timeFmt": "DD/MM/YYYY", "timeZone": <seconds>, "hourFmt": 0|1}}. | |
Get/SetAutoMaint: cmd=GetAutoMaint/SetAutoMaint, param: {"AutoMaint": {"enable": 0|1, "weekDay": "<day>", "hour": <int>, ...}}. | |
GetHddInfo: cmd=GetHddInfo. Returns storage capacity, format status. | |
Format: cmd=Format, param: {"HddInfo": {"id": [<int>]}}. | |
Upgrade: cmd=Upgrade&clearConfig=<0|1>, multipart upgrade-package (max 40K chunks). Precede with UpgradePrepare. | |
UpgradePrepare: cmd=UpgradePrepare, param: {"restoreCfg": 0|1, "fileName": "<name>.pak"}. | |
Restore/Reboot: cmd=Restore/Reboot. | |
Get/SetAutoUpgrade: cmd=GetAutoUpgrade/SetAutoUpgrade, param: {"AutoUpgrade": {"enable": 0|1}}. | |
CheckFirmware/UpgradeOnline/UpgradeStatus: cmd=CheckFirmware/UpgradeOnline/UpgradeStatus. Check/start/monitor online upgrades. | |
Getchannelstatus: cmd=Getchannelstatus. Returns NVR channel status. | |
Security | |
Login: cmd=Login, param: {"User": {"Version": "0", "userName": "<name>", "password": "<pass>"}}. Returns Token: {"name": "<token>", "leaseTime": 3600}. | |
Logout: cmd=Logout. | |
Get/Add/Del/ModifyUser: cmd=GetUser/AddUser/DelUser/ModifyUser, param: {"User": {"userName": "<name>", "password": "<pass>", "level": "admin|guest"}}. Max 20 users. | |
GetOnline/Disconnect: cmd=GetOnline/Disconnect, param: {"User": {"userName": "<name>", "sessionId": <int>}}. | |
Get/SetSysCfg: cmd=GetSysCfg/SetSysCfg, param: {"SysCfg": {"loginLock": 0|1}}. | |
Network | |
Get/SetLocalLink: cmd=GetLocalLink/SetLocalLink, param: {"LocalLink": {"type": "DHCP|Static", "static": {"ip": "<ip>", "mask": "<mask>", "gateway": "<gw>"}, "dns": {"auto": 0|1, "dns1": "<ip>", "dns2": "<ip>"}}}. | |
Get/SetDdns: cmd=GetDdns/SetDdns, param: {"Ddns": {"enable": 0|1, "type": "no-ip|Dyndns", "userName": "<name>", "password": "<pass>", "domain": "<domain>"}}. | |
Get/SetEmail(V20): cmd=GetEmail|GetEmailV20/SetEmail|SetEmailV20, param: {"Email": {"smtpServer": "<server>", "smtpPort": <int>, "userName": "<email>", "password": "<pass>", "ssl": 0|1, "interval": "<time>", "addr1|2|3": "<email>", "schedule": {"enable": 0|1, "table": {"MD": "<168-bit>"}}}}. | |
TestEmail: cmd=TestEmail, param: {"Email": {...}}. | |
Get/SetFtp(V20): cmd=GetFtp|GetFtpV20/SetFtp|SetFtpV20, param: {"Ftp": {"server": "<ip|domain>", "port": <int>, "anonymous": 0|1, "userName": "<name>", "password": "<pass>", "remoteDir": "<path>", "streamType": <0-6>, "interval": <int>, "maxSize": <10-1024>, "schedule": {"table": {"MD": "<168-bit>"}}}}. | |
TestFtp: cmd=TestFtp, param: {"Ftp": {...}}. | |
Get/SetNtp: cmd=GetNtp/SetNtp, param: {"Ntp": {"enable": 0|1, "server": "<server>", "port": <int>, "interval": <60-65535>}}. | |
Get/SetNetPort: cmd=GetNetPort/SetNetPort, param: {"NetPort": {"httpEnable": 0|1, "httpPort": <int>, "httpsEnable": 0|1, "rtspEnable": 0|1, ...}}. | |
Get/SetUpnp: cmd=GetUpnp/SetUpnp, param: {"Upnp": {"enable": 0|1}}. | |
Get/SetWifi/TestWifi/ScanWifi/GetWifiSignal: cmd=GetWifi/SetWifi/TestWifi/ScanWifi/GetWifiSignal, param: {"Wifi": {"ssid": "<name>", "password": "<pass>"}}. | |
Get/SetPush(V20)/PushCfg: cmd=GetPush|GetPushV20/SetPush|SetPushV20, param: {"Push": {"enable": 0|1, "schedule": {"table": {"MD": "<168-bit>"}}}}, PushCfg: {"pushInterval": <20|30|60|120>}. | |
Get/SetP2p: cmd=GetP2p/SetP2p, param: {"P2p": {"enable": 0|1}}. | |
GetCertificateInfo/CertificateClear: cmd=GetCertificateInfo/CertificateClear. | |
GetRtspUrl: cmd=GetRtspUrl, param: {"channel": <int>}. Returns mainStream, subStream URLs. | |
Video Input | |
Get/SetImage: cmd=GetImage/SetImage, param: {"Image": {"channel": 0, "bright": <0-255>, "contrast": <0-255>, "saturation": <0-255>, "hue": <0-255>, "sharpen": <0-255>}}. | |
Get/SetOsd: cmd=GetOsd/SetOsd, param: {"Osd": {"channel": 0, "osdChannel": {"enable": 0|1, "name": "<str>", "pos": "<position>"}, "osdTime": {"enable": 0|1, "pos": "<position>"}, "watermark": 0|1}}. | |
Get/SetIsp: cmd=GetIsp/SetIsp, param: {"Isp": {"channel": 0, "antiFlicker": "Off|50HZ|60HZ", "exposure": "Auto|Manual", "dayNight": "Auto|Color|Black&White", ...}}. | |
Get/SetMask: cmd=GetMask/SetMask, param: {"Mask": {"channel": 0, "enable": 0|1, "area": [{"screen": {"height": <int>, "width": <int>}, "block": {"x": <int>, "y": <int>, "width": <int>, "height": <int>}}]}}. Max 4 areas. | |
Get/SetCrop: cmd=GetCrop/SetCrop, param: {"Crop": {"channel": 0, "cropWidth": <int>, "cropHeight": <int>, "topLeftX": <int>, "topLeftY": <int>}}. | |
Get/SetStitch: cmd=GetStitch/SetStitch, param: {"stitch": {"distance": <2.0-20.0>, "stitchXMove": <-100-100>, "stitchYMove": <-100-100>}}. | |
Encoding | |
Get/SetEnc: cmd=GetEnc/SetEnc, param: {"Enc": {"channel": 0, "audio": 0|1, "mainStream": {"size": "<width>*<height>", "frameRate": <int>, "bitRate": <int>, "profile": "Base|Main|High"}, "subStream": {...}}}. | |
Record | |
Get/SetRec(V20): cmd=GetRec|GetRecV20/SetRec|SetRecV20, param: {"Rec": {"channel": 0, "overwrite": 0|1, "packTime": "<30|45|60 Minutes>", "postRec": "<time>", "preRec": 0|1, "saveDay": <int>, "schedule": {"table": {"MD": "<168-bit>"}}}}. | |
Search: cmd=Search, param: {"Search": {"channel": 0, "onlyStatus": 0|1, "streamType": "main|sub", "StartTime": {...}, "EndTime": {...}}}. Returns file list or date status. | |
Download: cmd=Download&source=<path>&output=<name>. Returns file stream. | |
Snap: cmd=Snap&channel=0&rs=<random>. Returns JPEG. | |
Playback: cmd=Playback&source=<path>&output=<name>. Returns video stream. | |
NvrDownload: cmd=NvrDownload, param: {"NvrDownload": {"channel": 0, "streamType": "main|sub", "StartTime": {...}, "EndTime": {...}}}. | |
PTZ | |
Get/SetPtzPreset: cmd=GetPtzPreset/SetPtzPreset, param: {"PtzPreset": {"channel": 0, "enable": 0|1, "id": <1-64>, "name": "<str>"}}. Max 64 presets. | |
Get/SetPtzPatrol: cmd=GetPtzPatrol/SetPtzPatrol, param: {"PtzPatrol": {"channel": 0, "enable": 0|1, "id": <1-6>, "name": "<str>", "preset": [{"id": <1-64>, "dwellTime": <1-30>, "speed": <1-64>}]}}. Max 16 presets. | |
PtzCtrl: cmd=PtzCtrl, param: {"channel": 0, "op": "Stop|Left|Right|Up|Down|Auto|ToPos|StartPatrol|StopPatrol", "speed": <int>, "id": <int>}. | |
Get/SetPtzSerial: cmd=GetPtzSerial/SetPtzSerial, param: {"PtzSerial": {"channel": 0, "baudRate": <1200|2400|4800|9600>, "ctrlProtocol": "PELCO_D|PELCO_P", ...}}. | |
Get/SetPtzTattern: cmd=GetPtzTattern/SetPtzTattern, param: {"PtzTattern": {"channel": 0, "track": [{"id": <1-6>, "enable": 0|1, "name": "<str>", "running": 0|1}]}}. | |
Get/SetAutoFocus: cmd=GetAutoFocus/SetAutoFocus, param: {"AutoFocus": {"channel": 0, "disable": 0|1}}. | |
Get/StartZoomFocus: cmd=GetZoomFocus/StartZoomFocus, param: {"ZoomFocus": {"channel": 0, "pos": <int>, "op": "ZoomPos|FocusPos"}}. | |
Get/SetPtzGuard: cmd=GetPtzGuard/SetPtzGuard, param: {"PtzGuard": {"channel": 0, "benable": 0|1, "timeout": 60, "cmdStr": "setPos|toPos", "bSaveCurrentPos": 0|1}}. | |
GetPtzCheckState/PtzCheck: cmd=GetPtzCheckState/PtzCheck, param: {"channel": 0}. | |
Alarm | |
Get/SetAlarm/GetMdAlarm/SetMdAlarm: cmd=GetAlarm|GetMdAlarm/SetAlarm|SetMdAlarm, param: {"Alarm|MdAlarm": {"channel": 0, "type": "md", "scope": {"cols": <int>, "rows": <int>, "table": "<bitstring>"}, "sens": [{"beginHour": <int>, "sensitivity": <1-50>, ...}]}}. | |
GetMdState: cmd=GetMdState&channel=0. Returns state: 0|1. | |
Get/SetAudioAlarm(V20): cmd=GetAudioAlarm|GetAudioAlarmV20/SetAudioAlarm|SetAudioAlarmV20, param: {"Audio": {"enable": 0|1, "schedule": {"table": {"MD": "<168-bit>"}}}}. | |
Get/SetBuzzerAlarmV20: cmd=GetBuzzerAlarmV20/SetBuzzerAlarmV20, param: {"Buzzer": {"enable": 0|1, "diskErrorAlert": 0|1, "schedule": {"table": {"MD": "<168-bit>"}}}}. | |
AudioAlarmPlay: cmd=AudioAlarmPlay, param: {"channel": 0, "alarm_mode": "times|manu", "times": <int>, "manual_switch": 0|1}. | |
Get/SetAiAlarm/SetAlarmArea: cmd=GetAiAlarm/SetAiAlarm/SetAlarmArea, param: {"AiAlarm": {"channel": 0, "ai_type": "people|vehicle|dog_cat|face", "sensitivity": <int>, "scope": {"area": "<bitstring>"}, ...}}. | |
LED | |
Get/SetIrLights: cmd=GetIrLights/SetIrLights, param: {"IrLights": {"channel": 0, "state": "Auto|On|Off"}}. | |
Get/SetPowerLed: cmd=GetPowerLed/SetPowerLed, param: {"PowerLed": {"channel": 0, "state": "On|Off"}}. | |
Get/SetWhiteLed: cmd=GetWhiteLed/SetWhiteLed, param: {"WhiteLed": {"channel": 0, "state": 0|1, "mode": <0-2>, "bright": <1-100>, "wlAiDetectType": {"dog_cat": 0|1, ...}, "LightingSchedule": {...}}}. | |
AI | |
Get/SetAiCfg: cmd=GetAiCfg/SetAiCfg, param: {"channel": 0, "AiDetectType": {"people": 0|1, ...}, "aiTrack": 0|1, "trackType": {...}}. | |
GetAiState: cmd=GetAiState, param: {"channel": 0}. Returns alarm_state and support per AI type. | |
Preview | |
RTSP: rtsp://<user>:<pass>@<ip>:<port>/Preview_<channel>_main|sub (H.264/H.265, port 554, must enable). | |
RTMP: rtmp://<ip>/bcs/channel<channel>_main|sub|ext.bcs?channel=<id>&stream=<0|1>&user=<user>&password=<pass> (H.264 only, port 1935). | |
FLV: https://<ip>/flv?port=1935&app=bcs&stream=channel<channel>_main|sub|ext.bcs&user=<user>&password=<pass> (H.264 only). | |
Error Codes | |
0: Success. | |
-1 to -507: Errors (e.g., -1: missing params, -6: login required, -100: test failed). See full list in original spec. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment