Search person detections of the organization associated with the API key.
Only timeRange is required; every other filter is optional. Filters are combined with AND
semantics, values inside an array filter are OR-ed.
Results are sorted by startTime descending (newest first) and paginated with page/size
(zero-based page, size 1..100, default 25).
The response envelope always includes the total number of detections matching the filters, so
total can exceed items.length.
cameraIds and locationIds intersect: a detection must match all provided scope filters.
An empty intersection returns an empty page with total: 0.
Each returned detection carries its trackerId, objectId (PERSON / VEHICLE), the
detection startTime and endTime in milliseconds since epoch, the camera, edge and location
names, the IANA timezone of the camera location, and two image URLs: thumbnailUrl
(GET /v1/search/trackers/{trackerId}/thumbnail, the detection frame) and croppedImageUrl
(GET /v1/search/trackers/{trackerId}/cropped-image, the cropped object). Fetch either with the
same API key — Authorization: Bearer <token> header (preferred) or ?token=<token> query
parameter for <img> embedding (note: query tokens can appear in access logs). Either URL can be
null when the image is unavailable.
Filters:
| filter | meaning |
|---|---|
timeRange | Required. { start, end } in milliseconds since epoch. |
cameraIds | Only detections from these cameras. |
locationIds | Only detections from cameras at these locations. |
upperBodyTypes | Upper body clothing types. |
upperBodyColors | Upper body clothing colors. |
lowerBodyTypes | Lower body clothing types. |
lowerBodyColors | Lower body clothing colors. |
genders | Genders. |
ageGroups | Age groups. |
accessories | Accessories worn. |
carrying | Carried items. |
hairColors | Hair colors. |
footwearColors | Footwear colors. |
personIds | Only detections face-matched to these saved person ids, AND-ed with the attribute filters. |
Attribute values:
| filter | values |
|---|---|
| colors (all color filters) | BLACK, BLUE, BROWN, GREEN, GREY, ORANGE, PINK, PURPLE, RED, YELLOW, WHITE |
upperBodyTypes | SHORT_SLEEVE, LONG_SLEEVE, LOGO, NO_LOGO, SOLID, NOT_SOLID |
lowerBodyTypes | SHORTS, TROUSERS, SKIRT_AND_DRESS, SOLID, NOT_SOLID |
genders | MALE, FEMALE |
ageGroups | UNDER_18, FROM_18_TO_60, OVER_60 |
accessories | HAT, NO_HAT, GLASSES, NO_GLASSES |
carrying | BAG, NO_BAG, OBJECT, NO_OBJECT |
When a detection is face-matched to a saved person, the item carries personId, personName
and faceConfidence (1 = none, 3 = low, 5 = medium, 7 = high).
Request examples:
{ "timeRange": { "start": 1752451200000, "end": 1752537600000 } }{
"timeRange": { "start": 1752451200000, "end": 1752537600000 },
"upperBodyColors": ["BLACK"],
"upperBodyTypes": ["LONG_SLEEVE"],
"genders": ["MALE"],
"ageGroups": ["FROM_18_TO_60"],
"accessories": ["HAT"],
"page": 0,
"size": 25
}{
"timeRange": { "start": 1752451200000, "end": 1752537600000 },
"personIds": [12345],
"cameraIds": ["6a460f4759e6bb0eb32c6778"]
}{
"timeRange": { "start": 1752451200000, "end": 1752537600000 },
"locationIds": ["60c72b2f9b1d8e001c8a4d3f"],
"carrying": ["BAG"]
}| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
400Invalid request: missing timeRange, unknown attribute value, non-numeric personIds, page below 0, or size outside 1..100.
401Missing or invalid API key.
403Organization not allowed by this token.
500Internal server error.
