Datasets

Access datasets through client.datasets in the Datature Vi SDK.

The datasets resource is the root container for all your training data. Datasets hold assets (images) and annotations, and they belong to your organization. Every other data-related operation (uploading images, creating annotations, exporting for training) starts here.

Before You Start

Dataset Creation Is UI-Only

The SDK does not support creating new datasets. Use the Datature Vi web interface to create a dataset, then use the SDK to manage, export, and download it.

Methods

list()

List all datasets in your organization.

datasets = client.datasets.list()

for dataset in datasets.items:
    print(f"{dataset.name}: {dataset.dataset_id}")
from vi.api.types import PaginationParams

pagination = PaginationParams(page_size=50)
datasets = client.datasets.list(pagination=pagination)

# Iterate through all pages
for page in datasets:
    for dataset in page.items:
        print(f"{dataset.name}: {dataset.statistic.asset_total} assets")
all_datasets = list(client.datasets.list().all_items())
print(f"Total datasets: {len(all_datasets)}")
Expected output
Output
my-dataset: dat_abc123 training-set: dat_def456 Total datasets: 2

Parameters

Name
Type
Description
Required
Default

Returns: PaginatedResponse[Dataset]


get()

Get a specific dataset by ID.

dataset = client.datasets.get("dataset_abc123")

print(f"Name: {dataset.name}")
print(f"Assets: {dataset.statistic.asset_total}")
dataset = client.datasets.get("dataset_abc123")
dataset.info()  # Prints formatted dataset summary
dataset = client.datasets.get("dataset_abc123")

print(f"Total assets: {dataset.statistic.asset_total}")
print(f"Annotated: {dataset.statistic.asset_annotated}")
print(f"Annotations: {dataset.statistic.annotation_total}")

if dataset.statistic.asset_total > 0:
    rate = dataset.statistic.asset_annotated / dataset.statistic.asset_total * 100
    print(f"Annotation rate: {rate:.1f}%")
Expected output
Output
Name: my-dataset Assets: 150 Total assets: 150 Annotated: 120 Annotations: 340 Annotation rate: 80.0%

Parameters

Name
Type
Description
Required
Default

Returns: Dataset


create_export()

Create a new dataset export.

export = client.datasets.create_export(dataset_id="dataset_abc123")
from vi.api.resources.datasets.types import (
    DatasetExportSettings,
    DatasetExportFormat,
    DatasetExportOptions
)

export_settings = DatasetExportSettings(
    format=DatasetExportFormat.VI_FULL,
    options=DatasetExportOptions(
        normalized=True,
        split_ratio=0.8  # 80% training, 20% validation
    )
)

export = client.datasets.create_export(
    dataset_id="dataset_abc123",
    export_settings=export_settings
)

print(f"Export ID: {export.dataset_export_id}")
from vi.api.resources.datasets.types import (
    DatasetExportSettings,
    DatasetExportFormat
)

export_settings = DatasetExportSettings(
    format=DatasetExportFormat.VI_JSONL
)

export = client.datasets.create_export(
    dataset_id="dataset_abc123",
    export_settings=export_settings
)
Expected output
Output

Export ID: exp_xyz789

Parameters

Name
Type
Description
Required
Default

Returns: DatasetExport


list_exports()

List all exports for a dataset.

exports = client.datasets.list_exports("dataset_abc123")

for export in exports.items:
    print(f"Export: {export.dataset_export_id}")
    print(f"  Format: {export.spec.format}")
exports = client.datasets.list_exports("dataset_abc123")

ready_exports = [
    e for e in exports.items
    if e.status.download_url is not None
]

for export in ready_exports:
    print(f"Export {export.dataset_export_id} ready: {export.status.download_url.url}")

Parameters

Name
Type
Description
Required
Default

Returns: PaginatedResponse[DatasetExport]


get_export()

Get a specific export by ID.

export = client.datasets.get_export(
    dataset_id="dataset_abc123",
    dataset_export_id="export_xyz789"
)

if export.status.download_url:
    print(f"Export ready: {export.status.download_url.url}")
    print(f"Expires at: {export.status.download_url.expires_at}")
else:
    print("Export still processing...")
import time

def wait_for_export(dataset_id: str, export_id: str, timeout: int = 300) -> str:
    """Wait for export to complete and return download URL."""
    start = time.time()
    while time.time() - start < timeout:
        export = client.datasets.get_export(dataset_id, export_id)
        if export.status.download_url:
            return export.status.download_url.url
        time.sleep(5)
    raise TimeoutError("Export not ready")

url = wait_for_export("dataset_abc123", "export_xyz789")

Parameters

Name
Type
Description
Required
Default

Returns: DatasetExport


download()

Download a dataset with all assets and annotations.

downloaded = client.datasets.download(
    dataset_id="dataset_abc123",
    save_dir="./data"
)

print(downloaded.summary())
from vi.api.resources.datasets.types import (
    DatasetExportSettings,
    DatasetExportFormat,
    DatasetExportOptions
)

settings = DatasetExportSettings(
    format=DatasetExportFormat.VI_FULL,
    options=DatasetExportOptions(
        normalized=True,
        split_ratio=0.8
    )
)

downloaded = client.datasets.download(
    dataset_id="dataset_abc123",
    export_settings=settings,
    save_dir="./data",
    show_progress=True
)

print(f"Saved to: {downloaded.save_dir}")
print(f"Size: {downloaded.size_mb:.2f} MB")
print(f"Splits: {downloaded.splits}")
downloaded = client.datasets.download(
    dataset_id="dataset_abc123",
    save_dir="./annotations",
    annotations_only=True
)
downloaded = client.get_dataset(
    dataset_id="dataset_abc123",
    save_path="./data"
)
Expected output
Output
Saved to: ./data Size: 24.50 MB Splits: ['train', 'val']
Annotations-Only Downloads

For annotation-only downloads, client.annotations.download() is a cleaner alternative:

result = client.annotations.download(
    dataset_id="dataset_abc123",
    save_dir="./annotations"
)

This wraps client.datasets.download(annotations_only=True) with a more descriptive name. See the Annotations API →

Parameters

Name
Type
Description
Required
Default

Returns: DatasetDownloadResult


delete()

Delete a dataset permanently.

deleted = client.datasets.delete("dataset_abc123")
print(f"Deleted: {deleted.dataset_id}")
dataset = client.datasets.get("dataset_abc123")
print(f"About to delete: {dataset.name}")
print(f"  Assets: {dataset.statistic.asset_total}")
print(f"  Annotations: {dataset.statistic.annotation_total}")

confirm = input("Delete? (yes/no): ")
if confirm.lower() == "yes":
    client.datasets.delete("dataset_abc123")
    print("Deleted.")
Expected output
Output

Deleted: dat_abc123

Parameters

Name
Type
Description
Required
Default

Returns: DeletedDataset


bulk_delete_assets()

Bulk delete assets from a dataset using a filter query.

response = client.datasets.bulk_delete_assets(
    dataset_id="dataset_abc123",
    filter_criteria='{"status": "error"}',
    strict_query=True
)
response = client.datasets.bulk_delete_assets(
    dataset_id="dataset_abc123",
    filter_criteria='{"metadata.annotations.total": 0}'
)

Parameters

Name
Type
Description
Required
Default

Returns: BulkAssetDeletionSession


Response types

Dataset

from vi.api.resources.datasets.responses import Dataset

Properties

Name
Type
Description
Required
Default

Methods: info() → prints a formatted dataset summary.


DatasetStatistic

from vi.api.resources.datasets.responses import DatasetStatistic

Properties

Name
Type
Description
Required
Default

DatasetAccess

from vi.api.resources.datasets.responses import DatasetAccess

Properties

Name
Type
Description
Required
Default

AssetStatusDetail

from vi.api.resources.datasets.responses import AssetStatusDetail

Properties

Name
Type
Description
Required
Default

DatasetExport

from vi.api.resources.datasets.responses import DatasetExport

Properties

Name
Type
Description
Required
Default

DatasetExportSpec

from vi.api.resources.datasets.responses import DatasetExportSpec

Properties

Name
Type
Description
Required
Default

DatasetExportStatus

from vi.api.resources.datasets.responses import DatasetExportStatus

Properties

Name
Type
Description
Required
Default

DatasetExportDownloadUrl

from vi.api.resources.datasets.responses import DatasetExportDownloadUrl

Properties

Name
Type
Description
Required
Default

DatasetDownloadResult

Properties

Name
Type
Description
Required
Default

Methods: summary() → returns a summary string. info() → prints detailed info.


DeletedDataset

from vi.api.resources.datasets.responses import DeletedDataset

Properties

Name
Type
Description
Required
Default

DeletedDatasetStatus

from vi.api.resources.datasets.responses import DeletedDatasetStatus

Properties

Name
Type
Description
Required
Default

BulkAssetDeletionSession

from vi.api.resources.datasets.responses import BulkAssetDeletionSession

Properties

Name
Type
Description
Required
Default

BulkAssetDeletionSpec

from vi.api.resources.datasets.types import BulkAssetDeletionSpec

Properties

Name
Type
Description
Required
Default

BulkAssetDeletionStatus

from vi.api.resources.datasets.responses import BulkAssetDeletionStatus

Properties

Name
Type
Description
Required
Default

Request types

DatasetExportSettings

from vi.api.resources.datasets.types import DatasetExportSettings

Properties

Name
Type
Description
Required
Default

DatasetExportOptions

from vi.api.resources.datasets.types import DatasetExportOptions

Properties

Name
Type
Description
Required
Default

Enums

DatasetType

from vi.api.resources.datasets.types import DatasetType

Values

Name
Type
Description
Required
Default

DatasetContent

from vi.api.resources.datasets.types import DatasetContent

Values

Name
Type
Description
Required
Default

DatasetExportFormat

from vi.api.resources.datasets.types import DatasetExportFormat

Values

Name
Type
Description
Required
Default

Related resources


Did this page help you?