> 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.

# Bring data into OvalBee

Every flow starts with a dataset. There are three ways to fill one, each a single node with a matching template in the library.

| Your data is...          | Use                                                                                   | Template                     |
| ------------------------ | ------------------------------------------------------------------------------------- | ---------------------------- |
| Files on your computer   | [Import drag & drop](/node-library/nodes/import-ops-import-drag-and-drop)             | Import images by drag & drop |
| A public dataset         | [Import from Dataset Ninja](/node-library/nodes/import-ops-import-from-dataset-ninja) | Import from Dataset Ninja    |
| A project in Supervisely | [Import images](/node-library/nodes/supervisely-import-images) (Supervisely)          | Import from Supervisely      |

All three templates have the same shape: the import node, followed by a [Dataset](/node-library/nodes/dataset-ops-dataset) node that points at the result and gives the rest of your flow one place to reference it.

```mermaid
flowchart LR
  import["Import node"] --> dataset["Dataset"] --> rest["Rest of the flow"]
```

## Upload files from your computer

Set the node's **Destination dataset** (type a new name to create one) and what should happen **On name conflict** — skip the new file, replace the old one, or keep both under a new name. Then drop files or whole folders onto the node, or click it to pick them. The upload starts at once, and the node runs by itself as soon as it finishes. Click **Cancel** to stop the upload: the node then does not run.

* Each upload adds a **new version** of the destination dataset, so the state before the upload stays available.
* Images and videos are imported. Annotation files are skipped — to bring existing labels along, import from Supervisely or Dataset Ninja.
* The node's badge shows how many files the last upload imported and skipped.

Set the inputs before dropping files: the run starts the moment the upload completes and uses whatever the inputs hold at that point.

## Pull a public dataset from Dataset Ninja

[Dataset Ninja](https://datasetninja.com) is a catalog of public computer vision datasets. In the node, open the dataset picker, search the catalog by name or category, and choose **Full** or the smaller **Sample** under **Import size**. You can also paste a link to a dataset page.

Images arrive with their annotations, and each image is tagged with the split it came from - `train`, `val`, `test` - and with its image-level labels. That lets a [Filter images](/node-library/nodes/filter-filter-images) node or a train/validation split reuse the original split instead of making a new one. The classes of the imported dataset are added to the destination's ontology.

This is the fastest way to try any flow in OvalBee without preparing data first, and what the [Quickstart](/start/quickstart) uses.

> **Warning**
>
> Running the Dataset Ninja import again imports every image again, next to the ones already there. Point it at a new dataset if you want a fresh copy.

## Import from Supervisely

Store your Supervisely address and API token as a **Supervisely** secret under **Settings** → **Secrets** (see [Secrets and API tokens](/administration/secrets-and-tokens)), then paste the URL of a Supervisely project, dataset or collection into the node, or just a project ID.

* Choose whether to bring **annotations** along, and whether to import only images that are already labeled.
* Each run adds a **new version** of the destination dataset, and the project's classes are added to its ontology.
* Images that were exported from OvalBee to Supervisely earlier can be attached back to their original assets instead of being uploaded twice.

If your team keeps labeling in Supervisely, you don't have to import at all: the Supervisely labeling nodes run the queue there and mirror its progress into OvalBee. See [Organize labeling](/use-cases/organize-labeling#labeling-in-supervisely).

## Other sources

If your data lives in a bucket on S3 or S3-compatible storage, Azure Blob Storage or Google Cloud Storage, connect the bucket under **Settings** → **Storage** (a plan that includes buckets of your own is needed) and import from it with [Import from cloud storage](/node-library/nodes/import-ops-import-from-cloud-storage). For any other system, tell your OvalBee contact. Models trained elsewhere come in through the [Upload model](/node-library/nodes/models-general-upload-model) node.

## Next steps

* [Check and clean a dataset](/use-cases/check-and-clean-data) — profile what you just imported.
* [Organize labeling](/use-cases/organize-labeling) — label it.
* [Try a pretrained detector](/use-cases/try-a-pretrained-detector) — see what a model already finds in it.