Created
May 2, 2025 19:20
-
-
Save gWOLF3/669289bd59e5590c9f3d944b8673bfef to your computer and use it in GitHub Desktop.
Revisions
-
gWOLF3 created this gist
May 2, 2025 .There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,125 @@ 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.