From 6a692b9d2cd7e47d1aecb25e0426b6cf62e885f0 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Sun, 21 Dec 2025 16:56:00 -0500 Subject: [PATCH] veo3.1 fast --- .../src/generate/video/multi_function/mod.rs | 1 + .../veo_3p1_fast_multi_function_video_gen.rs | 91 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 crates/api_clients/artcraft/artcraft_api_defs/src/generate/video/multi_function/veo_3p1_fast_multi_function_video_gen.rs 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 35c5a22135..f8a3af67f2 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,3 +1,4 @@ pub mod kling_2_5_turbo_multi_function_video_gen; pub mod kling_2_6_multi_function_video_gen; +pub mod veo_3p1_fast_multi_function_video_gen; pub mod veo_3p1_multi_function_video_gen; \ No newline at end of file diff --git a/crates/api_clients/artcraft/artcraft_api_defs/src/generate/video/multi_function/veo_3p1_fast_multi_function_video_gen.rs b/crates/api_clients/artcraft/artcraft_api_defs/src/generate/video/multi_function/veo_3p1_fast_multi_function_video_gen.rs new file mode 100644 index 0000000000..ca345d06f6 --- /dev/null +++ b/crates/api_clients/artcraft/artcraft_api_defs/src/generate/video/multi_function/veo_3p1_fast_multi_function_video_gen.rs @@ -0,0 +1,91 @@ +use serde::{Deserialize, Serialize}; +use tokens::tokens::generic_inference_jobs::InferenceJobToken; +use tokens::tokens::media_files::MediaFileToken; +use utoipa::ToSchema; + +pub const VEO_3P1_MULTI_FUNCTION_VIDEO_VIDEO_PATH: &str = "/v1/generate/video/multi_function/veo_3p1_fast"; + +/// Both text-to-video and image-to-video in one request. +#[derive(Serialize, Deserialize, ToSchema)] +pub struct Veo3p1FastMultiFunctionVideoGenRequest { + /// 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 + /// (this is uniform against all modes) + pub duration: Option, + + /// Optional. + pub aspect_ratio: Option, + + /// Optional. + pub resolution: Option, + + /// Optional + /// Whether to generate audio. + pub generate_audio: Option, + + /// Optional + /// Only for text-to-video + pub enhance_prompt: Option, + + /// Optional + /// Only for text-to-video + pub seed: Option, + + /// Optional + /// Only for text-to-video + pub auto_fix: Option, +} + +#[derive(Serialize, Deserialize, ToSchema)] +#[serde(rename_all = "snake_case")] +pub enum Veo3p1FastMultiFunctionVideoGenDuration { + FourSeconds, + SixSeconds, + EightSeconds, +} + +#[derive(Serialize, Deserialize, ToSchema)] +#[serde(rename_all = "snake_case")] +pub enum Veo3p1FastMultiFunctionVideoGenAspectRatio { + Auto, + Square, + SixteenByNine, + NineBySixteen, +} + +#[derive(Serialize, Deserialize, ToSchema)] +#[serde(rename_all = "snake_case")] +pub enum Veo3p1FastMultiFunctionVideoGenResolution { + SevenTwentyP, + TenEightyP, +} + +#[derive(Serialize, Deserialize, ToSchema)] +pub struct Veo3p1FastMultiFunctionVideoGenResponse { + pub success: bool, + pub inference_job_token: InferenceJobToken, +}