ANPR Multi-Camera System

Real-time license plate recognition and management

0
Events
0
Unique Plates
0
Cameras
0
Online
OK
Waiting for events...

Add License Plate

Search Plates on Camera

Plate List Color Owner Actions
Select a camera and search

Add / Edit Camera

Registered Cameras

No cameras configured

Add Webhook

Registered Webhooks

No webhooks configured

API Reference

MethodEndpointDescription
GET/api/webhookList all webhooks
POST/api/webhookAdd a webhook (body: name, url, headers, isEnabled)
DELETE/api/webhook/{id}Remove a webhook
POST/api/webhook/{id}/testSend a test payload to the webhook
GET/api/webhook/{id}/statusGet delivery statistics

How It Works

When a camera captures a license plate, the system automatically sends a JSON POST request to every enabled webhook URL.

  • Delivery is fire-and-forget — it does not block the event pipeline
  • Failed deliveries are retried up to 3 times with exponential backoff (1s, 2s, 4s)
  • Timeout per request: 10 seconds (configurable in appsettings.json)
  • Subscriptions are persisted to webhooks.json

Quick Test: Go to https://webhook.site, copy your unique URL, add it above, then click Test.

Payload Example

{
  "eventId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "timestamp": "2026-01-28T10:15:30",
  "licensePlate": "VPT9399",
  "plateColor": "blue",
  "confidenceLevel": 95,
  "direction": "forward",
  "vehicleType": "car",
  "vehicleColor": "white",
  "cameraIp": "192.168.0.212",
  "imageUrls": [
    "/images/a1b2c3d4/plate.jpg",
    "/images/a1b2c3d4/vehicle.jpg"
  ],
  "raw": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "receivedAt": "2026-01-28T10:15:30",
    "ipAddress": "192.168.0.212",
    "macAddress": "aa:bb:cc:dd:ee:ff",
    "channelId": "1",
    "eventDateTime": "2026-01-28T10:15:29",
    "eventType": "ANPR",
    "licensePlate": "VPT9399",
    "plateColor": "blue",
    "confidenceLevel": 95,
    "vehicleType": "car",
    "vehicleColor": "white",
    "direction": "forward",
    "speed": 0,
    "lane": "1",
    "pictures": [
      {
        "fileName": "plate.jpg",
        "type": "licensePlatePicture",
        "savedPath": "/images/a1b2c3d4/plate.jpg",
        "size": 45321
      }
    ]
  }
}

cURL Examples

curl -X POST http://localhost:5100/api/webhook \
  -H "Content-Type: application/json" \
  -d '{"name":"My Webhook","url":"https://webhook.site/xxx","headers":{"Authorization":"Bearer token123"},"isEnabled":true}'
curl http://localhost:5100/api/webhook
curl -X POST http://localhost:5100/api/webhook/{id}/test
curl -X DELETE http://localhost:5100/api/webhook/{id}