## How Label Studio saves results in annotations Each annotation result consists of list or items, also called _regions_, stored under `annotation.result` field: ```json {"result": [{"id": "123", ...}, {"id": "456", ...}], ...} ``` Regions can represent any annotation action - drawn bounding box, created relation, assigned category etc. Each `"id"` field formed as a string with the characters `A-Za-z0-9_-` and assigned according to the structure of annotation: each individual labeling entity gets its own ID, and same IDs are used to link different entities together - for example, relate them with ``, or assign conditional annotation by using `"perRegion"` attribute. The format is inferred by the following principles: - there is always should be at least 1 object tag - object tags define data types used (image, html, video, etc.) - at least 1 control tag should be attached to object tag to create regions on that object - every control tag produces 1 result for region - results for the same region share the same id - classification technically creates special empty classification region When a prediction is used to create an annotation, the result IDs stay the same in the annotation field. This allows you to track the regions generated by your machine learning model and compare them directly to the human-created and reviewed annotations. The `"value"` signifies the outcome of the labeling process, and its structure varies based on the labeling configuration. To understand the structure for specific tags, please refer to the [Control tags](/tags) documentation and explore the relevant tag. ## Examples ### per-regions Example of result format when conditional `"perRegion"` structure is enforced: ```xml