For the complete documentation index, see llms.txt. This page is also available as Markdown.

Query Events

Search, filter, and browse Vision Events in the dashboard, ask the Agent in natural language, or query via the API

About

This page covers how to find specific Vision Events - the timestamped records of what your deployed models observed - by filtering and searching them in the Vision Events dashboard or programmatically through the REST API. Narrow results by date range, event type, device, stream, workflow, detected class, or feedback status to audit production behavior and build reports. You can also ask the Roboflow Agent questions about your events in natural language.

Web App

Query and Filter Events

Find specific events using filters in the Vision Events dashboard or query them programmatically via the REST API.

Browse Events in the Dashboard

Select a Use Case

From the Vision Events page, click on a Use Case to view its events. Events are displayed in reverse chronological order.

Filter Events

Use the filter controls at the top of the events list to narrow results by:

  • Date range - start and end timestamps

  • Event type - quality_check, inventory_count, safety_alert, custom, operator_feedback

  • Device - filter by device ID

  • Stream - filter by stream or camera ID

  • Workflow - filter by the workflow that generated events

  • Detection - filter by a detected object class, with an optional confidence threshold

  • Feedback status - correct, incorrect, inconclusive, or no feedback

  • Custom metadata - filter by any custom metadata field and value

  • Warnings - show only events that had ingestion warnings

You can also click on values in the event detail sidebar (such as device ID, stream, quality check result, or custom metadata values) to quickly add them as filters.

Filter chips are editable -- click on any active filter chip to modify its value or operator without having to remove and re-add it.

When filters are applied, a total count of matching events is displayed at the top of the results list. This count updates independently of the event list, so you can see how many events match your filters even while events are still loading.

View Event Details

Click on any event in the list to view its full details:

  • The source image and any output images

  • All source metadata (device, stream, workflow)

  • Object detections, classifications, and segmentations with their confidence scores

  • Event-type-specific data (ex: pass/fail result, item count, alert severity)

  • Custom metadata key-value pairs

Draw Detections

When an event contains prediction data (object detections, instance segmentations, or keypoints), a "Draw Detections" checkbox appears above the image. Enable it to overlay bounding boxes, segmentation polygons, and labels with confidence scores on top of the source image.

This is useful when your pipeline only persists the original input image and you want to visualize what the model detected without storing a separate output image.

The checkbox is hidden when viewing a distinct output image, since those already have detections rendered.

Auto-Finalized Events

An event flagged as auto-finalized was closed automatically on the edge device before its video finished uploading, so the video is missing. The event still carries its result and still images. The event card shows an indicator, and the detail view shows the time it was finalized. This applies only to events synced through Edge Device Backup.

Ask the Agent

You can query events in natural language instead of building filters by hand. Open the Roboflow Agent by clicking "Agent" in the left sidebar, then ask about a Use Case (ex: "How many failures did assembly-line-qa have last week?", "How has the defect rate changed over time?", "What is the average item count per stream?").

The Agent answers by querying your event data, so the numbers reflect what your events actually contain. It can:

  • Count events matching a time range, event type, or result.

  • Track pass and fail rates over time and tell you whether the defect rate is improving or worsening.

  • Sum, average, or find the minimum, maximum, or number of unique values of a numeric field.

  • Group totals by event fields or custom metadata, or bucket them by day or week.

If a question reaches past your workspace's retention window, the Agent tells you the earliest date it can query instead of answering zero. Date boundaries and time buckets use UTC.

Asking about events requires the "View Vision Events" permission.

For a recurring emailed digest instead of a one-off answer, see Summary Reports.

HTTP API

Query Events via the API

The query endpoint supports the same filters as the dashboard, plus cursor-based pagination. For the full list of parameters and response fields, see the Vision Events API Reference.

Basic Query

Response:

Pagination

Results are paginated using a cursor. If the response includes a nextCursor value and hasMore is true, pass the cursor in your next request to retrieve the next page:

Continue until hasMore is false.

Filter by Event Type

Query a single event type:

Or multiple event types (max 20):

Filter by Feedback Status

Use feedbackStatus to find events based on whether operators have reviewed them and how they were rated:

Valid values: correct, incorrect, inconclusive, none. Use none to find events that haven't been reviewed yet.

Filter by Custom Metadata

Use customMetadataFilters to filter events by your own metadata fields:

Query Vision Events

Query vision events with filters, time ranges, and pagination. This endpoint supports filtering by event type, device context, detection classes, custom metadata, and event-specific fields.

Required scope: vision-events:read or device:read

Query Vision Events

post

Query vision events with filters, time ranges, and pagination.

Authorizations
AuthorizationstringRequired

Roboflow API key passed as a Bearer token.

Body
useCaseIdstringRequired

The use case ID to query events for.

startTimestring · date-timeOptional
endTimestring · date-timeOptional
hasWarningsbooleanOptional
cursorstringOptional
limitinteger · min: 1 · max: 1000OptionalDefault: 100
Responses
200

Query results.

application/json
hasMorebooleanOptional
nextCursorstringOptional
lookbackDaysintegerOptional
deprecationsstring[]Optional
post/vision-events/query
POST /vision-events/query HTTP/1.1
Host: api.roboflow.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 644

{
  "useCaseId": "text",
  "startTime": "2026-01-01T00:00:00.000Z",
  "endTime": "2026-01-01T00:00:00.000Z",
  "eventTypes": [
    "quality_check"
  ],
  "deviceId": {
    "operator": "eq",
    "value": "text"
  },
  "streamId": {
    "operator": "eq",
    "value": "text"
  },
  "workflowId": {
    "operator": "eq",
    "value": "text"
  },
  "externalId": {
    "operator": "eq",
    "value": "text"
  },
  "detection": {
    "operator": "eq",
    "value": "text",
    "confidence": {
      "operator": "gt",
      "value": 1
    }
  },
  "imageCount": {
    "operator": "eq",
    "value": 1
  },
  "hasWarnings": true,
  "customMetadataFilters": [
    {
      "field": "text",
      "operator": "eq",
      "value": "text",
      "type": "string"
    }
  ],
  "eventFieldFilters": [
    {
      "column": "result",
      "operator": "eq",
      "value": "text"
    }
  ],
  "cursor": "text",
  "limit": 100
}
{
  "events": [
    {
      "eventId": "text",
      "eventType": "quality_check",
      "useCaseId": "text",
      "timestamp": "2026-01-01T00:00:00.000Z",
      "deviceId": "text",
      "streamId": "text",
      "workflowId": "text",
      "workflowVersion": "text",
      "images": [
        {
          "label": "text",
          "sourceId": "text",
          "inputSourceId": "text",
          "objectDetections": [
            {
              "class": "text",
              "x": 1,
              "y": 1,
              "width": 1,
              "height": 1,
              "confidence": 1
            }
          ],
          "classifications": [
            {
              "class": "text",
              "confidence": 1
            }
          ],
          "instanceSegmentations": [
            {
              "class": "text",
              "x": 1,
              "y": 1,
              "width": 1,
              "height": 1,
              "confidence": 1,
              "points": [
                [
                  1
                ]
              ]
            }
          ],
          "keypoints": [
            {
              "class": "text",
              "x": 1,
              "y": 1,
              "width": 1,
              "height": 1,
              "confidence": 1,
              "keypoints": [
                {
                  "id": 1,
                  "x": 1,
                  "y": 1,
                  "occluded": true
                }
              ]
            }
          ]
        }
      ],
      "displayImagePosition": 1,
      "eventData": {},
      "customMetadata": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      }
    }
  ],
  "hasMore": true,
  "nextCursor": "text",
  "lookbackDays": 1,
  "deprecations": [
    "text"
  ]
}

Example Request

Request Body Parameters

Required fields:

  • useCaseId (string): The use case ID to query events for. See Use Cases for how to find your use case ID.

Time range filters:

  • startTime (string, ISO 8601, optional): Start of the time range.

  • endTime (string, ISO 8601, optional): End of the time range.

Event type filters:

  • eventTypes (array of strings, max 20, optional): Filter to one or more event types.

Context filters:

Each context filter is an object with operator and value:

  • deviceId (object, optional): Filter by device. Operators: eq, neq.

  • streamId (object, optional): Filter by stream. Operators: eq, neq.

  • workflowId (object, optional): Filter by workflow. Operators: eq, neq.

  • externalId (object, optional): Filter by external ID. Operators: eq, neq.

Detection filter:

  • detection (object, optional): Filter events by detection class name, optionally compounded with a per-detection confidence threshold. Operators: eq, neq, in, not_in. For in and not_in, pass an array of strings as the value (max 50).

    • confidence (object, optional): Per-detection confidence threshold. Only supported with eq and in class operators. The class and confidence must match on the same detection.

      • operator (string): One of gt, gte, lt, lte.

      • value (number): Confidence threshold between 0 and 1.

Filter by class with a minimum confidence:

The detection filter was previously named detectionClass. The old name is no longer accepted.

Image and warning filters:

  • imageCount (object, optional): Filter by number of images attached to the event. Operators: eq, neq, gt, gte, lt, lte.

  • hasWarnings (boolean, optional): Filter to events that have or do not have ingestion warnings.

Custom metadata filters:

  • customMetadataFilters (array, max 20, optional): Filter by custom metadata fields. Each filter has:

    • field (string): The metadata field name.

    • operator (string): Comparison operator.

    • value: The value to compare against.

    • type (string): The value type, one of string, number, or boolean.

Available operators by type:

Type
Operators

string

eq, neq, in, not_in

number

eq, neq, gt, gte, lt, lte

boolean

eq, neq

Event field filters:

  • eventFieldFilters (array, max 20, optional): Filter by event-specific fields. Each filter has:

    • column (string): One of result, location, item_count, item_type, alert_type, severity, or feedback.

    • operator (string): Comparison operator (eq, neq, gt, gte, lt, lte, in, not_in).

    • value: The value to compare against.

Pagination:

  • cursor (string, optional): Cursor from a previous response to fetch the next page.

  • limit (number, optional, default 100, max 1000): Number of events to return per page.

Example Response

When hasMore is true, use the nextCursor value in your next request to retrieve the next page of results:

Python SDK

Query vision events with filters, time ranges, and pagination.

Single Page Query

Use query_vision_events() to fetch a single page of results:

You can also pass additional filters as keyword arguments. These are forwarded directly to the API:

For manual pagination, use the cursor parameter with the nextCursor value from a previous response:

Paginate Through All Results

Use query_all_vision_events() to automatically paginate through all matching events. It yields one page of events at a time:

For full details on available filters, operators, and response formats, see the REST API reference.

Last updated

Was this helpful?