module documentation

Create and manage top-level model resources.

A model contains shared metadata such as its display name, supported tasks, license, and visibility. Actual files belong to model instances beneath a versioned variant; see hubai_sdk.services.variants and hubai_sdk.services.instances.

Identifiers:
Functions that accept an identifier support a UUID, a model slug, or a full HubAI slug copied from the web application. This makes slugs suitable for configuration files while UUIDs remain useful for programmatic flows.
Visibility:
During creation, is_public=True makes a model public, False makes it private, and None selects team visibility. For list operations, None means no visibility filter. For updates, None leaves the existing visibility unchanged.

Example

models = client.models.list_models(
    tasks=["OBJECT_DETECTION"],
    is_public=True,
    limit=10,
)
model = client.models.get_model(models[0].id)
Function create_model Create a model resource.
Function create_model_cli Creates a new model resource.
Function delete_model Delete a model from HubAI.
Function delete_model_cli Deletes a model.
Function get_model Get one model by UUID or slug.
Function get_model_info_cli Get the model information from the HubAI.
Function list_models List models visible to the authenticated HubAI team.
Function list_models_cli List the models in the HubAI.
Function update_model Update fields on an existing model.
Function update_model_cli Updates a model.
Constant MODEL_INFO_KEYS Undocumented
Constant MODEL_LIST_KEYS Undocumented
Variable app Undocumented
Function _model_to_cli_data Undocumented
Function _print_model_info Undocumented
Function _print_model_list Undocumented
def create_model(name: str, *, license_type: License = 'undefined', is_public: bool | None = False, description: str | None = None, description_short: str = '<empty>', architecture_id: UUID | str | None = None, tasks: list[Task] | None = None, links: list[str] | None = None, is_yolo: bool = False) -> ModelResponse:

Create a model resource.

Parameters
name:strHuman-readable model name. HubAI derives the slug from it.
license_type:LicenseLicense attached to the model metadata.
is_public:bool | NoneTrue for public, False for private, or None for team visibility.
description:str | NoneFull model description.
description_short:strShort summary shown in model listings.
architecture_id:UUID | str | NoneRelated architecture UUID, if known.
tasks:list[Task] | NoneTasks supported by the model.
links:list[str] | NoneURLs for source code, papers, or other related resources.
is_yolo:boolWhether the model uses a supported YOLO output contract.
Returns
ModelResponseThe created model resource.
Raises
ResourceConflictErrorIf a model with the derived slug already exists.
HubApiErrorIf HubAI rejects the request for another reason.
@app.command(name='create')
def create_model_cli(name: str, *, license_type: License = 'undefined', is_public: bool | None = False, description: str | None = None, description_short: str = '<empty>', architecture_id: UUID | str | None = None, tasks: list[Task] | None = None, links: list[str] | None = None, is_yolo: bool = False):

Creates a new model resource.

@telemetry_operation(OperationTelemetrySpec(operation_name=OperationName.MODEL_DELETE, operation_group=TelemetryGroup.MODELS, success_event=MODEL_DELETED_EVENT, target_resource=TargetResource.MODEL, identifier_param='identifier', success_builder=build_model_identifier_properties))
def delete_model(identifier: UUID | str):

Delete a model from HubAI.

Parameters
identifier:UUID | strModel UUID, slug, or full HubAI slug.
Raises
ResourceNotFoundErrorIf identifier cannot be resolved.
HubApiErrorIf HubAI refuses the deletion.
@app.command(name='delete')
def delete_model_cli(identifier: UUID | str):

Deletes a model.

@telemetry_operation(OperationTelemetrySpec(operation_name=OperationName.MODEL_GET, operation_group=TelemetryGroup.MODELS, success_event=MODEL_RETRIEVED_EVENT, target_resource=TargetResource.MODEL, identifier_param='identifier', success_builder=build_model_identifier_properties))
def get_model(identifier: UUID | str) -> ModelResponse:

Get one model by UUID or slug.

Parameters
identifier:UUID | strModel UUID, slug, or full HubAI slug.
Returns
ModelResponseThe resolved model resource.
@app.command(name='info')
def get_model_info_cli(identifier: UUID | str):

Get the model information from the HubAI.

def list_models(tasks: list[Task] | None = None, license_type: License | None = None, is_public: bool | None = None, project_id: str | None = None, luxonis_only: bool = False, limit: int = 50, sort: str = 'updated', order: Order = 'desc') -> list[ModelResponse]:

List models visible to the authenticated HubAI team.

Parameters
tasks:list[Task] | NoneFilter models by supported tasks.
license_type:License | NoneKeep models with this license.
is_public:bool | NoneFilter by public status. Leave as None to include every visibility available to the API key.
project_id:str | NoneKeep models belonging to this project.
luxonis_only:boolWhether to return only Luxonis-maintained models.
limit:intMaximum number of models to return.
sort:strModelResponse field used for sorting, such as "name", "id", or "updated".
order:OrderSort in ascending or descending order.
Returns
list[ModelResponse]A list of matching model resources.
@app.command(name='ls')
def list_models_cli(tasks: list[Task] | None = None, license_type: License | None = None, is_public: bool | None = None, project_id: str | None = None, luxonis_only: bool = False, limit: int = 50, sort: str = 'updated', order: Order = 'desc', field: Annotated[list[str] | None, Parameter(name=[(--field), (-f)])] = None):

List the models in the HubAI.

@telemetry_operation(OperationTelemetrySpec(operation_name=OperationName.MODEL_UPDATE, operation_group=TelemetryGroup.MODELS, success_event=MODEL_UPDATED_EVENT, target_resource=TargetResource.MODEL, identifier_param='identifier', success_builder=build_model_updated_properties))
def update_model(identifier: UUID | str, *, license_type: License | None = None, is_public: bool | None = None, description: str | None = None, description_short: str | None = None, architecture_id: UUID | str | None = None, tasks: list[Task] | None = None, links: list[str] | None = None, is_yolo: bool | None = None) -> ModelResponse:

Update fields on an existing model.

Only arguments whose value is not None are sent to HubAI. This means optional text fields cannot be cleared with this helper.

Parameters
identifier:UUID | strModel UUID, slug, or full HubAI slug.
license_type:License | NoneReplacement license.
is_public:bool | NoneReplacement public/private state.
description:str | NoneReplacement full description.
description_short:str | NoneReplacement short description.
architecture_id:UUID | str | NoneReplacement architecture UUID.
tasks:list[Task] | NoneReplacement task list.
links:list[str] | NoneReplacement related-resource links.
is_yolo:bool | NoneReplacement YOLO flag.
Returns
ModelResponseThe updated model resource.
@app.command(name='update')
def update_model_cli(identifier: UUID | str, *, license_type: License | None = None, is_public: bool | None = None, description: str | None = None, description_short: str | None = None, architecture_id: UUID | str | None = None, tasks: list[Task] | None = None, links: list[str] | None = None, is_yolo: bool | None = None):

Updates a model.

MODEL_INFO_KEYS: list[str] =

Undocumented

Value
['name',
 'slug',
 'id',
 'created',
 'updated',
 'tasks',
 'platforms',
...
MODEL_LIST_KEYS: list[str] =

Undocumented

Value
['name', 'id', 'slug']
app =

Undocumented

def _model_to_cli_data(model: ModelResponse) -> dict[str, object]:

Undocumented

def _print_model_info(model: ModelResponse):

Undocumented

def _print_model_list(models: list[ModelResponse], field: list[str] | None = None):

Undocumented