My Models - Python SDK
client.my_models lists caller-owned Upload and Trained model assets. Only
Upload assets can be updated or deleted; Training-produced assets are read-only. The
high-level upload(...) workflow is the supported way to upload a local model;
the internal authorization and multipart endpoints are intentionally hidden.
Overview
Available Operations
| Method | Description |
|---|---|
upload(path, ...) | Validate, hash, upload, register, and complete one model directory. |
list(...) | Page the caller's model assets. |
get(id) | Read one model asset. |
update(id, body) | Update Upload model metadata. |
delete(id) | Delete an unreferenced Upload model asset. |
resumable_uploads() | List interrupted uploads that can be resumed or cancelled. |
cancel_upload(task_id) | Cancel a resumable upload task. |
upload
Validate, hash, upload, register, and complete one model directory.
Request
path required; optional name, description, model_type, model_architecture, parameter_size, serving_config_json, client_request_id, on_progress.
Response
Ready MyModelVO.
list
Page the caller's model assets.
Request
Optional page, page_size, keyword, status, source.
Response
PageResult[MyModelVO].
get
Read one model asset.
Request
id: int | str required.
Response
MyModelVO.
update
Update Upload model metadata.
Request
Upload asset id and body required.
Response
Updated MyModelVO; Trained assets return 409.
delete
Delete an unreferenced Upload model asset.
Request
Upload asset id required.
Response
None; Trained assets return 409.
resumable_uploads
List interrupted uploads that can be resumed or cancelled.
Request
This method has no parameters and sends no request body.
Response
list[MyModelStorageV2TaskResponse].
cancel_upload
Cancel a resumable upload task.
Request
task_id: str required.
Response
None.
Field Reference and Examples
upload(...) parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
path | path-like | Yes | - | Model directory containing root config.json, weights, and tokenizer files. |
name | str | No | Directory name | Asset display name. |
description | str | No | None | Asset description. |
model_type | str | No | Detected | Model type such as LLM. |
model_architecture | str | No | Detected | Architecture override. |
parameter_size | str | No | Detected | Human-readable parameter size. |
serving_config_json | str | No | None | Serialized serving metadata. |
client_request_id | str | No | Generated UUID | Idempotency identity for upload recovery; maximum 64 characters. |
on_progress | callback | No | None | Receives phase, file, completedBytes, and totalBytes. |
The uploader rejects symlinks, Git LFS pointer files, missing model control files, duplicate paths, and unsupported size/count limits before registration. A fixed request ID can resume an unfinished upload; replaying an ID whose task has already completed is rejected instead of creating a duplicate asset.
Update body fields: name, description, modelType,
modelArchitecture, parameterSize, and servingConfigJson are optional.
Key MyModelVO fields: id, name, source, status, state,
deployable, deploymentBlockReasonCode, modelType, modelArchitecture,
parameterSize, sizeBytes, fileCount, baseModelName, trainJobId,
createdAt, and updatedAt.
def progress(event: dict) -> None:
print(event["phase"], event["file"], event["completedBytes"])
asset = client.my_models.upload(
"./model",
name="example-model",
model_type="LLM",
on_progress=progress,
)
asset_id = asset["id"]
page = client.my_models.list(page=1, page_size=20, status="READY")
detail = client.my_models.get(asset_id)
updated = client.my_models.update(asset_id, {"description": "validated"})
tasks = client.my_models.resumable_uploads()
if tasks:
client.my_models.cancel_upload(tasks[0]["taskId"])
client.my_models.delete(asset_id)
All methods use the shared authentication and typed error behavior described in Response Conventions and Retry and Security.