Hello Milestone Community,
We’re integrating with a client running Milestone XProtect Expert with approximately 600 cameras across 6 Recording Servers.
Our requirement is to obtain snapshot images at ~1 FPS per camera (one snapshot per second per camera).
From our testing, we have validated two approaches:
REST API approach to retrieve snapshot images
SOAP method (session/login + snapshot retrieval)
Both approaches work for testing. However, before designing a production architecture at this scale, we would like clarification on the officially supported and recommended Milestone approach.
- Webhook-style “push snapshots every second”
Question:
Does XProtect Expert support sending snapshot images directly to an external HTTP endpoint on a schedule (e.g., 1 request per second per camera)through a webhook?
If this is supported, we would appreciate clarification on:
Which system component is responsible for sending the HTTP request (Event Server / Recording Server / Management Server)?
Whether this can be implemented via Rules (e.g., HTTP Request action)
Whether the HTTP request can include the actual snapshot image (JPEG bytes or multipart upload), versus only event metadata
Any known limitations, scalability considerations, or best practices when operating at large scale (~600 cameras, multiple recording servers)
If this approach is not supported or recommended, we would appreciate confirmation and guidance on the preferred architectural pattern. - Motion / Frame Change Trigger + Webhook Notification (Preferred if 1 FPS is not feasible)
If continuous per-second is not feasible, our alternative approach would be event-driven capture.
Questions:
Can XProtect trigger an HTTP request to our backend when:
Motion is detected
Motion starts
Frame/content changes (if supported)
Or similar analytics-based detection events
Can such a Rule send sufficient metadata (camera identifier, snapshot image, timestamp, event type, etc)
We would appreciate guidance on:
How to configure motion or frame/content-based detection as a Rule trigger
How to configure the Rule to send an HTTP request to an external endpoint
What metadata fields are available in the HTTP payload (camera GUID, camera name, device ID, timestamp, etc)
Recommended best practices to:
Reliably identify the camera
Avoid duplicate event bursts
Manage event frequency under high camera count
Environment Summary
Product: XProtect Expert
Scale: ~600 cameras
Infrastructure: 6 Recording Servers
Objective:
Either continuous snapshots at ~1 FPS per camera
Or event-driven snapshot retrieval based on motion/frame change (preferred if architecturally supported)
We Are Looking For
Confirmation: Is either model supported directly within XProtect?
If supported: Step-by-step configuration guidance and recommended architecture
If not supported: Official recommendation for high-scale snapshot retrieval design in XProtect environments
Thank you in advance for any clarification, documentation references, or best-practice guidance from Milestone engineers or experienced integrators.