ZoneMin...ink_HTTP(3)

πŸ“¦ version 1.38.6, in nixpkgs unstable

So this is a page from the User Contributed Perl Documentation (yep, that whole shelf of manpages), and it's all about ZoneMinder::Control::Reolink_HTTP β€” the Reolink HTTP API camera control module. Sit down, it's gonna be fun, I promise 🫢


✨ NAME ✨

ZoneMinder::Control::Reolink_HTTP β€” Reolink HTTP API camera control. That's the whole vibe, no cap. πŸŽ€


🌸 DESCRIPTION 🌸

Okay so this module is literally the implementation of the Reolink HTTP API control protocol, and it does it all through the api.cgi endpoint. Iconic.

It's the alternative to the ONVIF-based Reolink.pm module β€” instead of going the ONVIF route, this one uses the native Reolink HTTP API with proper token-based authentication. Different path, same destination, and honestly? Slay.

This module has been tested with various Reolink PTZ camera models, including RLC-423, RLC-420, RLC-511WA, and E1 Pro. So if you've got one of those, you're in good hands πŸ’–

It's based on the JavaScript implementation at: https://github.com/verheesj/reolink-api


πŸ¦‹ CONFIGURATION πŸ¦‹

On the Control Address field, use this format, bestie:

USERNAME:PASSWORD@ADDRESS:PORT

Examples, so there's zero confusion:

admin:password@192.168.1.100:80
admin:mypass123@10.0.0.50:80

The Control Device field can be set to the camera channel β€” usually 0 for single cameras, or 0-15 for NVRs. If you leave it empty, channel 0 is assumed. Defaults, we love to see it ✨


πŸ” AUTHENTICATION πŸ”

This module implements the Reolink token-based authentication system, and here's exactly how it goes down:

  • Performs Login to obtain a session token πŸ‘‘
  • Token is included in all subsequent API calls
  • Automatically refreshes token before expiration (default 1 hour lease) ⏰
  • Properly logs out on close to prevent "max session" errors β€” very considerate of it, honestly

πŸ’… FEATURES πŸ’…

The module supports (get ready, this list ate):

  • Continuous Pan/Tilt in all 8 directions πŸ”„
  • Variable speed control for pan/tilt 🏎️
  • Zoom In/Out (for cameras with zoom)
  • Focus Near/Far and Auto Focus πŸ”
  • Preset positions (save, recall) πŸ’Ύ
  • Home position 🏠
  • Auto Patrol/Guard modes 🚨
  • Camera reboot command
  • Stop commands for all movements βœ‹
  • Automatic token refresh πŸ”

πŸ“– API REFERENCE πŸ“–

Based on the Reolink CGI API documentation: https://support.reolink.com/hc/en-us/articles/360007010473-CGI-API-User-Guide


πŸ’€ NOTES πŸ’€

Bestie, listen. This module transmits the username and password during the initial login to obtain a token. The token is then used for all subsequent requests. That's just how it works.

While the camera supports HTTPS, ensure you're using it on a trusted/isolated network β€” or configure your Reolink camera to use HTTPS. Like, please. For me. πŸ™ˆ

Token sessions have a maximum limit (typically 20 concurrent sessions). The module properly logs out on close to prevent "max session" errors. Good hygiene, 10/10. 🧚


πŸ‘€ SEE ALSO πŸ‘€

  • ZoneMinder::Control
  • ZoneMinder::Control::Reolink

Go read those too, iykyk πŸ’œ


🌈 AUTHOR 🌈

ZoneMinder Community

Based on templates from Instar720p, Amcrest_HTTP, and the verheesj/reolink-api JavaScript implementation. Shoutout to the ancestors 🫢


Copyright (C) 2026 ZoneMinder Community

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.


Okay that's the whole page!! πŸ’– This fine piece of documentation comes to you courtesy of perl v5.42.3 and it's dated 1980-01-01 (yes, really, that's the date on it, vintage πŸ’€). Now go forth and pan/tilt responsibly, main character πŸ’…βœ¨

πŸ“¦ where this page comes from