> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ovalbee.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ovalbee.com/_mcp/server.

# Create version

> Saves the current contents of a dataset as a numbered version that does not change afterwards. The dataset itself stays editable: imports, labeling and other nodes keep working on it. Nodes wired to this node's output read the saved version, not the live dataset.

## Overview

Saves what a [dataset](/node-library/nodes/dataset-ops-dataset) holds right now as a numbered version, for example `Cats@v2`. The saved version doesn't change afterwards, while the dataset itself stays editable: imports, labeling, and other nodes keep adding to it under its own name.

Nodes wired to this node's output read the saved version, so a training run downstream sees the same data every time. Saving is cheap: it records references to the assets, not copies of their files.

```mermaid
flowchart LR
  n1["Dataset"] --> n2["Create version"] --> n3["Train"]
```

## How it works

Reads the selected dataset and checks that it's the dataset itself, not one of its older versions.

Saves the dataset's current assets and annotations as the next numbered version.

Returns the saved version and its number. The dataset keeps its name and stays open for changes.

## FAQ

#### Why does the node fail with "is an older version"?

The input names a saved version such as `Cats@v1` rather than the dataset. Saving an older version would bring its contents back over the dataset, so the node refuses. Pick the dataset itself in the input. To bring an older version back on purpose, use [Restore version](/node-library/nodes/dataset-ops-restore-version).

#### What do other nodes read after I save a version?

A node wired to the output of this node reads the saved version and always gets the same contents. A node wired to the output of any other node, or set to the dataset rather than one of its versions in its picker, reads the dataset as it is when that node runs, including changes made after the version was saved.

#### Does the version store image and video files?

No. It stores references to the existing assets, so the version stays complete only while those assets exist in OvalBee.

#### Is the description required?

No, it's optional.

## Inputs

**`Dataset`** `dataset` — required

Dataset to save a version of. Its assets and annotations are recorded as they are at the moment the node runs. Key: `DATASET`.

---

**`Description`** `string`

Note shown next to this version, to help you recognise it later. Key: `DESCRIPTION`.

---

## Outputs

**`Saved version`** `dataset`

The saved version. Nodes that read it always get these exact contents, even after the dataset changes. Key: `DATASET`.

---

**`Version number`** `integer`

Number of the saved version, as shown on the dataset page. Key: `VERSION`.

---

## JSON config

Machine-readable node interface for automation and advanced usage.

#### Show JSON

```json
{
  "name": "Create version",
  "description": "Saves the current contents of a dataset as a numbered version that does not change afterwards. The dataset itself stays editable: imports, labeling and other nodes keep working on it. Nodes wired to this node's output read the saved version, not the live dataset.",
  "category": "Datasets",
  "namespace": "ovalbee",
  "templateKey": "dataset_ops/create_version",
  "version": "v1",
  "inputs": [
    {
      "key": "DATASET",
      "label": "Dataset",
      "type": "dataset",
      "description": "Dataset to save a version of. Its assets and annotations are recorded as they are at the moment the node runs.",
      "required": true,
      "default": null,
      "visibleWhen": null,
      "options": {
        "creatable": false
      }
    },
    {
      "key": "DESCRIPTION",
      "label": "Description",
      "type": "string",
      "description": "Note shown next to this version, to help you recognise it later.",
      "required": false,
      "default": null,
      "visibleWhen": null
    }
  ],
  "outputs": [
    {
      "key": "DATASET",
      "label": "Saved version",
      "type": "dataset",
      "description": "The saved version. Nodes that read it always get these exact contents, even after the dataset changes.",
      "artifact": false,
      "badge": false,
      "badgeOpens": null,
      "hidden": false
    },
    {
      "key": "VERSION",
      "label": "Version number",
      "type": "number",
      "description": "Number of the saved version, as shown on the dataset page.",
      "artifact": false,
      "badge": false,
      "badgeOpens": null,
      "hidden": false,
      "options": {
        "type": "integer"
      }
    }
  ]
}
```