The protobuf package voplica.types.character: 0 services, 12 messages and 5 enums, defined in voplica/types/character/character.proto, voplica/types/character/character_look.proto, voplica/types/character/character_look_draft.proto.
| Field |
Number |
Type |
Label |
Description |
| id |
1 |
string |
|
|
| name |
2 |
string |
|
|
| owner_id |
3 |
string |
|
|
| visibility |
4 |
voplica.types.base.VisibilityType |
|
|
| gender |
5 |
voplica.types.base.GenderType |
|
|
| created_at |
6 |
uint64 |
|
|
| status |
7 |
voplica.types.base.PublishStatus |
|
Status |
| default_preview |
8 |
voplica.types.file.AssetFileVariantGroups |
optional |
Note: file_variant_groups are returned only if requested explicitly |
| nsfw |
9 |
bool |
|
Means this character is intended to produce NSFW content. This flag must be true if any of these is true: - any of the used model variants are related to NSFW model. - any of the character preview assets are NSFW. - character descriptions / personality is aiming towards NSFW. |
| default_look |
10 |
CharacterLookShortPreview |
optional |
The recommended look. If not set explicitly then the most recent look is used. Unset when the character has no looks. Note: the nested default_look.default_preview file_variant_groups are returned only if requested explicitly, resolved by the SAME CharacterFieldsFetchingOptions.default_preview_retriever that serves default_preview above – exactly how GenModel resolves default_model_variant.default_preview through ModelFieldsFetchingOptions.default_preview_retriever. |
| likes_count |
20 |
uint64 |
|
Engagement metrics (read-only, updated by the platform). Renamed from views_count/checks_count – see the checks->views/views->engagement terminology rename. |
| engagement_count |
21 |
uint64 |
|
|
| views_count |
22 |
uint64 |
|
|
| usage_count |
23 |
uint64 |
|
|
| Field |
Number |
Type |
Label |
Description |
| models |
1 |
CharacterModelSet |
|
Model assignments |
| personality |
2 |
CharacterPersonality |
|
LLM personality/description for chat/roleplay |
| description |
3 |
string |
|
|
| default_preview_manual_selected |
4 |
bool |
|
Manually set default preview asset. If false - it means that the default preview is using latest asset selection strategy. |
| look_prompt |
5 |
string |
|
Helper prompt for diffusion models that better describe look of the character |
| tags |
6 |
string |
repeated |
User-editable tags (can be set at publish time or updated later) |
| default_look_manual_selected |
7 |
bool |
|
Manually set default look. If false - it means that the default look is using latest look selection strategy. |
Optional persona sheet for a character. Everything here is authored by the owner and
consumed by LLM surfaces (the Movie director’s script planning first): it shapes how the
character behaves, sounds and reacts in generated scenes. All fields optional; an empty
message is equivalent to no personality.
| Field |
Number |
Type |
Label |
Description |
| traits |
2 |
string |
repeated |
Trait keywords/short phrases, e.g. [“funny”, “sometimes silly”, “likes pranks”]. |
| backstory |
3 |
string |
optional |
Background/lore: who they are, where they come from, what shaped them. |
| example_dialogues |
5 |
string |
repeated |
Example lines, verbatim, in the character’s own voice — one line each. |
| speaking_style |
6 |
string |
optional |
How they talk: tone, vocabulary, pace, catchphrases (prose). |
| motivations |
7 |
string |
optional |
What drives them: likes, dislikes, goals, fears (prose). |
| Field |
Number |
Type |
Label |
Description |
| audio_asset |
1 |
voplica.types.file.FileReference |
optional |
|
| audio_dataset_id |
2 |
string |
optional |
Optional AUDIO dataset (a collection of reference clips of the same voice) for richer provenance / future higher-quality selection or training. Referenced by dataset id, matching the dataset_id convention used elsewhere (e.g. AttachDatasetToCharacterRequest.dataset_id). When both are set, audio_asset is the chosen representative clip from this dataset. |
| reference_transcript |
3 |
string |
optional |
|
| language |
4 |
string |
optional |
|
| voice_id |
5 |
string |
optional |
|
A named, persisted appearance of a character: an optional look prompt, an MPA rating and a set of
typed image assets. Looks generalize the ephemeral per-run look-sheet machinery into an entity.
| Field |
Number |
Type |
Label |
Description |
| id |
1 |
string |
|
|
| character_id |
2 |
string |
|
|
| name |
3 |
string |
|
|
| look_prompt |
4 |
string |
optional |
overrides CharacterMetadata.look_prompt |
| mpa_rating |
5 |
voplica.types.base.MPARating |
|
same type Datasets/Content use |
| created_at |
6 |
uint64 |
|
|
| sheet_type |
7 |
CharacterSheetType |
|
Layout of this look’s composed sheet. ABSENT / UNSPECIFIED (0) MEANS DEFAULT - see CharacterSheetType: pre-existing looks are stored with a NULL column and are DEFAULT sheets. |
| anchor |
8 |
voplica.types.file.FileReference |
optional |
|
| default_preview |
10 |
voplica.types.file.AssetFileVariantGroups |
optional |
Resolved only when requested (previews retriever): |
mirrors ModelVariantShortPreview
A resumable character-wizard session. Bound to one character, or to none yet.
| Field |
Number |
Type |
Label |
Description |
| id |
1 |
string |
|
|
| owner_id |
2 |
string |
|
|
| character_id |
3 |
string |
|
The character this draft builds a look for - EMPTY means the draft is CHARACTER-LESS: a new-character wizard run whose character does not exist yet. Deliberately a plain proto3 string rather than optional: absent and empty are the same state here (the server either knows a character or does not), so ONE spelling of “no character” is what this whole surface uses - on this field, on CreateCharacterLookDraftRequest, and on ListCharacterLookDraftsRequest. Character-less is a STARTING state, never a resting one: a draft is bound exactly once, by BindCharacterLookDraftToCharacter, and a bound draft can never be re-bound or un-bound. A draft must be bound before it may reach CHARACTER_LOOK_DRAFT_STATE_COMPLETED, because the CharacterLook that state records the creation of has nowhere to live otherwise. |
| source_look_id |
4 |
string |
optional |
Set when the draft was started FROM an existing look (“new look for an existing character”): the anchor is that look’s sheet and untouched views may be carried over. |
| anchor |
5 |
voplica.types.file.FileReference |
optional |
The identity source every later stage conditions on. Absent until stage 1 completes. |
| anchor_kind |
6 |
CharacterLookDraftAnchorKind |
|
|
| approved_views |
7 |
CharacterLookDraftApprovedView |
repeated |
Approved views so far, at most one per asset type. Order is not significant. |
| stage_history |
8 |
CharacterLookDraftStageHistory |
repeated |
Per-stage iteration history, at most one entry per stage. |
| sheet_type |
9 |
CharacterSheetType |
|
The sheet layout this draft will compose. Absent / UNSPECIFIED (0) reads as CHARACTER_SHEET_TYPE_DEFAULT, exactly as on CharacterLook - see CharacterSheetType. |
| state |
10 |
CharacterLookDraftState |
|
|
| created_at |
11 |
uint64 |
|
epoch millis |
| updated_at |
12 |
uint64 |
|
epoch millis |
| view_runs |
13 |
CharacterLookDraftViewRun |
repeated |
|
| name |
14 |
string |
optional |
The working name of the look this draft is building, persisted so it survives a resume. Absent means the draft has no name yet (an empty string is stored as absent). A cloned draft is named from the look it came from (“<look name> (copy)”); patch it through UpdateCharacterLookDraft.name. |
| anchor_model_id |
15 |
string |
optional |
any T2I family, the anchor step |
| edit_model_id |
16 |
string |
optional |
I2I_EDIT families only, every later step |
| anchor_preview |
20 |
voplica.types.file.AssetFileVariantGroups |
optional |
Resolved only when the request carries a previews retriever (20+ = resolved-on-request band, mirroring CharacterLook.default_preview): the anchor’s file variant groups, so a draft list can render thumbnails without a second round trip per draft. |
| character_name |
21 |
string |
optional |
Resolved on request (the 20+ band): the name of the character this draft is bound to - set only when CharacterLookDraftFieldsFetchingOptions.include_character_name is true and the draft is bound to a character (character_id set); absent for a character-less draft and absent unless requested. The caller’s own character, so no visibility question. |
One APPROVED view: the file the user accepted for a given look-asset slot. Keyed by
CharacterLookAssetType (not by stage) because these files become look assets of exactly that
type when the draft is saved - which is what lets the save path attach them without a mapping step.
| Field |
Number |
Type |
Label |
Description |
| stage |
1 |
CharacterLookDraftStage |
|
|
| asset_type |
2 |
CharacterLookAssetType |
|
|
| status |
3 |
voplica.types.base.JobStatus |
|
|
| workflow_execution_id |
4 |
string |
|
The engine execution that produced (or is producing) this slot, owner-scoped readable. |
| file |
5 |
voplica.types.file.FileReference |
optional |
Present only once status is COMPLETED: the generated image, registered under the DRAFT OWNER’s file scope (owner_id + origin_id — the file-registration model). |
| used_seed |
6 |
string |
optional |
|
| error_message |
7 |
string |
optional |
Present only when status is FAILED. |
| updated_at |
8 |
uint64 |
|
epoch millis (platform convention) |
| compose_press_id |
9 |
string |
optional |
|
| Name |
Number |
Description |
| CHARACTER_LOOK_ASSET_TYPE_UNSPECIFIED |
0 |
|
| FACE_CLOSEUP |
1 |
|
| BODY_FRONT |
2 |
|
| BODY_LEFT |
3 |
|
| BODY_RIGHT |
4 |
|
| BODY_BACK |
5 |
|
| HALF_BODY |
6 |
|
| SHEET_BEST_FACE_ID |
20 |
|
| SHEET_DEFAULT |
21 |
all standardized views incl. BOTH sides (CHARACTER_SHEET_TYPE_DEFAULT) |
| SHEET_CUSTOM_REFERENCE |
22 |
N-image user-upload grid (CHARACTER_SHEET_TYPE_CUSTOM_REFERENCE) |
| Name |
Number |
Description |
| CHARACTER_SHEET_TYPE_UNSPECIFIED |
0 |
|
| CHARACTER_SHEET_TYPE_DEFAULT |
1 |
All standardized views, including BOTH side views (the original 5-panel layout). |
| CHARACTER_SHEET_TYPE_BEST_FACE_ID |
2 |
face + front + ONE side (the LEFT/BODY_LEFT view) + back = 4 panels. The layout the LTX Best-Face-ID video path consumes; the right side view is deliberately excluded. |
| CHARACTER_SHEET_TYPE_CUSTOM_REFERENCE |
3 |
An N-image combined sheet built from user-supplied pictures (flexible grid, NOT the standardized views). Produced by the wizard’s multi-upload anchor path. |
How the anchor picture - the identity source every later stage conditions on - was obtained.
| Name |
Number |
Description |
| CHARACTER_LOOK_DRAFT_ANCHOR_KIND_UNSPECIFIED |
0 |
|
| CHARACTER_LOOK_DRAFT_ANCHOR_KIND_GENERATED |
1 |
Generated from a text prompt with any image model (T2I). |
| CHARACTER_LOOK_DRAFT_ANCHOR_KIND_PICKED |
2 |
Chosen from the user’s existing content library. |
| CHARACTER_LOOK_DRAFT_ANCHOR_KIND_UPLOADED |
3 |
A single uploaded picture, used as the anchor directly. |
| CHARACTER_LOOK_DRAFT_ANCHOR_KIND_CUSTOM_SHEET |
4 |
SEVERAL uploaded pictures, analyzed and composed into one CUSTOM_REFERENCE sheet which is then the anchor. Implies the draft’s sheet_type is CHARACTER_SHEET_TYPE_CUSTOM_REFERENCE. |
The wizard’s stages, in flow order. Distinct from CharacterLookAssetType on purpose: ANCHOR is a
stage but never a look asset, and one stage (BODY_SIDE) can approve two assets (BODY_LEFT and
BODY_RIGHT). Used to key ITERATION HISTORY, which the anchor also has.
| Name |
Number |
Description |
| CHARACTER_LOOK_DRAFT_STAGE_UNSPECIFIED |
0 |
|
| CHARACTER_LOOK_DRAFT_STAGE_ANCHOR |
1 |
|
| CHARACTER_LOOK_DRAFT_STAGE_BODY_FRONT |
2 |
|
| CHARACTER_LOOK_DRAFT_STAGE_BODY_BACK |
3 |
|
| CHARACTER_LOOK_DRAFT_STAGE_BODY_SIDE |
4 |
|
| CHARACTER_LOOK_DRAFT_STAGE_FACE |
5 |
|
| CHARACTER_LOOK_DRAFT_STAGE_HALF_BODY |
6 |
|
| Name |
Number |
Description |
| CHARACTER_LOOK_DRAFT_STATE_UNSPECIFIED |
0 |
|
| CHARACTER_LOOK_DRAFT_STATE_IN_PROGRESS |
1 |
|
| CHARACTER_LOOK_DRAFT_STATE_COMPLETED |
2 |
|
| CHARACTER_LOOK_DRAFT_STATE_ABANDONED |
3 |
|