Skip to content

Event Writer

Class: EventWriterSinkBlockV1

Source: inference.enterprise.workflows.enterprise_blocks.sinks.event_writer.v1.EventWriterSinkBlockV1

The Event Writer block sends structured events to the Event Ingestion Service using the v2 API.

Supported Event Schemas

  • Quality Check — pass/fail inspection results
  • Inventory Count — item counts at a location
  • Safety Alert — safety incidents with severity levels
  • Custom — free-form events with an arbitrary value field

Images

Each event includes one image entry. You must provide an output image (the primary display image, typically a visualization). You can optionally attach an input image (the original frame before any annotation).

Annotations

You can optionally pass object detection, classification, instance segmentation, or keypoint predictions from upstream model blocks. These are stored as structured annotations on the image within the event.

Execution Modes

  • Fire-and-forget (fire_and_forget=True, default) — the HTTP request is dispatched in the background so the workflow continues immediately. The event_id output will be empty.
  • Synchronous (fire_and_forget=False) — the block waits for the response and returns the created event_id.

Rate Limiting

Use the Rate Limiter workflow block upstream of this block to control how often events are sent.

Authentication

If the Event Ingestion Service requires an API key, set the EVENT_INGESTION_API_KEY environment variable on the inference server. Requests are sent unauthenticated when the variable is not set.

Type identifier

Use the following identifier in step "type" field: roboflow_enterprise/event_writer_sink@v1to add the block as as step in your workflow.

Properties

Name Type Description Refs
name str Enter a unique identifier for this step..
event_ingestion_url str Base URL of the Event Ingestion Service..
event_schema str The event schema to use..
image_label str Label for the image entry..
custom_metadata Dict[str, Union[bool, float, int, str]] Flat key-value metadata (max 100 keys, values must be str/int/float/bool)..
qc_result str Quality check result: pass or fail..
external_id str External identifier for correlation with other systems (max 1000 chars)..
location str Location identifier for inventory count..
item_count int Number of items counted..
item_type str Type of item being counted..
alert_type str Alert type identifier (alphanumeric, underscores, hyphens)..
severity str Severity level for the safety alert..
alert_description str Description of the safety alert (max 10000 chars)..
custom_value str Arbitrary value for custom events (max 10000 chars)..
fire_and_forget bool If True, send the event asynchronously (no event_id returned). If False, wait for the response and return the event_id..
disable_sink bool If True, skip sending the event entirely..
request_timeout int HTTP request timeout in seconds..

The Refs column marks possibility to parametrise the property with dynamic values available in workflow runtime. See Bindings for more info.

Available Connections

Compatible Blocks

Check what blocks you can connect to Event Writer in version v1.

Input and Output Bindings

The available connections depend on its binding kinds. Check what binding kinds Event Writer in version v1 has.

Bindings
  • input

    • event_ingestion_url (string): Base URL of the Event Ingestion Service..
    • output_image (image): The output/visualization image. Sent as the primary display image..
    • input_image (image): The original input image (optional). Sent as the source image..
    • image_label (string): Label for the image entry..
    • custom_metadata (*): Flat key-value metadata (max 100 keys, values must be str/int/float/bool)..
    • qc_result (string): Quality check result: pass or fail..
    • external_id (string): External identifier for correlation with other systems (max 1000 chars)..
    • location (string): Location identifier for inventory count..
    • item_count (integer): Number of items counted..
    • item_type (string): Type of item being counted..
    • alert_type (string): Alert type identifier (alphanumeric, underscores, hyphens)..
    • severity (string): Severity level for the safety alert..
    • alert_description (string): Description of the safety alert (max 10000 chars)..
    • custom_value (string): Arbitrary value for custom events (max 10000 chars)..
    • object_detections (object_detection_prediction): Object detection predictions to attach to the image..
    • classifications (classification_prediction): Classification predictions to attach to the image..
    • instance_segmentations (instance_segmentation_prediction): Instance segmentation predictions to attach to the image..
    • keypoint_detections (keypoint_detection_prediction): Keypoint detection predictions to attach to the image..
    • fire_and_forget (boolean): If True, send the event asynchronously (no event_id returned). If False, wait for the response and return the event_id..
    • disable_sink (boolean): If True, skip sending the event entirely..
    • request_timeout (integer): HTTP request timeout in seconds..
  • output

    • error_status (boolean): Boolean flag.
    • event_id (string): String value.
    • message (string): String value.
Example JSON definition of step Event Writer in version v1
{
    "name": "<your_step_name_here>",
    "type": "roboflow_enterprise/event_writer_sink@v1",
    "event_ingestion_url": "http://localhost:8001",
    "event_schema": "<block_does_not_provide_example>",
    "output_image": "<block_does_not_provide_example>",
    "input_image": "<block_does_not_provide_example>",
    "image_label": "defect-analysis",
    "custom_metadata": {
        "line": "A1",
        "shift": "morning"
    },
    "qc_result": "pass",
    "external_id": "batch-2025-001",
    "location": "warehouse-A",
    "item_count": 42,
    "item_type": "widget",
    "alert_type": "no_hardhat",
    "severity": "high",
    "alert_description": "Worker detected without hardhat in zone B",
    "custom_value": "anomaly detected at 14:32",
    "object_detections": "<block_does_not_provide_example>",
    "classifications": "<block_does_not_provide_example>",
    "instance_segmentations": "<block_does_not_provide_example>",
    "keypoint_detections": "<block_does_not_provide_example>",
    "fire_and_forget": true,
    "disable_sink": false,
    "request_timeout": 5
}