Viewtron LPR Camera API / HTTP Post Integration Questions

Home › Forums › Viewtron Security Camera Systems Support › License Plate Recognition (LPR) › Viewtron LPR Camera API / HTTP Post Integration Questions

  • A customer contacted us with the following questions about our Viewtron LPR cameras. I’m evaluating 2x Viewtron LPR-IP4 cameras for an entry/exit license-plate deployment and need to confirm a few integration details before purchasing. The cameras would feed a custom cloud backend, so I’m trying to determine the exact hardware I need.
    1. Direct event POST without an NVR. Can the LPR-IP4 POST its ANPR/plate-read events (license plate text, confidence, capture timestamp, and a snapshot image or image URL) directly to an external HTTPS endpoint via HTTP POST / webhook — with NO NVR or VMS required in the path? If yes, what is the exact payload format (XML or JSON) and can I configure the destination URL and headers in the camera’s web UI?

      Yes. The Viewtron LPR-IP4 can send an HTTP Post to an endpoint URL that you specify. It can do this with or without using a Viewtron NVR. You can find the HTTP Post and LPR detection setup instructions here. https://videos.cctvcamerapros.com/v/lpr-camera-api.html
      The payload that the Post sends is XML. You can see the raw XML payload as well as Python and Node SDK examples here.
      https://videos.cctvcamerapros.com/developer/docs/applications/license-plate-recognition-camera-api

    2. If an NVR IS required. If the camera cannot emit events standalone and needs an NVR (or VMS) to forward ANPR events, please confirm that, and tell me which NVR model is required and whether that NVR can forward plate events to an external HTTPS endpoint.

      The NVR is not required, but for most customers, it makes managing the LPR camera easier because the NVR’s UI is fully integrated with setting up and managing all licence plate recognition functions. For a developer that wants to use the API, you do not need the NVR unless you want to use it as your storage for recordings.

    3. Payload contents. For each plate read, does the event include: plate number, confidence score, direction or lane ID, timestamp, and an image (attached or as a URL)? A sample event payload would be extremely helpful.

      Yes. Each plate read includes the license plate number, a confidence score, the direction of travel, a timestamp, the full overview image, and a cropped image of the license plate. On current LPR-IP4 firmware (5.3.x), the post also tells you if the plate is on the camera’s allow list, block list, or temporary list. It also includes vehicle attributes: color, type, brand, and model. There is no lane ID field. Every post does include the camera’s device name, serial number, MAC address, and channel ID, so you can map each camera to a lane in your backend.

      Here is a short snippet from a real plate read that we captured from an LPR-IP4 running firmware 5.3.x. We removed the base64 images to keep it short.

      <smartType type="openAlarmObj">VEHICE</smartType>
      <currentTime type="tint64">1791471201542438</currentTime>
      ...
      <plateNumber type="string"><![CDATA[IB36NL]]></plateNumber>
      <vehicleDirect type="vehicleDirectType">approach</vehicleDirect>
      <vehicleListType type="vehileMatchAlarmList">whiteList</vehicleListType>
      <PlateConfidence type="uint32" count="9900"/>
      <carAttr>
        <color type="vsdCarAttrColorType">grey</color>
        <type type="vsdCarAttrTypeType">saloon car</type>
        <brand type="vsdCarAttrBrandType">Tesla</brand>
        <model type="vsdCarAttrModelType">Tesla_ModelS</model>
      </carAttr>

      A few things to know when you parse it:

      • PlateConfidence: the score is in the count attribute, not in the element text. It uses a 0 to 10000 scale, so count="9900" means 99%.
      • vehicleDirect: the direction of travel. This car was driving toward the camera, so the value is approach. A car driving away from the camera reports away.
      • vehicleListType: whiteList (allow list), blackList (block list), or temporaryList when the plate is in the camera’s vehicle database.
      • currentTime: the capture time in microseconds since Jan 1, 1970 (UTC).
      • Images: the post has two listInfo items. The first item holds the overview image and the second holds the plate crop. Both are base64 JPEGs in targetBase64Data.

      The fields and values can change between firmware versions. For example, we have seen older 5.1.x firmware leave out the list status field. Check a real post from your own camera before you finalize your parser. You can find the full field list in our event format doc: https://videos.cctvcamerapros.com/developer/docs/api-reference/events/ipc-event-format/

      You can find the LPR camera API guide, with Python and Node SDK examples, here: https://videos.cctvcamerapros.com/developer/docs/applications/license-plate-recognition-camera-api

      Note: we first wrote that the post had no confidence score and no direction. That was wrong, and we have corrected it above.

      Update, October 8, 2026: The snippet above is from a real drive-by test with a Viewtron LPR-IP4 camera running firmware 5.3.1. The test plate IB36NL was on the camera’s allow list, and the camera read it once, at 99% confidence, as the car drove toward the camera. VEHICE and vehileMatchAlarmList are spelled exactly the way the camera sends them, so match them as-is.

      A few more things this read shows:

      • Where the fields are: the plate number, direction, list status, and confidence are all in the second listInfo item (item 1, counting from 0). The first item (item 0) is the overview image.
      • Plate not on a list: if the plate is not on any list, the camera leaves the vehicleListType element out of the post completely. There is no empty or “none” value, so your parser should treat this field as optional.
      • No group number: the post gives you the list name, not a group number. In the camera’s vehicle database on 5.3.1 firmware, the groups are numbered 1 = temporaryList, 2 = whiteList, 3 = blackList. Group 1 is the temporary list, so do not assume group 1 is the default group for allowed plates.

      Which XML format to expect: this camera sent only the original V1 XML layout. All 194 posts we captured from it had config version 1.7, smartType VEHICE, and no messageType element. If your backend receives posts straight from the camera, make sure your parser handles the V1 layout.

    4. Software-triggered gate/door output. Can the camera (or its API) trigger a relay / dry-contact output, or accept an API command, to open a gate or door based on a software decision from my backend? If so, is that an on-camera relay or does it require additional hardware?

      Yes. The Viewtron LPR-IP4 has a built-in dry contact relay. The relay can be triggered based on the built-in automatic license plate recognition / license plate database. You can also manually trigger the relay output via an API call from your software.

    5. Network requirements. Does the camera need any inbound ports open, or does it only make outbound HTTPS connections? (Outbound-only is strongly preferred for my deployment.)

      No internet connection or reliance on a cloud service. All of the license plate detection and automatic license plate recognition inference software runs locally on the LPR camera itself. So only outbound HTTP Post / webhook calls are required for a software integration like the one you are designing.

    6. Current pricing and lead time for 2x LPR-IP4, plus any required NVR or accessories based on your answers above.

      Current pricing for the LPR-IP4 is $699.99 each. The only accessories you need are a PoE switch or PoE injectors, and network cable. These PoE injectors work. https://www.cctvcamerapros.com/POE-Injector-Kit-p/poe-12v48.htm
      This PoE switch works.
      https://www.cctvcamerapros.com/IP-Camera-PoE-Switch-p/poe-sw54.htm

    If you have any additional questions about license plate recognition software development with Viewtron LPR cameras, you can email mike@viewtron.com.