Overview
Rhombus cameras with License Plate Recognition (LPR) detect vehicles and read their license plates as they pass through a scene. Each detection becomes a vehicle event that records the plate, the reporting camera and location, a captured image, and the time it was seen. Through the API, you can:- Query detection events across your organization, filtered by device, location, plate, name, or label
- Search a specific plate with exact or fuzzy matching to find every time it was seen
- Build a watchlist of saved vehicles (“plates of interest”) with alert and trust flags, names, and labels
- Run per-device reports that bucket detections by hour, day, week, or month
- Export vehicle events as CSV for external analysis or record keeping
Every vehicle event timestamp is reported in epoch milliseconds, but the field name differs by endpoint (
startTimeMs, startTime, timestampMs, createdAtMillis, eventTimestamp). Each section below calls out the exact field to use. There is no region, state, or numeric confidence field on vehicle events — do not expect one.Prerequisites
Before you begin, make sure you have:
- A Rhombus API key with read access to cameras (generated in the Rhombus Console under Settings > API). Reporting a misread event additionally requires the
MANAGE_LICENSEPLATESpermission, and CSV export requires theREPORT_ADMINISTRATIONpermission. - At least one LPR-capable camera deployed and reading plates at a location
- The device UUID of that camera, which you can retrieve from the camera endpoints or the Rhombus Console
POST to https://api2.rhombussystems.com and authenticate with the x-auth-scheme and x-auth-apikey headers shown in every example.
Workflow 1: Query recent detections
UsegetVehicleEvents to retrieve detection events across your organization. This is the primary endpoint for pulling LPR activity into a dashboard or report.
The request combines two kinds of criteria that behave differently:
- Filter fields (
deviceUuidFilter,locationUuidFilter) are ANDed — a returned event must satisfy all filters you provide. - Query fields (
nameQuery,licensePlateExactQuery,vehicleLabelQuery,licensePlateFuzzyQuery,unnamedQuery) are ORed — a returned event must satisfy at least one query you provide.
Request fields
Start of the time window (oldest) in epoch milliseconds.
End of the time window (newest) in epoch milliseconds.
Return only events from these camera UUIDs. ANDed with other filters.
Return only events from these location UUIDs. ANDed with other filters.
Return events whose vehicle name matches one of these values. ORed with other queries.
Return events whose plate exactly matches one of these values. ORed with other queries.
Return events tagged with one of these vehicle labels. ORed with other queries.
Return events whose plate approximately matches this partial or complete plate, allowing for character misreads. ORed with other queries.
If
false, return only events that have a name; if true, return only events without a name. Omit if not needed. ORed with other queries.Response fields
The response contains anevents array. Each event has these fields:
Unique identifier for the vehicle event.
Organization the event belongs to.
UUID of the camera that reported the detection.
Location where the detection occurred.
The recognized license plate string.
Plate strings considered full matches for this detection.
Plate strings considered partial matches for this detection.
S3 key for the full detection image. This is a storage key, not a URL.
S3 key for the detection thumbnail. This is a storage key, not a URL.
When the detection occurred, in epoch milliseconds.
Vehicle name, if the plate is associated with a saved vehicle.
The
getRecentVehicleEvents, getRecentVehicleEventsByLocation, and getRecentVehicleEventsForVehicle endpoints are legacy. Prefer getVehicleEvents for new integrations — its filter/query model supersedes them.Workflow 2: Search a plate with fuzzy matching
When you have a specific plate to track down,searchLicensePlates finds every event that matches it. Enable fuzzy to tolerate character misreads — helpful when a plate is partially obscured or the original read was imperfect.
Request fields
The plate number to search for.
Start of the search window in epoch milliseconds. Note the field name is
startTime, not startTimeMs.End of the search window in epoch milliseconds.
Limit the search to these camera UUIDs.
When
true, allows approximate matching for misread characters.Response fields
ThevehicleEvents array contains all the vehicle event fields from Workflow 1, plus two search-specific fields:
The plate term that matched your query.
How the match was made (for example, exact versus fuzzy).
Workflow 3: Build a watchlist of saved vehicles
A saved vehicle is a “plate of interest” you want to track. Each saved vehicle carries analert flag (notify when seen) and a trust flag (treat as known/safe), plus an optional name, description, and labels. Saving a vehicle also lets Rhombus attach the name to future detection events for that plate.
Save a vehicle
The plate that identifies this saved vehicle.
Creation timestamp in epoch milliseconds.
Whether to raise an alert when this vehicle is detected.
Whether this vehicle is trusted (known/safe).
Display name for the vehicle.
Free-text description.
S3 key for a thumbnail image of the vehicle.
List saved vehicles
Retrieve every saved vehicle in your organization. The request body is empty.vehicles array is a saved vehicle:
The plate that identifies the saved vehicle.
Organization the vehicle belongs to.
When the vehicle was saved, in epoch milliseconds.
Whether detections raise an alert.
Whether the vehicle is trusted.
Display name.
Free-text description.
S3 key for the vehicle thumbnail.
Add and remove labels
Labels group saved vehicles into categories such as “employee,” “vendor,” or “flagged.” Add a label to a plate withaddVehicleLabel and remove it with removeVehicleLabel.
getVehicleLabelsForOrg. Its response contains a vehicleLabels map keyed by license plate, where each value is the set of labels on that plate.
Associate past events with a saved vehicle
If a plate was detected before you saved it as a vehicle, useassociateEventsToVehicle to attach those historical detection events to the saved vehicle. Pass the event UUIDs (from Workflow 1 or 2) and the plate.
Delete a saved vehicle
Remove a vehicle from your watchlist by its plate.Workflow 4: Per-device reports and CSV export
Per-device report
getLicensePlatesByDevice returns license plate detections for a single camera, bucketed by a reporting interval. Provide the anchor time as timestampMs (epoch milliseconds) and choose an interval.
The camera UUID to report on.
Anchor time for the report, as a UNIX timestamp in milliseconds.
Reporting bucket. One of
HOURLY, DAILY, WEEKLY, or MONTHLY.licensePlateEvents array uses the same vehicle event fields described in Workflow 1.
Export to CSV
export/vehicleEventsV2 streams matching vehicle events as CSV. It accepts the same request body as getVehicleEvents (Workflow 1) — the filter and query fields, ANDed and ORed the same way — and returns text/csv directly in the response body rather than JSON. This endpoint requires the REPORT_ADMINISTRATION permission.
export/vehicleEventsV2 supersedes the older export/vehicleEvents endpoint, which is deprecated. Use V2 for new integrations — it accepts the richer getVehicleEvents filter/query model.Use cases
Fleet and vendor tracking
Save your fleet and approved vendor plates with the
trust flag, then reconcile them against detection events to confirm on-time arrivals.Watchlist alerting
Save plates of interest with
alert: true and pair detections with webhooks to notify security when a flagged vehicle is seen.Parking and access analytics
Use per-device reports to count daily or weekly vehicle traffic at a gate or lot entrance.
Investigation and audit
Fuzzy-search a partial plate from an incident, then export the matching events as CSV for a report.
Troubleshooting
My time filter returns no events
My time filter returns no events
Confirm you are sending epoch milliseconds, not seconds, and that you are using the correct field name for the endpoint:
startTimeMs/endTimeMs for getVehicleEvents and export/vehicleEventsV2, startTime/endTime for searchLicensePlates, and timestampMs for getLicensePlatesByDevice. A value in seconds will resolve to 1970 and return nothing.A plate I know was seen doesn't appear in search results
A plate I know was seen doesn't appear in search results
LPR reads can vary by lighting, angle, and speed. Set
fuzzy: true on searchLicensePlates to tolerate character misreads, and check matchingLicensePlates and partialLicensePlates on returned events for near matches.getVehicleEvents returns more than I expected
getVehicleEvents returns more than I expected
Remember that query fields (
nameQuery, licensePlateExactQuery, vehicleLabelQuery, licensePlateFuzzyQuery, unnamedQuery) are ORed — an event only has to match one of them. Filter fields (deviceUuidFilter, locationUuidFilter) are ANDed. Narrow results by moving criteria into filters or reducing the number of queries.I can't view the image from imageS3Key
I can't view the image from imageS3Key
imageS3Key and thumbnailS3Key are S3 storage keys, not URLs you can open directly. Use the Rhombus media and footage endpoints to fetch the image content for a given key.reportVehicleEvent returns a permission error
reportVehicleEvent returns a permission error
Reporting a misread event requires the
MANAGE_LICENSEPLATES permission on your API key. CSV export requires REPORT_ADMINISTRATION. Generate or update your key with the needed permissions in the Rhombus Console under Settings > API.Next Steps
Faces & People Counting
Detect and identify people, and count occupancy alongside your vehicle analytics
Webhook Notifications
Receive real-time notifications when a watchlisted vehicle is detected
API Reference
Explore complete request and response schemas for every vehicle endpoint