> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/developer-guide/developer-guide/kinds.md).

# Kinds

In Workflows, some values can’t be set in advance and are only determined during execution. This is similar to writing a function where you don’t know the exact input values upfront - they’re only provided at runtime, either from user inputs or from other function outputs.

To manage this, Workflows use *selectors*, which act like references, pointing to data without containing it directly.

{% hint style="info" %}
**Selectors**

A selector might refer to a named input - for example the input image - like `$inputs.image`, or to predictions generated by a previous step - like `$steps.my_model.predictions`.
{% endhint %}

In the Workflows ecosystem, users focus on data purpose (e.g., “image”) without worrying about its exact format. Meanwhile, developers building workflow blocks need precise data formats. **Kinds** serve both needs - they simplify data handling for users while ensuring developers work with the correct data structure.

## What are the **Kinds**?

**Kinds** is Workflows type system with each **kind** defining:

* **name** - expressing **semantic meaning** of the underlying data - like `image` or `point`;
* **Python data representation** - the data type and format that blocks creators should expect when handling the data within blocks;
* optional **serialized data representation** - defining what is the format of the kind that external systems should use to integrate with Workflows ecosystem - when needed, custom kinds serializers and deserializers are provided to ensure seamless translation;

Using kinds streamlines compatibility: when a step outputs data of a certain *kind* and another step requires that same *kind*, the workflow engine assumes they’ll be compatible, reducing the need for compatibility checks and providing compile-time verification of Workflows definitions.

{% hint style="info" %}
As for now, `kinds` are such simplistic that do not support types polymorphism - and developers are asked to use unions of kinds to solve that problem. As defining extensive unions of kinds may be problematic, this problem will probably be addressed in Execution Engine `v2`.
{% endhint %}

## Kinds declared in Roboflow plugins

* [`*`](/workflows/developer-guide/developer-guide/kinds/wildcard.md): Equivalent of any element
* [`ROBOFLOW_MANAGED_KEY`](/workflows/developer-guide/developer-guide/kinds/roboflow-managed-key.md): Roboflow-managed key or credential
* [`bar_code_detection`](/workflows/developer-guide/developer-guide/kinds/bar-code-detection.md): Prediction with barcode detection
* [`boolean`](/workflows/developer-guide/developer-guide/kinds/boolean.md): Boolean flag
* [`bytes`](/workflows/developer-guide/developer-guide/kinds/bytes.md): This kind represent bytes
* [`classification_prediction`](/workflows/developer-guide/developer-guide/kinds/classification-prediction.md): Predictions from classifier
* [`contours`](/workflows/developer-guide/developer-guide/kinds/contours.md): List of numpy arrays where each array represents contour points
* [`detection`](/workflows/developer-guide/developer-guide/kinds/detection.md): Single element of detections-based prediction (like `object_detection_prediction`)
* [`detections_overlaps`](/workflows/developer-guide/developer-guide/kinds/detections-overlaps.md): List of per-pair detection overlap records
* [`dictionary`](/workflows/developer-guide/developer-guide/kinds/dictionary.md): Dictionary
* [`embedding`](/workflows/developer-guide/developer-guide/kinds/embedding.md): A list of floating point numbers representing a vector embedding.
* [`float_zero_to_one`](/workflows/developer-guide/developer-guide/kinds/float-zero-to-one.md): `float` value in range `[0.0, 1.0]`
* [`float`](/workflows/developer-guide/developer-guide/kinds/float.md): Float value
* [`image_keypoints`](/workflows/developer-guide/developer-guide/kinds/image-keypoints.md): Image keypoints detected by classical Computer Vision method
* [`image_metadata`](/workflows/developer-guide/developer-guide/kinds/image-metadata.md): Dictionary with image metadata required by supervision
* [`image`](/workflows/developer-guide/developer-guide/kinds/image.md): Image in workflows
* [`inference_id`](/workflows/developer-guide/developer-guide/kinds/inference-id.md): Inference identifier
* [`instance_segmentation_prediction`](/workflows/developer-guide/developer-guide/kinds/instance-segmentation-prediction.md): Prediction with detected bounding boxes and segmentation masks in form of sv.Detections(...) object
* [`integer`](/workflows/developer-guide/developer-guide/kinds/integer.md): Integer value
* [`keypoint_detection_prediction`](/workflows/developer-guide/developer-guide/kinds/keypoint-detection-prediction.md): Prediction with detected bounding boxes and detected keypoints in form of sv.Detections(...) object
* [`labeled_points`](/workflows/developer-guide/developer-guide/kinds/labeled-points.md): List of 2D points with positive/negative labels
* [`language_model_output`](/workflows/developer-guide/developer-guide/kinds/language-model-output.md): LLM / VLM output
* [`list_of_values`](/workflows/developer-guide/developer-guide/kinds/list-of-values.md): List of values of any type
* [`numpy_array`](/workflows/developer-guide/developer-guide/kinds/numpy-array.md): Numpy array
* [`object_detection_prediction`](/workflows/developer-guide/developer-guide/kinds/object-detection-prediction.md): Prediction with detected bounding boxes in form of sv.Detections(...) object
* [`parent_id`](/workflows/developer-guide/developer-guide/kinds/parent-id.md): Identifier of parent for step output
* [`point`](/workflows/developer-guide/developer-guide/kinds/point.md): Single point in 2D
* [`prediction_type`](/workflows/developer-guide/developer-guide/kinds/prediction-type.md): String value with type of prediction
* [`qr_code_detection`](/workflows/developer-guide/developer-guide/kinds/qr-code-detection.md): Prediction with QR code detection
* [`rgb_color`](/workflows/developer-guide/developer-guide/kinds/rgb-color.md): RGB color
* [`roboflow_api_key`](/workflows/developer-guide/developer-guide/kinds/roboflow-api-key.md): Roboflow API key
* [`roboflow_model_id`](/workflows/developer-guide/developer-guide/kinds/roboflow-model-id.md): Roboflow model id
* [`roboflow_project`](/workflows/developer-guide/developer-guide/kinds/roboflow-project.md): Roboflow project name
* [`roboflow_solution`](/workflows/developer-guide/developer-guide/kinds/roboflow-solution.md): Roboflow Vision Events use case identifier
* [`secret`](/workflows/developer-guide/developer-guide/kinds/secret.md): Secret value
* [`semantic_segmentation_prediction`](/workflows/developer-guide/developer-guide/kinds/semantic-segmentation-prediction.md): Prediction with per-pixel class label and confidence for semantic segmentation
* [`serialised_payloads`](/workflows/developer-guide/developer-guide/kinds/serialised-payloads.md): Serialised element that is usually accepted by sink
* [`string`](/workflows/developer-guide/developer-guide/kinds/string.md): String value
* [`timestamp`](/workflows/developer-guide/developer-guide/kinds/timestamp.md): Timestamp object
* [`top_class`](/workflows/developer-guide/developer-guide/kinds/top-class.md): String value representing top class predicted by classification model
* [`video_metadata`](/workflows/developer-guide/developer-guide/kinds/video-metadata.md): Video image metadata
* [`zone`](/workflows/developer-guide/developer-guide/kinds/zone.md): Definition of polygon zone
