Skip to main content

HTTP POST Webhook Configuration

Application Guide

For a complete walkthrough of webhook setup with server examples, see the Webhook Event Notification application guide. For real-time tracking data, see Real-Time Object Tracking.

Configure the HTTP POST webhook system that pushes real-time alarm events and AI detection data to your server. The IPC supports two modes:

  • httpPost (v1) -- Basic alarm server. One URL, one post per alarm event.
  • httpPostV2 -- Advanced subscription system. Up to 3 URLs, per-URL event type filtering, per-URL data type subscriptions. Supports continuous real-time traject tracking data.

Both modes are configured via GetHttpPostConfig / SetHttpPostConfig -- these are separate from the Legacy Alarm Server endpoints.

The NVR also has an HTTP POST system configured through its web interface. The NVR system sends alarm events using v2.0 XML format but does not support traject.

Tested: IPC v1.9 (firmware 5.1.4.0, API version 1.7)


GetHttpPostConfig

Retrieves the current httpPost and httpPostV2 configuration.

FieldValue
Endpoint/GetHttpPostConfig
MethodPOST or GET
ProductsIPC
Request BodyNone

Response Example

<?xml version="1.0" encoding="UTF-8"?>
<config version="1.7" xmlns="http://www.ipc.com/ver10">
<httpPost>
<bSwitch type="boolean">true</bSwitch>
<protocolType><![CDATA[API]]></protocolType>
<serverIp><![CDATA[192.168.0.53]]></serverIp>
<serverPort>80</serverPort>
<keepaliveTimeval>90</keepaliveTimeval>
<onlineStatus type="boolean">true</onlineStatus>
<URL><![CDATA[/API]]></URL>
</httpPost>
<httpPostV2>
<postUrlConf>
<urlList type="list" count="1" maxCount="3">
<item>
<urlId>1</urlId>
<switch>true</switch>
<url>
<protocol>http</protocol>
<domain><![CDATA[192.168.0.53]]></domain>
<port>80</port>
<path><![CDATA[/API]]></path>
<authentication>none</authentication>
</url>
<heatBeatSwitch>true</heatBeatSwitch>
<keepaliveTimeval>90</keepaliveTimeval>
<subscribeDateType type="list" count="1">
<item>traject</item>
</subscribeDateType>
<subscriptionEvents type="list" count="1">
<item>PERIMETER</item>
</subscriptionEvents>
</item>
</urlList>
</postUrlConf>
</httpPostV2>
</config>

httpPost (v1) Parameters

ParameterTypeDescription
bSwitchbooleanEnable or disable httpPost v1
protocolTypestringProtocol type (typically API)
serverIpstringIP address of your receiving server
serverPortuint16Port your server listens on
keepaliveTimevaluint32Keepalive interval in seconds (30-120)
onlineStatusbooleanCurrent connection status (read-only)
URLstringURL path on your server (e.g., /API)

httpPostV2 Parameters

ParameterTypeDescription
urlIduint32URL slot identifier (1, 2, or 3)
switchbooleanEnable or disable this URL slot
url.protocolstringhttp or https
url.domainstringIP address or hostname of your server
url.portuint16Port your server listens on
url.pathstringURL path on your server
url.authenticationstringAuthentication type (none or other)
heatBeatSwitchbooleanEnable keepalive heartbeat
keepaliveTimevaluint32Keepalive interval in seconds (30-120)
subscribeDateTypelistData types to include in posts (see table below)
subscriptionEventslistDetection event types to subscribe to (see list below)

SetHttpPostConfig

Sets the httpPost and/or httpPostV2 configuration.

FieldValue
Endpoint/SetHttpPostConfig
MethodPOST
ProductsIPC
Request BodyhttpPost and/or httpPostV2 XML element

Setting httpPost (v1)

<?xml version="1.0" encoding="UTF-8"?>
<config version="1.0" xmlns="http://www.ipc.com/ver10">
<httpPost>
<bSwitch>true</bSwitch>
<serverIp><![CDATA[192.168.0.53]]></serverIp>
<serverPort>80</serverPort>
<keepaliveTimeval>90</keepaliveTimeval>
<URL><![CDATA[/API]]></URL>
</httpPost>
</config>

Setting httpPostV2

<?xml version="1.0" encoding="UTF-8"?>
<config version="1.0" xmlns="http://www.ipc.com/ver10">
<httpPostV2><postUrlConf>
<urlList type="list" count="1"><item>
<urlId>1</urlId>
<switch>true</switch>
<url>
<protocol>http</protocol>
<domain><![CDATA[192.168.0.53]]></domain>
<port>80</port>
<path><![CDATA[/API]]></path>
<authentication>none</authentication>
</url>
<heatBeatSwitch>true</heatBeatSwitch>
<keepaliveTimeval>90</keepaliveTimeval>
<subscribeDateType type="list" count="5">
<item>alarmStatus</item>
<item>traject</item>
<item>smartData</item>
<item>sourceImage</item>
<item>targetImage</item>
</subscribeDateType>
<subscriptionEvents type="list" count="1">
<item>PERIMETER</item>
</subscriptionEvents>
</item></urlList>
</postUrlConf></httpPostV2>
</config>

httpPostV2 Subscription Events

The subscriptionEvents field controls which detection types trigger posts to this URL:

EventDescription
ALLSubscribe to all event types
MOTIONBasic motion detection
SENSORPhysical sensor alarm input
PERIMETERAI perimeter / intrusion zone
TRIPWIREAI line crossing / tripwire
OSCObject removal (left/missing)
AVDAbnormal video detection
AOIENTRYRegion entry
AOILEAVERegion exit
PASSLINECOUNTObject counting by line
TRAFFICObject counting by area
VSDVideo metadata detection
PVDParking violation detection
LOITERLoitering detection
ASDAudio sound detection

httpPostV2 Data Types (subscribeDateType)

The subscribeDateType field controls what data is included in each post:

Data TypeGUI LabelDescriptionPost FrequencyPost Size
alarmStatusAlarm status dataAlarm on/off status changeOne per state change~660 bytes
trajectSmart track dataContinuous trajectory tracking with real-time coordinates~7 posts/sec while tracking~1.7 KB
smartDataSmart event dataDetection event with coordinates and metadataOne per event~2-3 KB (no images)
sourceImageOriginal pictureFull frame JPEG (base64 encoded in XML)One per event~500-530 KB
targetImageTarget pictureCropped target JPEG (base64 encoded in XML)One per eventIncluded with smartData
Image Data

sourceImage and targetImage are embedded in the smartData XML post as base64 data. Subscribing to smartData + sourceImage + targetImage produces a single large post per event containing all three. See httpPostV2 Data Types for detailed format documentation.


Configuration Notes

  • httpPostV2 supports up to 3 URLs (maxCount="3"), each with independent event and data type subscriptions. This lets you route different event types or data to different servers.
  • keepaliveTimeval range is 30-120 seconds.
  • Both httpPost v1 and httpPostV2 can be set in a single request by including both elements in the XML body.
  • For real-time tracking data, subscribe to traject in the subscribeDateType. See the traject documentation for details on the tracking data format.
  • The NVR configures its HTTP POST system through the web interface, not through this API endpoint. The NVR sends events in v2.0 XML format and does not support traject.