From 476a26181f1c53e0b239b05bdbd06337bfa1f88e Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Sat, 20 Dec 2025 21:52:10 -0500 Subject: [PATCH] kling 2.6 --- .../kling_2_6_multi_function_video_gen.rs | 68 +++++++++++++++++++ .../src/generate/video/multi_function/mod.rs | 3 +- 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 crates/api_clients/artcraft/artcraft_api_defs/src/generate/video/multi_function/kling_2_6_multi_function_video_gen.rs diff --git a/crates/api_clients/artcraft/artcraft_api_defs/src/generate/video/multi_function/kling_2_6_multi_function_video_gen.rs b/crates/api_clients/artcraft/artcraft_api_defs/src/generate/video/multi_function/kling_2_6_multi_function_video_gen.rs new file mode 100644 index 0000000000..49583671e5 --- /dev/null +++ b/crates/api_clients/artcraft/artcraft_api_defs/src/generate/video/multi_function/kling_2_6_multi_function_video_gen.rs @@ -0,0 +1,68 @@ +use serde::{Deserialize, Serialize}; +use tokens::tokens::generic_inference_jobs::InferenceJobToken; +use tokens::tokens::media_files::MediaFileToken; +use utoipa::ToSchema; + +pub const KLING_2P6_PRO_MULTI_FUNCTION_VIDEO_VIDEO_PATH: &str = "/v1/generate/video/multi_function/kling_2p6_pro"; + +/// Both text-to-video and image-to-video in one request. +#[derive(Serialize, Deserialize, ToSchema)] +pub struct Kling2p6ProMultiFunctionVideoGenRequest { + /// Idempotency token to prevent duplicate requests. + pub uuid_idempotency_token: String, + + /// "Required". + /// Required downstream, but we'll coerce null to empty string. + /// Text prompt. + pub prompt: Option, + + /// Optional. + /// Only for text-to-video. + pub negative_prompt: Option, + + /// Optional. + /// Only for image-to-video + /// Source of the starting frame + /// If present, we're doing image-to-video + /// If absent, we're doing text-to-video + pub start_frame_image_media_token: Option, + + /// Optional. + /// Only for image-to-video + /// Source of the ending frame (if desired) + pub end_frame_image_media_token: Option, + + /// Optional + /// Duration of the video + pub duration: Option, + + /// Optional + /// Whether to generate audio. + pub generate_audio: Option, + + /// Optional. + /// Only for text-to-video + pub aspect_ratio: Option, +} + +#[derive(Serialize, Deserialize, ToSchema)] +#[serde(rename_all = "snake_case")] +pub enum Kling2p6ProMultiFunctionVideoGenDuration { + FiveSeconds, + TenSeconds, +} + +#[derive(Serialize, Deserialize, ToSchema)] +#[serde(rename_all = "snake_case")] +pub enum Kling2p6ProMultiFunctionVideoGenAspectRatio { + Square, + SixteenByNine, + NineBySixteen, +} + + +#[derive(Serialize, Deserialize, ToSchema)] +pub struct Kling2p6ProMultiFunctionVideoGenResponse { + pub success: bool, + pub inference_job_token: InferenceJobToken, +} diff --git a/crates/api_clients/artcraft/artcraft_api_defs/src/generate/video/multi_function/mod.rs b/crates/api_clients/artcraft/artcraft_api_defs/src/generate/video/multi_function/mod.rs index 67f655a424..847a95fca1 100644 --- a/crates/api_clients/artcraft/artcraft_api_defs/src/generate/video/multi_function/mod.rs +++ b/crates/api_clients/artcraft/artcraft_api_defs/src/generate/video/multi_function/mod.rs @@ -1 +1,2 @@ -pub mod kling_2_5_turbo_multi_function_video_gen; \ No newline at end of file +pub mod kling_2_5_turbo_multi_function_video_gen; +pub mod kling_2_6_multi_function_video_gen; \ No newline at end of file