Skip to main content

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​

MethodDescription
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

ParameterTypeRequiredDefaultDescription
pathpath-likeYes-Model directory containing root config.json, weights, and tokenizer files.
namestrNoDirectory nameAsset display name.
descriptionstrNoNoneAsset description.
model_typestrNoDetectedModel type such as LLM.
model_architecturestrNoDetectedArchitecture override.
parameter_sizestrNoDetectedHuman-readable parameter size.
serving_config_jsonstrNoNoneSerialized serving metadata.
client_request_idstrNoGenerated UUIDIdempotency identity for upload recovery; maximum 64 characters.
on_progresscallbackNoNoneReceives 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.