> For the complete documentation index, see [llms.txt](https://docs.unitlab.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.unitlab.ai/documentation/releases/create-a-release.md).

# Create a release

Create a versioned Unitlab annotation release. Verify review completion, choose Batch Queues, formats and dataset splits, then download or use connected-cloud output.

A release captures eligible annotations from a project for a versioned dataset delivery. Create it from **Project > Releases**, choose the data and export format, and wait for preparation before downloading.

{% hint style="info" %}
**A release is not an automatic approval filter.** Its eligible annotated-data count is different from the count of human-approved items. Complete the required review for the selected project or Batch Queues before creating a delivery release.
{% endhint %}

## Prepare the delivery scope

Choose the project or Batch Queues that belong in the handoff. Check their required Review stages, resolve outstanding rework and invalid annotations, and confirm the current labels are the version you intend to deliver.

The **Complete** workflow state indicates where work is in the configured workflow. It does not independently prove that a human approved it: a workflow can omit human review, and a manager can move work directly between stages. Use the workflow history to verify the required reviewer actions. See [Review, rework and escalation](https://docs.unitlab.ai/documentation/workflows/review-rework-and-escalation).

Release creation currently filters by project, Batch Queue scope and data type. It has no separate **Approved only** selection. A queue containing both reviewed and unreviewed eligible annotations can export both. Keep the delivery cohort stable while the release is being prepared.

![Project Release dialog showing annotated data, queue scope, data types, format, distribution and token URL option](https://292810646-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGjVLUz4wthGkGlRKM6rM%2Fuploads%2FHLzEBrP9ddsrTUbQ4ovz%2Frelease-create-modal.png?alt=media\&token=70baced4-91a7-4c40-bf7b-417177d75b90)

*The project release dialog shows eligible annotated data, source scope, included data types, export format, train/validation/test distribution and the optional export token URL.*

## Create the release

**Example:** deliver the reviewed images from a Batch Queue called **Road scenes** as COCO, with 80% for training and 20% for validation. Replace that sample queue with your verified delivery cohort.

{% stepper %}
{% step %}

### Open the project's Releases page

Open the intended project and choose **Releases**, then **Release**. The workspace **My Releases** page is the cross-project gallery; creation starts inside a project.
{% endstep %}

{% step %}

### Choose the source scope

Use **Whole project** or select one or more **Batch Queues**. In the example, select the verified **Road scenes** queue. Reconcile the eligible annotated-data count with your delivery scope. Selecting queues limits the cohort; it does not add a review-approval filter.
{% endstep %}

{% step %}

### Select data types and format

For the example, select image data and **COCO**. For other deliveries, use UUEF for a unified representation, a compatible native format for one family, or Standard Bundle for per-family formats in a mixed release. Inspect compatibility before proceeding, especially when the labels include properties or relationships.
{% endstep %}

{% step %}

### Set the license and distribution

Select a license when required. For the example, set **train 80**, **validation 20** and **test 0**. All percentages must be nonnegative integers totaling 100. Use train 100 when the consumer will split the exported data separately.
{% endstep %}

{% step %}

### Decide whether to include source-item token URLs

Enable **Include export token URL** when downstream consumers need persistent Unitlab URLs for the represented source items. Keep those URLs private. This setting does not make the signed annotation-archive URL permanent.
{% endstep %}

{% step %}

### Create, monitor and validate

Choose **Create release**, retain its ID and version, and wait until preparation finishes. Download the populated train and validation splits or the combined bundle. Inspect sample annotations and compare the exported items with the verified **Road scenes** queue before passing the files to training. Source files are downloaded separately when the consumer needs them.
{% endstep %}
{% endstepper %}

## What is included

Eligible loose items have a latest annotation result that uses active project classes or a supported empty-annotation marker. Invalid latest annotations are excluded. Archived sources and failed or unfinished upload-session entries are not eligible. Source readiness and the selected data-type scope also apply.

Data Groups are released as units. Every required tile must have a valid annotation. Optional tiles can travel with the group as context even when unlabeled. A group with no required tiles needs at least one annotated tile. Because a group can contain several media items, its work-unit count can differ from the number of source rows represented in an export.

These eligibility checks validate whether content can be released. They do not certify human review.

## Choose a format for the consumer

| Content                             | Available formats                   |
| ----------------------------------- | ----------------------------------- |
| Image, video, medical and pathology | UUEF, COCO, YOLOv8, YOLOv5          |
| Geospatial                          | UUEF, GeoJSON, COCO, YOLOv8, YOLOv5 |
| Document and LiDAR                  | UUEF                                |
| Text, HTML, tabular and time series | UUEF, JSONL                         |
| Audio                               | UUEF, Audio JSON, RTTM              |
| Multiple data families              | UUEF or Standard Bundle             |

Format availability does not mean every format preserves every annotation feature. Choose the representation that retains the required geometry, properties, relations, time information and group context. A native format such as COCO applies to a compatible single-family release; mixed families require UUEF or Standard Bundle.

Annotations and source files are separate download choices. For example, a YOLO annotation export does not by itself include a ready-to-train folder of source images. See [Export formats and source inclusion](https://docs.unitlab.ai/documentation/releases/export-formats-and-source-inclusion).

## Understand the snapshot and splits

The server freezes the release when its background worker begins the snapshot, which may be later than the moment you choose **Create release**. Annotation changes made before that freeze can be included. After freeze, later project edits do not rewrite the captured annotations, ontology and relevant metadata.

Keep the selected cohort unchanged until it is frozen. A release captures the latest eligible annotation version at freeze time, not a separate “last approved” version. If work was edited after review, resolve that review requirement before delivery.

All tiles in a Data Group stay in the same split. Loose items are divided within each concrete data type. This does not automatically keep related people, patients, recording sessions or geographic sites together unless your grouping and source preparation establish those boundaries. Check the split membership before training.

The snapshot preserves annotation content. It is not a guarantee that customer-owned source objects will remain unchanged or accessible forever. Maintain the source objects and their storage connection for as long as the release needs them.

## Preparation status and downloads

| State     | Meaning                                                                |
| --------- | ---------------------------------------------------------------------- |
| Pending   | The release is queued or its snapshot is being prepared.               |
| Exporting | The snapshot has been frozen and annotation files are being generated. |
| Ready     | Export preparation completed and the release can be downloaded.        |
| Failed    | Preparation failed; inspect the error and correct its cause.           |

**Ready** describes export preparation, not review approval. Large releases can take time. Retain the existing release ID after an interrupted wait and check its status before creating another release.

Download the required populated split or all populated splits, and obtain represented source files separately when needed. Signed download links expire; request a new link if an old one stops working. Record the release version, intended scope and downstream validation result with the delivered artifact.

## Where connected-cloud exports are saved

If released data comes from a connected customer storage source, Unitlab saves the generated annotation artifacts into that connection. For an Amazon S3 source, the artifacts are written to the connected bucket under its configured prefix, in a Unitlab release namespace. The connection needs access to read source objects and write generated artifacts; replacing a combined bundle can also require deletion permission.

This destination follows the released source connection. Merely adding an S3 connection does not redirect exports made entirely from Unitlab-hosted data. If a release contains multiple cloud connections, the server chooses the first represented connection. The release dialog and SDK do not offer a separate output-bucket selector.

Use a single-connection scope when the destination must be predictable. To deliver to a different bucket, download the artifact and transfer it through your own integration. Cloud-sourced releases remain private. The [Python SDK release guide](https://docs.unitlab.ai/api-sdk-cli/sdks/create-and-download-releases#deliver-annotation-exports-to-amazon-s3) explains the built-in destination and provides a separate client-side S3 transfer example.

## Automate the same workflow

* [Create and download releases with Python](https://docs.unitlab.ai/api-sdk-cli/sdks/create-and-download-releases)
* [Releases API](https://docs.unitlab.ai/api-sdk-cli/apis/releases-api)
* [Unitlab data curation](https://unitlab.ai/en/data-curation)

## Model predictions to a reviewed delivery

Follow [Pre-labels, review, and export](https://docs.unitlab.ai/api-sdk-cli/sdks/prelabels-review-and-export) for the complete workflow and the limits of approved-only filtering.
