# variants

Python API: `hubai_sdk.services.variants`

Manage named and versioned variants of HubAI models.

A variant groups related model instances under a semantic version. For example, a model can have separate variants for different
input resolutions or training datasets, and each variant can have versions such as `"1.0.0"` and `"1.1.0"`.

> **Example**
> ```python
variant = client.variants.create_variant(
    "coco-640x640",
    model_id=model.id,
    variant_version="1.0.0",
    tags=["coco"],
)
instances = client.instances.list_instances(variant_id=variant.id)
```

Functions accepting an `identifier` resolve UUIDs and HubAI slugs. Deleting a variant removes the resource remotely and cannot be undone through the SDK.

## Functions

### create_variant

```python
def create_variant(name: str, *, model_id: UUID | str, variant_version: str, description: str | None = None, repository_url: str |
None = None, commit_hash: str | None = None, domain: str | None = None, tags: list[str] | None = None) -> ModelVersionResponse:
```

Create a versioned variant beneath a model.

Parameters

 * `name` (`str`): Human-readable variant name.
 * `model_id` (`UUID | str`): UUID of the parent model.
 * `variant_version` (`str`): Version string for this variant.
 * `description` (`str | None`): Full description of the variant.
 * `repository_url` (`str | None`): Source repository URL.
 * `commit_hash` (`str | None`): Source revision used to produce the variant.
 * `domain` (`str | None`): Application or dataset domain.
 * `tags` (`list[str] | None`): Searchable labels for the variant.

Returns

 * `ModelVersionResponse`: The created model version resource.

Raises

 * `ResourceConflictError`: If the variant already exists for the model.
 * `HubApiError`: If HubAI rejects the request for another reason.

### create_variant_cli

```python
def create_variant_cli(name: str, *, model_id: UUID | str, variant_version: str, description: str | None = None, repository_url:
str | None = None, commit_hash: str | None = None, domain: str | None = None, tags: list[str] | None = None):
```

Creates a new variant of a model.

### delete_variant

```python
def delete_variant(identifier: UUID | str):
```

Delete a model variant from HubAI.

Parameters

 * `identifier` (`UUID | str`): Variant UUID, slug, or full HubAI slug.

### delete_variant_cli

```python
def delete_variant_cli(identifier: UUID | str):
```

Deletes a model variant.

### get_variant

```python
def get_variant(identifier: UUID | str) -> ModelVersionResponse:
```

Get one model variant by UUID or slug.

Parameters

 * `identifier` (`UUID | str`): Variant UUID, slug, or full HubAI slug.

Returns

 * `ModelVersionResponse`: The resolved model version resource.

### get_variant_info_cli

```python
def get_variant_info_cli(identifier: UUID | str):
```

Returns information about a model version.

### list_variants

```python
def list_variants(model_id: UUID | str | None = None, name: str | None = None, variant_slug: str | None = None, variant_version:
str | None = None, is_public: bool | None = None, include_model_name: bool = False, limit: int = 50, sort: str = 'updated', order:
Order = 'desc') -> list[ModelVersionResponse]:
```

List model variants visible to the authenticated team.

Parameters

 * `model_id` (`UUID | str | None`): Keep variants belonging to this model UUID.
 * `name` (`str | None`): Keep variants with this name.
 * `variant_slug` (`str | None`): Keep variants with this slug.
 * `variant_version` (`str | None`): Keep variants with this version string.
 * `is_public` (`bool | None`): Filter by visibility, or leave as `None` for no filter.
 * `include_model_name` (`bool`): Resolve and populate the parent `model_name`. This performs an additional request for each returned variant.
 * `limit` (`int`): Maximum number of variants to return.
 * `sort` (`str`): [ModelVersionResponse](https://docs.luxonis.com/cloud/hubai/model-registry/hubai-sdk/hubai-sdk-api-reference/utils/sdk_models.md) field used for sorting.
 * `order` (`Order`): Sort in ascending or descending order.

Returns

 * `list[ModelVersionResponse]`: A list of matching model version resources.

### list_variants_cli

```python
def list_variants_cli(model_id: UUID | str | None = None, name: str | None = None, variant_slug: str | None = None,
variant_version: str | None = None, is_public: bool | None = None, include_model_name: bool = False, limit: int = 50, sort: str =
'updated', order: Order = 'desc', field: Annotated[list[str] | None, Parameter(name=['--field', '-f'])] = None):
```

List the model versions in the HubAI.

## Attributes

### app

### VARIANT_INFO_KEYS

### VARIANT_LIST_KEYS

### VARIANT_LIST_KEYS_WITH_MODEL
