Skip to content

voplica.types.ai.model

The protobuf package voplica.types.ai.model: 0 services, 24 messages and 10 enums, defined in voplica/types/ai/model/model.proto, voplica/types/ai/model/model_import.proto, voplica/types/ai/model/model_verification.proto.

No fields.

Field Number Type Label Description
controlnet_type 1 voplica.types.ai.common.ControlnetType
Field Number Type Label Description
id 1 string
name 2 string Group name that represents connected models
status 3 voplica.types.base.PublishStatus Automatically published where there is at least one published model variant. Automatically unpublished if there are no any published model variants.
owner_id 4 string
visibility 5 voplica.types.base.VisibilityType Model group visibility type
min_required_subscription 6 voplica.types.subscription.StudioSubscriptionType Minimum subscription level the user should have to use any of the models in the group This is used as denormalization data. For each individual model the user should check requirements separately.
created_at 7 uint64 Timestamp when the model was created
latest_model_variant_created_at 8 uint64 This is a timestamp of the most recent model variant in this model
category 9 voplica.types.ai.common.SubjectCategory Category. Automatically applicable to all model variants
default_model_variant 10 ModelVariantShortPreview optional This is a recommended variant. If not set explicitly then the most recent is used.
type 11 voplica.types.ai.common.ModelType Model type. Automatically applicable to all model variants
used_model_family_types 12 voplica.types.ai.common.ModelFamily repeated What Model Family types (i.e. “Base” types) are used in the model variants under this model It’s possible to determine output file types from the model family types
nsfw 13 bool Means this model is trained to produce NSFW content
allowed_for_nsfw_use 14 bool Means this model can be used for NSFW generated content
base_model 15 bool If the model is to represent a Base model (not a finetune or LoRa) then this flag should be true. This flag can only be changed by an administrator. Base models are features as preferred models for models training.
has_published_valid_model_variants 16 bool true if there is at least one model variant that is published and has valid files
has_published_inference_enabled_variant 17 bool true if there is at least one variant that supports inference
has_published_training_enabled_variant 18 bool true if there is at least one variant that supports training
likeness_category 19 voplica.types.base.LikenessCategory If the dataset is of a likeness of a real person or copyright non-free content then the permission should be granted explicitly.
auto_publish 20 bool When true, a model variant of this model is PUBLISHED automatically as soon as its files verify VALID AND this model’s likeness declaration is itself VERIFICATION_VALID. Defaults to true; the model’s owner may turn it off. It never publishes a failed verification, never changes visibility, and only ever moves a variant from UNPUBLISHED on the verdict that lands - a variant the owner un-published by hand is left alone until its next verification (which publishes it again: stated in the studio’s help). THE LIKENESS HALF IS A GATE, NOT A FILTER, and it is fail-closed: the check keys on the permission’s verification STATUS, not on the declared category, so a model whose likeness permission is still UNVERIFIED - a third party’s likeness under a merely claimed consent, a COPYRIGHT_PROTECTED declaration, or no metadata row at all - has its variants verify VALID and stay UNPUBLISHED until a moderator marks the permission VALID. That withhold is silent on the wire (nothing here says which of the two halves held a variant back); the studio’s auto-publish help text is where an owner is told to expect it.
unique_likes_count 31 uint64 Derived, read-only unique-likers count for this model group: the number of distinct accounts that liked ANY ModelVariant of this group (models are variant-only like targets), rolled up via engagement’s group_likes machinery. It is never incremented by a direct like on the group itself – there is no such like target.
used_count_sum 32 uint64 Sum of usage count of each model in the gen model group
views_count 33 uint64 Engagement metrics (read-only, updated by the platform). Renamed from checks_count/views_count – see the checks->views/views->engagement terminology rename.
engagement_count 34 uint64
Field Number Type Label Description
model_id 1 string Model id
description 2 string
revenue_sharing_preferred 3 bool optional Returned info about revenue share only to the owner or an administrator
model_variant_ids 4 string repeated Ids of all model variants in this model
default_model_variant_manual_selected 5 bool Manually set default model variant. If false - it means that the default model variant is using latest selection strategy.
model_type_metadata 6 GenModelTypeMetadata
Field Number Type Label Description
checkpoint_metadata 1 CheckpointModelTypeMetadata oneof model_type_metadata
lora_metadata 2 LoraModelTypeMetadata oneof model_type_metadata
controlnet_metadata 3 ControlnetModelTypeMetadata oneof model_type_metadata
vae_metadata 4 VAEModelTypeMetadata oneof model_type_metadata
upscaler_metadata 5 UpscalerModelTypeMetadata oneof model_type_metadata
Field Number Type Label Description
default_preview_manual_selected 1 bool Manually set default preview asset. If false - it means that the default preview is using latest asset selection strategy.
trigger_words 2 string repeated
revenue_share 3 bool optional Returned info about revenue share only to the owner or administrator
download_allowed 4 bool If true anyone who can use the model will also be able to download model files. If false nobody will be able to download the model.
files_verification_job_status 5 voplica.types.base.JobStatus If PENDING - the verification is starting. If RUNNING - verification is currently running. If FAILED - there was an internal issue and we can’t verify files yet. Tech support should look at it. Any other status shows that verification is not running (see verification_status to check if files are valid or invalid).
files_verification_workflow_id 6 string optional Files verification workflow id to track
files_verification_trigger_timestamp 7 uint64 optional Last trigger timestamp when files verification was triggered
files_verification_message 8 string optional If previous file verification failed, it may have an error message here
based_on_model_variant_id 9 string optional If provided - missing model files should be taken from this model variant. If not provided and the model is a non-base model - missing files will be taken from the default model selected via the same model family
files_verification_report 10 ModelFilesVerificationReport optional
revenue_share_blocked 11 bool optional Admin-set kill switch: blocks revenue-share eligibility regardless of the owner’s revenue_share flag. Owner/admin view only.
revenue_share_eligibility 12 RevenueShareEligibility Computed eligibility (and, when ineligible, why). Owner/admin view only.
revenue_share_provenance 13 voplica.types.creator.CreatorModelProvenance optional
declared_external_ref 14 string optional
undigested 15 bool optional
usable 16 bool
trainable 17 bool The training half: training is possible with these weights. ModelVariant.training_enabled = trainable AND the family’s platform training switch. Every viewer.

No fields.

Field Number Type Label Description
variant_id 1 string
parent_model_id 2 string
variant_name 3 string Model variant name / version
status 4 voplica.types.base.PublishStatus
owner_id 5 string
visibility 6 voplica.types.base.VisibilityType Model visibility type is inherited from parent model
min_required_subscription 7 voplica.types.subscription.StudioSubscriptionType Minimum subscription level the user should have to use this model variant
created_at 8 uint64
default_preview 9 voplica.types.file.AssetFileVariantGroups optional Note: file_variant_groups are returned only if requested explicitly
model_asset_id 10 string Asset id that holds model files
model_family 11 voplica.types.ai.common.ModelFamily It’s possible to determine output file types from the model family type
files_verification 12 voplica.types.base.VerificationStatus Shows if files were verified for correctness (i.e. that it can actually be used for inference or training). Only models with verified files can be used for inference. Model files can be uploaded / changed only if the status is UNVERIFIED. With other statuses model files can’t be changed. If the user wants to modify existing files - the verification status will be changed to UNVERIFIED automatically.
inference_enabled 13 bool
training_enabled 14 bool
sampling_regime 15 ModelVariantSamplingRegime The owner’s (or an admin’s) manual declaration of how these weights want to be sampled. Public, like the rest of this message: it is a property of the weights, and the variant’s own name usually says it out loud anyway. A PLAIN enum rather than optional – SAMPLING_REGIME_UNSPECIFIED is a real, meaningful state here (“the family decides”), not the absence of one, and it is what every variant that predates this field reads as.
creator_id 23 string optional
likes_count 31 uint64
used_count 32 uint64
views_count 33 uint64 Engagement metrics (read-only, updated by the platform). Renamed from checks_count/views_count – see the checks->views/views->engagement terminology rename.
engagement_count 34 uint64
Field Number Type Label Description
variant_id 1 string
min_required_subscription 2 voplica.types.subscription.StudioSubscriptionType Minimum subscription level the user should have to use this model variant
created_at 3 uint64
default_preview 4 voplica.types.file.AssetFileVariantGroups optional Note: file_variant_groups are returned only if requested explicitly
model_family 5 voplica.types.ai.common.ModelFamily It’s possible to determine output file types from the model family type

No fields.

No fields.

Field Number Type Label Description
external_file_id 1 string
name 2 string File name (Civitai) or repository path (HuggingFace).
kind 3 ExternalFileKind
format 4 ExternalFileFormat
size_bytes 5 int64
sha256 6 string Hex SHA-256 when the provider reports one.
precision 7 string Raw precision label from the provider (“fp16”, “bf16”, “fp8”, “nf4”, …); empty when unknown.
pruned 8 bool
primary 9 bool
supported 10 bool
unsupported_reason 11 string optional
declared_structure 12 voplica.types.ai.common.ModelFileStructure Declared metadata the import sends with the MODEL_GEN_ASSET_ATTACH flow.
declared_dtype 13 voplica.types.ai.common.DType
declared_quantization 14 voplica.types.ai.common.QuantizationType
virus_scan_result 15 string optional Provider scan verdicts when available (Civitai: “Success”, “Danger”, “Pending”, …).
pickle_scan_result 16 string optional
role 20 voplica.types.ai.common.ModelFileRole The importer’s classification of this file (provider type, then filename, then HF folder).
alternative_group 21 string Files that are ALTERNATIVES of one another (same weights, different precision/container) share a key: “weights”, “vae”, “text_encoder” or “text_encoder_2” (the diffusers slot). Stamped only when a version holds two or more files of that group; empty for singletons. At most one SUPPORTED file per group carries recommended = true; a supported singleton is recommended with an empty group.
recommended 22 bool The default pick inside its group (see alternative_group).
role_note 23 string Human text explaining the role and the ranking, e.g. “same weights in lower precision - the platform serves an fp8 tier automatically”, “Flux VAE”, “sharded - not importable”.
Field Number Type Label Description
provider 1 voplica.types.vault.ThirdPartyProvider
api_host 2 string
external_model_id 3 string
name 4 string
description 5 string Plain text (provider HTML stripped).
model_type 6 voplica.types.ai.common.ModelType
type_supported 7 bool
external_type 8 string The provider’s raw type label (“Checkpoint”, “LORA”, “TextualInversion”, …).
nsfw 9 bool
poi 10 bool
minor 11 bool
creator_name 12 string
owned_by_token_holder 13 bool
import_allowed 14 bool
import_blocked_reason 15 string optional
allow_commercial_use 16 string repeated
allow_derivatives 17 bool
versions 18 ExternalModelVersionSummary repeated
requested_version_id 19 string optional Set when the source URI named one version; the studio pre-selects it.
tags 20 string repeated The provider’s own tags, in the provider’s order (Civitai: model.tags). Raw and unfiltered - the studio shows them, and suggested_category is what we made of them.
suggested_category 21 voplica.types.ai.common.SubjectCategory optional
Field Number Type Label Description
external_version_id 1 string
name 2 string
base_model 3 string The provider’s raw base-model label (“Flux.2 Klein 9B”, “SDXL 1.0”, …).
mapped_model_family 4 voplica.types.ai.common.ModelFamily optional
family_supported 5 bool False when no family mapping exists or the mapped family is not accepted for uploads.
mapping_note 6 string optional
trained_words 7 string repeated
nsfw_level 8 uint32
files 9 ExternalFileSummary repeated
previews 10 ExternalPreviewSummary repeated
published_at 11 uint64
inpainting 12 bool
Field Number Type Label Description
index 1 uint32 Position in the provider’s preview list; the import selects the first N.
kind 2 ExternalPreviewKind
width 3 uint32
height 4 uint32
nsfw_level 5 uint32
preview_url 6 string The provider’s public preview URL (no secret involved) so the studio can render it.
Field Number Type Label Description
provider 1 voplica.types.vault.ThirdPartyProvider
repo_id 2 string
revision 3 string
author 4 string
owned_by_token_holder 5 bool
import_allowed 6 bool
import_blocked_reason 7 string optional
gated 8 bool
private_repo 9 bool
files 10 ExternalFileSummary repeated
requested_path 11 string optional Set when the source URI named one file; the studio pre-selects it.

The CreateModelRequest fields the user must still supply (everything else comes from the provider).

Field Number Type Label Description
visibility 1 voplica.types.base.VisibilityType
revenue_sharing_preferred 2 bool
category 3 voplica.types.ai.common.SubjectCategory
usage_for_nsfw_allowed 4 bool
based_on_likeness_category 5 voplica.types.base.LikenessCategory
likeness_granted_permission_verification 6 voplica.types.base.LikenessGrantedPermissionVerification
name 7 string optional
description 8 string optional
nsfw 9 bool optional
controlnet_type 10 voplica.types.ai.common.ControlnetType optional Required when the external type maps to CONTROLNET.
auto_publish 11 bool optional Mirrors CreateModelRequest.auto_publish: absent = the platform default (true).
Field Number Type Label Description
free_bytes 1 int64
selected_bytes_estimate 2 int64
sufficient 3 bool
Field Number Type Label Description
min_required_subscription 1 voplica.types.subscription.StudioSubscriptionType
download_allowed 2 bool
revenue_share 3 bool optional
variant_name 4 string optional Only meaningful for a single-variant import; defaults to the external version name.
Field Number Type Label Description
external_version_id 1 string
model_family 2 voplica.types.ai.common.ModelFamily optional Overrides / supplies the family for this version (required when the summary says family_supported = false).
external_file_ids 3 string repeated
max_previews 4 uint32 0 = the platform’s default.
based_on_model_variant_id 5 string optional Donor variant for transformer-only weights (text encoders / VAE come from it); optional, same semantics as CreateModelVariantRequest.based_on_model_variant_id.
Field Number Type Label Description
id 1 string
owner_id 2 string
requester_id 3 string
provider 4 voplica.types.vault.ThirdPartyProvider
kind 5 ModelImportKind
source_uri 6 string
external_model_id 7 string
external_version_id 8 string optional
model_id 9 string
model_variant_id 10 string optional
status 11 voplica.types.base.JobStatus
message 12 string optional
total_items 13 uint32
completed_items 14 uint32
failed_items 15 uint32
created_at 16 uint64
started_at 17 uint64 optional
finished_at 18 uint64 optional
items 19 ModelImportItem repeated
Field Number Type Label Description
id 1 string
import_id 2 string
kind 3 ModelImportItemKind
model_variant_id 4 string
asset_id 5 string
external_file_id 6 string
file_name 7 string
expected_size_bytes 8 int64
status 9 voplica.types.base.JobStatus
message 10 string optional
file_id 11 string optional
sort_order 12 uint32
updated_at 13 uint64
role 14 voplica.types.ai.common.ModelFileRole The role this item’s file was registered with (persisted on model_import_items.role), so the status banner can label it.
Field Number Type Label Description
method 1 ModelFilesVerificationMethod
detected_kind 2 ModelWeightsKind
detected_family 3 voplica.types.ai.common.ModelFamily Architecture-level detection; UNSPECIFIED when the bytes are ambiguous.
family_matches_declared 4 bool
primary_dtype 5 voplica.types.ai.common.DType
primary_quantization 6 voplica.types.ai.common.QuantizationType
primary_file_structure 7 voplica.types.ai.common.ModelFileStructure
lora_rank 8 uint32 optional
lora_alpha 9 float optional
declared_base_model 10 string optional From embedded training metadata when present (e.g. ai-toolkit ss_base_model_version)
training_software 11 string optional
files 12 VerifiedModelFileInfo repeated
warnings 13 string repeated
total_size_bytes 14 uint64 optional
smoke_test_duration_ms 15 uint64 optional
donor_components 16 string repeated Slots the family needs that this file set does NOT supply - they come from the base/donor variant (“text_encoder”, “vae”, …).
ignored_files 17 string repeated File ids the loader will not use; the reason is on that file’s VerifiedModelFileInfo.notes.
load_recipe 18 string One-line human summary of how the set loads, e.g. “transformer: file A (comfy_quant float8 -> bf16), vae: file B, text_encoder: base FLUX.2-klein-9B”.
component_set_complete 19 bool True when every component_slots entry of the family is satisfied by the set itself.
Field Number Type Label Description
file_id 1 string
model_gen_info 2 voplica.types.file.ModelGenInfo now carries role + component_name
file_size_bytes 3 uint64 optional
tensor_count 4 uint32 optional
kind 5 ModelWeightsKind What THIS file is, learned from its tensors (detected_kind stays the PRIMARY’s kind).
notes 6 string repeated Free text: “comfy_quant float8, 112 layers”, “convrot”, “ignored: no loader for this companion”, …
content_sha256 7 string optional

How a model variant’s weights want to be sampled - declared by a person, because nothing detects it. A step-distilled checkpoint (Turbo / Lightning / Hyper) converges in about 8 steps with guidance off; the same family’s undistilled weights need the family’s full step count with CFG on. A version name often says which (“v2.5 FP8 Turbo”), but plenty of undistilled finetunes carry the same words, so the studio may suggest a regime from the name and never applies one silently.

Name Number Description
SAMPLING_REGIME_UNSPECIFIED 0 Nobody has declared anything: the inference worker’s (family, inference mode) profile decides, exactly as it did before this field existed. The default for every variant ever created.
SAMPLING_REGIME_STEP_DISTILLED 1 The weights are step-distilled. Sample the family’s DISTILLED recipe (few steps, guidance off).
SAMPLING_REGIME_RAW 2 The weights are undistilled. Sample the family’s RAW recipe – which for a family whose profile assumes distillation (KREA_2: both regimes resolve to 8 steps / guidance 0.0) is the measured recipe declared on that family’s raw base registration, and is otherwise unreachable.
Name Number Description
REVENUE_SHARE_ELIGIBILITY_UNSPECIFIED 0
REVENUE_SHARE_ELIGIBLE 1
REVENUE_SHARE_FLAG_OFF 2
REVENUE_SHARE_NOT_PUBLIC 3
REVENUE_SHARE_NOT_PUBLISHED 4
REVENUE_SHARE_PLATFORM_OWNED 5
REVENUE_SHARE_BLOCKED 6
REVENUE_SHARE_CLONED 7
REVENUE_SHARE_NOT_VERIFIED_CREATOR 8
REVENUE_SHARE_NO_PROVENANCE 9 The owner is an approved creator, but this MODEL could not be tied to their linked profile: no import source under a linked namespace, no announced file hash in the snapshot, and no declared ref that the snapshot knows. Models only - a dataset has no provider profile.
REVENUE_SHARE_DUPLICATE_CONTENT 10
Name Number Description
EXTERNAL_FILE_FORMAT_UNSPECIFIED 0
EXTERNAL_FORMAT_SAFETENSORS 1
EXTERNAL_FORMAT_ZIP 2
EXTERNAL_FORMAT_GGUF 3
EXTERNAL_FORMAT_OTHER 4

Provider-side file roles (Civitai files[].type; HuggingFace paths are always EXTERNAL_FILE_MODEL).

Name Number Description
EXTERNAL_FILE_KIND_UNSPECIFIED 0
EXTERNAL_FILE_MODEL 1
EXTERNAL_FILE_DIFFUSION_MODEL 2
EXTERNAL_FILE_VAE 3
EXTERNAL_FILE_TEXT_ENCODER 4
EXTERNAL_FILE_TRAINING_DATA 5
EXTERNAL_FILE_OTHER 6
EXTERNAL_FILE_CONFIG 7 Provider type “Config” - workflow/config JSON or YAML. Never imported; the value exists so a refusal can name what the file was.
EXTERNAL_FILE_UPSCALER 8 Provider type “Upscaler” (e.g. the LTX spatial upscalers).
Name Number Description
EXTERNAL_PREVIEW_KIND_UNSPECIFIED 0
PREVIEW_IMAGE 1
PREVIEW_VIDEO 2
Name Number Description
EXTERNAL_TOKEN_STATUS_UNSPECIFIED 0
TOKEN_OK 1
TOKEN_MISSING 2 The caller has no stored token for the provider.
TOKEN_INVALID 3 The provider rejected the stored token (revoked / expired).
Name Number Description
MODEL_IMPORT_ITEM_KIND_UNSPECIFIED 0
IMPORT_ITEM_MODEL_FILE 1
IMPORT_ITEM_PREVIEW 2

What an import job creates.

Name Number Description
MODEL_IMPORT_KIND_UNSPECIFIED 0
IMPORT_MODEL 1 A new Model with one variant per selected external version.
IMPORT_MODEL_VARIANT 2 One new variant (one external version) into an existing Model.
IMPORT_VARIANT_FILES 3 Model files only, into an existing variant’s asset.
Name Number Description
MODEL_FILES_VERIFICATION_METHOD_UNSPECIFIED 0
STATIC_INSPECTION 1 header/structure analysis only
STATIC_AND_INFERENCE_SMOKE_TEST 2 static analysis plus a minimal GPU inference run

What the uploaded weight files ARE, as detected from the bytes.

Name Number Description
MODEL_WEIGHTS_KIND_UNSPECIFIED 0
FULL_MODEL_WEIGHTS 1 full pipeline weights (single-file or diffusers directory)
TRANSFORMER_ONLY_WEIGHTS 2 diffusion transformer/unet only - needs donor components
LORA_WEIGHTS 3
CONTROLNET_WEIGHTS 4
VAE_WEIGHTS 5
UNKNOWN_WEIGHTS 6
TEXT_ENCODER_WEIGHTS 7 a standalone CLIP / T5 / Qwen3 / Llama text encoder