diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance2p0.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance2p0.rs index 817bb2e297..b9a7b0476e 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance2p0.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance2p0.rs @@ -32,6 +32,7 @@ pub (crate) fn estimate_video_cost_artcraft_seedance2p0( end_frame_url: None, reference_image_urls: None, reference_video_urls: None, + use_face_blur_hack: None, }; let cost_in_usd_cents = args.estimate_cost_in_usd_cents(); diff --git a/crates/api_clients/seedance2pro/src/requests/generate_video/generate_video.rs b/crates/api_clients/seedance2pro/src/requests/generate_video/generate_video.rs index dc81c23736..20c28a643b 100644 --- a/crates/api_clients/seedance2pro/src/requests/generate_video/generate_video.rs +++ b/crates/api_clients/seedance2pro/src/requests/generate_video/generate_video.rs @@ -40,6 +40,9 @@ pub struct GenerateVideoArgs<'a> { /// Videos are referenced in prompts as @video1, @video2, etc. /// When present, takes priority over start/end frames. pub reference_video_urls: Option>, + + /// Controls the `faceBlurMode` field: true sends "on", false sends "off", None omits it. + pub use_face_blur_hack: Option, } impl GenerateVideoArgs<'_> { @@ -159,7 +162,11 @@ pub async fn generate_video(args: GenerateVideoArgs<'_>) -> Result Some("on"), + Some(false) => Some("off"), + None => None, + }; let batch_count_value = args.batch_count.as_u8(); let batch_count = if batch_count_value > 1 { Some(batch_count_value) } else { None }; @@ -283,6 +290,7 @@ mod tests { end_frame_url: None, reference_image_urls: None, reference_video_urls: None, + use_face_blur_hack: None, } } @@ -346,6 +354,7 @@ mod tests { end_frame_url: None, reference_image_urls: None, reference_video_urls: None, + use_face_blur_hack: None, }; let result = generate_video(args).await?; println!("Task ID: {}", result.task_id); @@ -371,6 +380,7 @@ mod tests { end_frame_url: None, reference_image_urls: None, reference_video_urls: None, + use_face_blur_hack: None, }; let result = generate_video(args).await?; println!("Task ID: {}", result.task_id); @@ -398,6 +408,7 @@ mod tests { "https://static.seedance2-pro.com/materials/20260219/1771496300184-fb32e08c.jpg".to_string(), ]), reference_video_urls: None, + use_face_blur_hack: None, }; let result = generate_video(args).await?; println!("Task ID: {}", result.task_id); @@ -424,6 +435,7 @@ mod tests { reference_video_urls: Some(vec![ "https://static.seedance2-pro.com/materials/20260315/1773594284659-3a46d231.mp4".to_string(), ]), + use_face_blur_hack: None, }; let result = generate_video(args).await?; println!("Task ID: {}", result.task_id); @@ -452,6 +464,7 @@ mod tests { reference_video_urls: Some(vec![ "https://static.seedance2-pro.com/materials/20260315/1773594284659-3a46d231.mp4".to_string(), ]), + use_face_blur_hack: None, }; let result = generate_video(args).await?; println!("Task ID: {}", result.task_id); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/seedance_2p0_multi_function_video_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/seedance_2p0_multi_function_video_gen_handler.rs index 945a53ef78..fefa64b091 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/seedance_2p0_multi_function_video_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/seedance_2p0_multi_function_video_gen_handler.rs @@ -195,6 +195,7 @@ pub async fn seedance_2p0_multi_function_video_gen_handler( end_frame_url, reference_image_urls, reference_video_urls: None, // TODO: Wire up video references from request + use_face_blur_hack: None, }; // --- Calculate cost and charge wallet ---