From 9e04990224bc6a432085a7ff794bc09cdd1978fc Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Fri, 10 Apr 2026 10:25:31 -0400 Subject: [PATCH] character tokens in omni api (#1333) --- .../omni_gen_video_cost_and_generate_request.rs | 5 +++++ .../omni_gen/models/omni_gen_video_models.rs | 17 ++++++++++++++--- .../src/configs/omni_gen/video_models.rs | 2 ++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/crates/api_clients/artcraft/artcraft_api_defs/src/omni_gen/cost_and_generate_requests/omni_gen_video_cost_and_generate_request.rs b/crates/api_clients/artcraft/artcraft_api_defs/src/omni_gen/cost_and_generate_requests/omni_gen_video_cost_and_generate_request.rs index dd836936c0..45e0d75b1d 100644 --- a/crates/api_clients/artcraft/artcraft_api_defs/src/omni_gen/cost_and_generate_requests/omni_gen_video_cost_and_generate_request.rs +++ b/crates/api_clients/artcraft/artcraft_api_defs/src/omni_gen/cost_and_generate_requests/omni_gen_video_cost_and_generate_request.rs @@ -5,6 +5,7 @@ use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use enums::common::generation::common_quality::CommonQuality; use enums::common::generation::common_resolution::CommonResolution; use enums::common::generation::common_video_model::CommonVideoModel; +use tokens::tokens::characters::CharacterToken; use tokens::tokens::media_files::MediaFileToken; /// Shared request body for both the video cost estimate and video generation endpoints. @@ -39,6 +40,10 @@ pub struct OmniGenVideoCostAndGenerateRequest { /// Reference audio (optional). pub reference_audio_media_tokens: Option>, + /// Optional character tokens to reference in the prompt. + /// Characters are referenced in prompts as @CharacterName. + pub reference_character_tokens: Option>, + /// The resolution to use. pub resolution: Option, diff --git a/crates/api_clients/artcraft/artcraft_api_defs/src/omni_gen/models/omni_gen_video_models.rs b/crates/api_clients/artcraft/artcraft_api_defs/src/omni_gen/models/omni_gen_video_models.rs index a8ec30dd6f..d9248a803f 100644 --- a/crates/api_clients/artcraft/artcraft_api_defs/src/omni_gen/models/omni_gen_video_models.rs +++ b/crates/api_clients/artcraft/artcraft_api_defs/src/omni_gen/models/omni_gen_video_models.rs @@ -1,10 +1,13 @@ -use serde_derive::{Deserialize, Serialize}; -use utoipa::{IntoParams, ToSchema}; use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use enums::common::generation::common_quality::CommonQuality; use enums::common::generation::common_resolution::CommonResolution; use enums::common::generation::common_video_model::CommonVideoModel; use enums::common::generation_provider::GenerationProvider; +use serde_derive::{Deserialize, Serialize}; +use utoipa::{IntoParams, ToSchema}; + +/// Video model to default to if none is specified +const DEFAULT_VIDEO_MODEL : CommonVideoModel = CommonVideoModel::Seedance2p0; /// Query string parameters for the video models endpoint. #[derive(Deserialize, IntoParams, ToSchema)] @@ -110,6 +113,12 @@ pub struct OmniGenVideoModelDetails { #[serde(skip_serializing_if = "Option::is_none")] pub audio_references_max_total_duration_seconds: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub character_references_supported: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub character_references_max: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub show_generate_with_sound_toggle: Option, @@ -159,7 +168,7 @@ pub struct OmniGenVideoModelDetails { impl Default for OmniGenVideoModelDetails { fn default() -> Self { Self { - model: CommonVideoModel::Seedance2p0, + model: DEFAULT_VIDEO_MODEL, full_name: None, text_prompt_supported: None, text_prompt_max_length: None, @@ -176,6 +185,8 @@ impl Default for OmniGenVideoModelDetails { audio_references_supported: None, audio_references_max: None, audio_references_max_total_duration_seconds: None, + character_references_supported: None, + character_references_max: None, show_generate_with_sound_toggle: None, aspect_ratio_options: None, aspect_ratio_default: None, diff --git a/crates/service/web/storyteller_web/src/configs/omni_gen/video_models.rs b/crates/service/web/storyteller_web/src/configs/omni_gen/video_models.rs index 1d6253049e..54b0b85383 100644 --- a/crates/service/web/storyteller_web/src/configs/omni_gen/video_models.rs +++ b/crates/service/web/storyteller_web/src/configs/omni_gen/video_models.rs @@ -61,6 +61,8 @@ fn build_omni_gen_video_models() -> Vec { video_references_supported: Some(true), video_references_max: Some(3), video_references_max_total_duration_seconds: Some(15), + character_references_supported: Some(true), + character_references_max: Some(9), aspect_ratio_options: Some(vec![ CommonAspectRatio::WideSixteenByNine, CommonAspectRatio::WideFourByThree,