Skip to content
← All platform products

Video Search & Alerts

Search every camera in a sentence, and hear about it next time.

Type what you are looking for in plain English. The platform reads it into objects, colours, places and times, searches only the footage your role may see, and shows why each result matched. Save the search, schedule it, or turn it into a standing alert that pages the right channel.

Download the datasheet(PDF)

Investigator console
From a sentence to an explained result, with the purpose recorded. Shown with demo data.

The advantages

The outcomes this product is built around.

  • No categories to learn

    Free text, not a menu of preset classes. The sentence is read into what, where and when, and the read is shown to you.

  • Results you can check

    Each result says which attributes matched, its score and the detections behind it. Anything policy kept out of the search is disclosed, not silently dropped.

  • Any search becomes an alert

    Save a search and it can become a standing rule that notifies the console, email, SMS, push or a webhook when it matches again.

  • Every search is on the record

    Each operator’s searches are kept with their scope and result count, and archive searches beyond a set window ask for a purpose first.

to first results over 30 days and 500 cameras, p95
< 5 s
from a live event to the notification, p95
< 5 s
precision at 10 on the standard query set, with recall of 0.7
0.8

See it in the console

Real screens from the product, not mock-ups.

From a sentence to a result

A search typed with its purpose, read into filters and answered with the reason it matched.

Investigator console
From a sentence to an explained result, with the purpose recorded. Shown with demo data.

How it was read

The understood filters, the cameras in scope after policy, and the query that ran.

Investigator console
A video search for "white van at the north gate yesterday": the sentence parsed into class, colour, size, zone and time window, the camera scope after policy, the exact query that ran, and one result with why it matched.A video search for "white van at the north gate yesterday": the sentence parsed into class, colour, size, zone and time window, the camera scope after policy, the exact query that ran, and one result with why it matched.
One sentence in, with how it was read and why each result matched. Shown with demo data.

Standing rules

Absence, threshold, search and dwell rules, each with its severity and channels.

Investigator console
Four standing alert rules: an absence rule on the server-room camera, a crowding threshold, a search rule for vehicles at the north gate and a loitering dwell rule, each with its severity, channels and a test-fire action.Four standing alert rules: an absence rule on the server-room camera, a crowding threshold, a search rule for vehicles at the north gate and a loitering dwell rule, each with its severity, channels and a test-fire action.
Standing rules of four kinds, each with the channels it pages. Shown with demo data.

How it fits together

What happens between your request and a running resource.

How a search is answeredA sentence from the console or the API is read into filters and ranking terms. Policy decides which cameras and hours are in scope before anything is read. Retrieval then runs over the events the cameras produced, and a saved search can stand as an alert rule that notifies your channels.YouThe platformYour cameraseventslivenotifiesA sentenceconsole · API · SDKYour channelsconsole · email · webhookQuery understandingfilters · rankingScope after policycameras · zones · hoursHybrid retrievalevents · embeddings · OCRAlert rulesfrom saved searchesCamerasdetections and events

A sentence from the console or the API is read into filters and ranking terms. Policy decides which cameras and hours are in scope before anything is read. Retrieval then runs over the events the cameras produced, and a saved search can stand as an alert rule that notifies your channels.

  • A sentence: console · API · SDK (You)
  • Your channels: console · email · webhook (You)
  • Query understanding: filters · ranking (The platform)
  • Scope after policy: cameras · zones · hours (The platform)
  • Hybrid retrieval: events · embeddings · OCR (The platform)
  • Alert rules: from saved searches (The platform)
  • Cameras: detections and events (Your cameras)
  • A sentence to Query understanding
  • Query understanding to Scope after policy
  • Scope after policy to Hybrid retrieval
  • Cameras to Hybrid retrieval: events
  • Cameras to Alert rules: live
  • Alert rules to Your channels: notifies
How a search is answered

Who it is for

The teams and situations this product was built for.

  • Security operations

    Find the one vehicle or person in a day of footage from many cameras.

    A sentence in, occurrences out, each with the clip and the reason it matched.

  • Site and facility managers

    Know about loitering, crowding or a camera that has gone quiet without watching screens.

    Dwell, threshold and absence rules that page the right channel, test-fired before they go live.

  • Logistics yards and gates

    Spot vehicles at the gate and line them up with the badge and delivery records.

    Search rules on the gate cameras, and search filters that join access and HR data.

What it does

The core capabilities, live in the product today.

  • Natural-language search over the archive

    Free-text queries understood into entities, attributes and constraints, answered by hybrid retrieval and reranking.

    Only what the parser is sure of becomes a filter; the rest ranks results rather than excluding them. Dense embeddings, structured predicates and OCR are combined, a vision-language model reranks the candidates, and frames are grouped into occurrences so ten frames of one van are one result.

  • Search by example, and follow a track

    Use an image or a selected detection as the query, find similar sightings across a site, and follow a track across cameras and time.

    Upload a picture or pick a detection from a result and the search looks for the same thing elsewhere in the estate. Track-and-follow carries a subject from one camera to the next.

  • Compound, timed and scoped queries

    AND, OR, NOT and within-N-minutes-of; absolute, relative and recurring time; camera, group, zone and site scope; a confidence threshold.

    Combine conditions into one query, narrow it to the cameras and hours that matter, and set how sure a match must be. Filters can join identity, access and HR data, so “a person at the server room door with no badge swipe” is one question.

  • Standing alerts of every kind

    Rules from any saved search, plus zone and line, threshold, dwell, absence and learned-baseline anomaly rules, scheduled by hour, day, holiday and site hours.

    A rule watches the fleet continuously with the same grammar as search. Live search runs that grammar against live streams, and schedules keep a rule quiet outside the hours it matters.

  • Notification fan-out and escalation

    Console, push, email, SMS, webhook, Slack, Teams, PagerDuty, SNMP and PA or radio, with escalation chains and on-call rotation.

    Severity is on the platform-wide scale, so a video alert ranks alongside alerts from every other product. An unacknowledged alert escalates along its chain, and a test fire checks every channel without paging anyone for real.

  • Fewer false alarms

    Baselines, cooldowns and cross-camera de-duplication, operator feedback that retunes thresholds within a day, and analytics on precision and noisy cameras.

    Every alert can be acknowledged, assigned and resolved, and marking one false feeds back into its rule. Analytics rank cameras by noise and report volume, precision and response time.

The ideas behind it

The words this page uses, explained once.

Occurrence
One thing that happened, such as a van arriving, rather than every frame it appears in. Results are occurrences, so one van is one result.
Match explanation
What each result is shown with: the attributes that matched, the score, and the detections that contributed. Read more: Match explanation
Standing alert
A saved search or a zone, count, dwell or absence rule that keeps watching and notifies its channels when it matches.
Purpose
The reason recorded with an archive search. Beyond a configurable window, policy can refuse a search that does not give one.

In depth

The detail an evaluation asks for.

Policy before search

Access is scoped by camera, group and zone and can be limited to shift hours. Scope is decided before any footage is read, and the result says what it left out.

Where the footage stays

Clips are kept in an encrypted, segmented store. Footage never passes through the control plane, and playback is a signed grant that expires.

Tuning, not muting

Baselines, cooldowns and cross-camera de-duplication suppress repeats, and operator feedback retunes a rule’s thresholds within 24 hours.

How it works

  1. Console

    Ask in a sentence

    Type what you are looking for and, for an archive search, why.

  2. Console

    Check how it was read

    See the filters it understood, the cameras in scope after policy and the query that ran.

  3. API

    Save it

    Name the search, share it with the team and schedule it hourly, daily or weekly.

  4. Console

    Make it an alert

    Turn it into a standing rule, choose the channels and test-fire it before it goes live.

In code

The same task in the CLI and both SDKs. Every call shown exists in the API.

prx CLI

Search the archive, save the search and turn it into a test-fired alert

prx CLI
prx video fleet search --body '{"query":"white van at the north gate yesterday","purpose":"incident INC-4471"}'prx video fleet create-saved-searches --body '{"name":"White van at the north gate","query":"white van at the north gate","shared":true,"schedule":"daily"}'prx video fleet create-alert-rules --body '{"name":"Vehicle at the north gate","kind":"search","query":"vehicle at the north gate","severity":"medium","channels":["console","email"]}'prx video fleet test-fire "$RULE"

TypeScript SDK

Search the archive, save the search and turn it into a test-fired alert

TypeScript SDK
const { results } = await client.video.fleet.search({ query: 'white van at the north gate yesterday', purpose: 'incident INC-4471' });await client.video.fleet.createSavedSearches({ name: 'White van at the north gate', query: 'white van at the north gate', shared: true, schedule: 'daily' });const rule = await client.video.fleet.createAlertRules({ name: 'Vehicle at the north gate', kind: 'search', query: 'vehicle at the north gate', severity: 'medium', channels: ['console', 'email'] });const { dispatches } = await client.video.fleet.testFire(rule.rule_id);

Python SDK

Search the archive, save the search and turn it into a test-fired alert

Python SDK
results = client.video.fleet.search({"query": "white van at the north gate yesterday", "purpose": "incident INC-4471"})["results"]client.video.fleet.create_saved_searches({"name": "White van at the north gate", "query": "white van at the north gate", "shared": True, "schedule": "daily"})rule = client.video.fleet.create_alert_rules({"name": "Vehicle at the north gate", "kind": "search", "query": "vehicle at the north gate", "severity": "medium", "channels": ["console", "email"]})dispatches = client.video.fleet.test_fire(rule["rule_id"])["dispatches"]

The difference

The way this job usually goes, and the way it goes here.

The usual way

Scrub through hours of footage camera by camera.

One sentence across the cameras you may see, with occurrences rather than frames.

A result list you have to take on trust.

Each result says what matched, and what policy excluded is disclosed.

Alert rules set up in a separate tool from search.

Any saved search becomes a standing alert, test-fired before it pages anyone.

Works with your tools

Every surface below drives the same product — script it, click it, or hand it to your existing tooling.

  • Investigator console
  • API
  • prx CLI
  • TypeScript SDK
  • Python SDK
  • Slack, Teams, PagerDuty and webhooks

Questions, answered

Do we have to define object classes first?

No. Search is free text with no preset categories. The sentence is read into objects, attributes, places and times, and the read is shown with the results.

Can it search live streams as well as recordings?

Yes. Live search uses the same grammar against live streams, and any saved search can become a standing alert.

What can an operator see?

Only the cameras, groups and zones their role covers, in the hours they are allowed. Results are filtered by those entitlements and the exclusions are disclosed.

How fast is it?

An archive search over 30 days and 500 cameras returns its first results in under 5 seconds at p95, and an alert reaches its channels within 5 seconds of the live event at p95.

How is it priced?

Video is billed per camera-hour of footage processed, at a published rate in Platform Credits. The rate is on the pricing page.

Start with ProjectX today.

Create a company in minutes and add this product to your invoice at the published rate.

Video Search & Alerts · ProjectX