diff --git a/src/libs/MagicHour/Generated/MagicHour.IImageProjectsClient.AiImageEditorCreateImage.g.cs b/src/libs/MagicHour/Generated/MagicHour.IImageProjectsClient.AiImageEditorCreateImage.g.cs
index fedaf04..ffd8ea3 100644
--- a/src/libs/MagicHour/Generated/MagicHour.IImageProjectsClient.AiImageEditorCreateImage.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.IImageProjectsClient.AiImageEditorCreateImage.g.cs
@@ -134,6 +134,10 @@ public partial interface IImageProjectsClient
/// - Supported resolutions: 640px, 1k, 2k
/// - Available for tiers: free, creator, pro, business
/// - Max additional input images: 2
+ /// - `qwen-image-2.1` - from 10 credits/image
+ /// - Supported resolutions: 640px, 1k, 2k
+ /// - Available for tiers: free, creator, pro, business
+ /// - Max additional input images: 2
/// - `seedream-v4` - from 40 credits/image
/// - Supported resolutions: 640px, 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
@@ -170,6 +174,7 @@ public partial interface IImageProjectsClient
/// - `nano-banana-2-lite` - 640px, 1k
/// - `nano-banana-pro` - 1k, 2k, 4k
/// - `qwen-edit` - 640px, 1k, 2k
+ /// - `qwen-image-2.1` - 640px, 1k, 2k
/// - `seedream-v4` - 640px, 1k, 2k, 4k
/// - `seedream-v4.5` - 640px, 1k, 2k, 4k
/// - `seedream-v5-pro` - 640px, 1k, 2k
diff --git a/src/libs/MagicHour/Generated/MagicHour.IImageProjectsClient.AiImageGeneratorCreateImage.g.cs b/src/libs/MagicHour/Generated/MagicHour.IImageProjectsClient.AiImageGeneratorCreateImage.g.cs
index 295f3cc..57ecbdf 100644
--- a/src/libs/MagicHour/Generated/MagicHour.IImageProjectsClient.AiImageGeneratorCreateImage.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.IImageProjectsClient.AiImageGeneratorCreateImage.g.cs
@@ -123,6 +123,10 @@ public partial interface IImageProjectsClient
/// - Supported resolutions: 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
/// - Image count allowed: 1, 4, 9, 16
+ /// - `qwen-image-2.1` - from 10 credits/image
+ /// - Supported resolutions: 640px, 1k, 2k
+ /// - Available for tiers: free, creator, pro, business
+ /// - Image count allowed: 1, 2, 3, 4
/// - `seedream-v4` - from 40 credits/image
/// - Supported resolutions: 640px, 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
@@ -161,6 +165,7 @@ public partial interface IImageProjectsClient
/// - `nano-banana-2` - 640px, 1k, 2k, 4k
/// - `nano-banana-2-lite` - 640px, 1k
/// - `nano-banana-pro` - 1k, 2k, 4k
+ /// - `qwen-image-2.1` - 640px, 1k, 2k
/// - `seedream-v4` - 640px, 1k, 2k, 4k
/// - `seedream-v5-pro` - 640px, 1k, 2k
/// - `z-image-turbo` - 640px, 1k, 2k
diff --git a/src/libs/MagicHour/Generated/MagicHour.IMagicHourClient.g.cs b/src/libs/MagicHour/Generated/MagicHour.IMagicHourClient.g.cs
index 4d07fa4..4d69592 100644
--- a/src/libs/MagicHour/Generated/MagicHour.IMagicHourClient.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.IMagicHourClient.g.cs
@@ -4,7 +4,7 @@
namespace MagicHour
{
///
- /// Magic Hour provides an API (beta) that can be integrated into your own application to generate videos and images using AI.
+ /// Magic Hour provides a REST API (beta) for generating and editing video, images, and audio using AI.
/// Webhook documentation can be found [here](https://docs.magichour.ai/webhook-reference).
/// If you have any questions, please reach out to us via [discord](https://discord.gg/JX5rgsZaJp).
/// # Authentication
@@ -14,7 +14,7 @@ namespace MagicHour
/// | Key | Value |
/// |-|-|
/// | Authorization | Bearer mhk_live_apikey |
- /// > **Warning**: any API call that renders a video will utilize credits in your account.
+ /// > **Warning**: API generation and editing requests consume account credits. Cost varies by tool, model, and settings; see [API pricing](https://magichour.ai/api#api-cost-calculator).
/// If no httpClient is provided, a new one will be created.
/// If no baseUri is provided, the default baseUri from OpenAPI spec will be used.
///
diff --git a/src/libs/MagicHour/Generated/MagicHour.IVideoProjectsClient.AiTalkingPhotoCreateTalkingPhoto.g.cs b/src/libs/MagicHour/Generated/MagicHour.IVideoProjectsClient.AiTalkingPhotoCreateTalkingPhoto.g.cs
index b093a80..a2fa845 100644
--- a/src/libs/MagicHour/Generated/MagicHour.IVideoProjectsClient.AiTalkingPhotoCreateTalkingPhoto.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.IVideoProjectsClient.AiTalkingPhotoCreateTalkingPhoto.g.cs
@@ -6,7 +6,7 @@ public partial interface IVideoProjectsClient
{
///
/// AI Talking Photo
- /// Create a talking photo from an image and audio or text input.
+ /// Create a talking photo video from an image and an audio file.
///
///
/// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering.
@@ -42,7 +42,7 @@ public partial interface IVideoProjectsClient
global::System.Threading.CancellationToken cancellationToken = default);
///
/// AI Talking Photo
- /// Create a talking photo from an image and audio or text input.
+ /// Create a talking photo video from an image and an audio file.
///
///
/// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering.
@@ -78,12 +78,12 @@ public partial interface IVideoProjectsClient
global::System.Threading.CancellationToken cancellationToken = default);
///
/// AI Talking Photo
- /// Create a talking photo from an image and audio or text input.
+ /// Create a talking photo video from an image and an audio file.
///
///
- /// Give your image a custom name for easy identification.
+ /// Give your video a custom name for easy identification.
/// Default Value: Talking Photo - dateTime
- /// Example: My Talking Photo image
+ /// Example: My Talking Photo video
///
///
/// The start time of the input audio in seconds. Maximum clip length depends on style.generation_mode: realistic 300s, prompted 45s.
diff --git a/src/libs/MagicHour/Generated/MagicHour.ImageProjectsClient.AiImageEditorCreateImage.g.cs b/src/libs/MagicHour/Generated/MagicHour.ImageProjectsClient.AiImageEditorCreateImage.g.cs
index 880681b..97df7d2 100644
--- a/src/libs/MagicHour/Generated/MagicHour.ImageProjectsClient.AiImageEditorCreateImage.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.ImageProjectsClient.AiImageEditorCreateImage.g.cs
@@ -759,6 +759,10 @@ partial void ProcessAiImageEditorCreateImageResponseContent(
/// - Supported resolutions: 640px, 1k, 2k
/// - Available for tiers: free, creator, pro, business
/// - Max additional input images: 2
+ /// - `qwen-image-2.1` - from 10 credits/image
+ /// - Supported resolutions: 640px, 1k, 2k
+ /// - Available for tiers: free, creator, pro, business
+ /// - Max additional input images: 2
/// - `seedream-v4` - from 40 credits/image
/// - Supported resolutions: 640px, 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
@@ -795,6 +799,7 @@ partial void ProcessAiImageEditorCreateImageResponseContent(
/// - `nano-banana-2-lite` - 640px, 1k
/// - `nano-banana-pro` - 1k, 2k, 4k
/// - `qwen-edit` - 640px, 1k, 2k
+ /// - `qwen-image-2.1` - 640px, 1k, 2k
/// - `seedream-v4` - 640px, 1k, 2k, 4k
/// - `seedream-v4.5` - 640px, 1k, 2k, 4k
/// - `seedream-v5-pro` - 640px, 1k, 2k
diff --git a/src/libs/MagicHour/Generated/MagicHour.ImageProjectsClient.AiImageGeneratorCreateImage.g.cs b/src/libs/MagicHour/Generated/MagicHour.ImageProjectsClient.AiImageGeneratorCreateImage.g.cs
index b55d052..adca9fe 100644
--- a/src/libs/MagicHour/Generated/MagicHour.ImageProjectsClient.AiImageGeneratorCreateImage.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.ImageProjectsClient.AiImageGeneratorCreateImage.g.cs
@@ -748,6 +748,10 @@ partial void ProcessAiImageGeneratorCreateImageResponseContent(
/// - Supported resolutions: 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
/// - Image count allowed: 1, 4, 9, 16
+ /// - `qwen-image-2.1` - from 10 credits/image
+ /// - Supported resolutions: 640px, 1k, 2k
+ /// - Available for tiers: free, creator, pro, business
+ /// - Image count allowed: 1, 2, 3, 4
/// - `seedream-v4` - from 40 credits/image
/// - Supported resolutions: 640px, 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
@@ -786,6 +790,7 @@ partial void ProcessAiImageGeneratorCreateImageResponseContent(
/// - `nano-banana-2` - 640px, 1k, 2k, 4k
/// - `nano-banana-2-lite` - 640px, 1k
/// - `nano-banana-pro` - 1k, 2k, 4k
+ /// - `qwen-image-2.1` - 640px, 1k, 2k
/// - `seedream-v4` - 640px, 1k, 2k, 4k
/// - `seedream-v5-pro` - 640px, 1k, 2k
/// - `z-image-turbo` - 640px, 1k, 2k
diff --git a/src/libs/MagicHour/Generated/MagicHour.MagicHourClient.g.cs b/src/libs/MagicHour/Generated/MagicHour.MagicHourClient.g.cs
index 7d9f216..6a2f80d 100644
--- a/src/libs/MagicHour/Generated/MagicHour.MagicHourClient.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.MagicHourClient.g.cs
@@ -4,7 +4,7 @@
namespace MagicHour
{
///
- /// Magic Hour provides an API (beta) that can be integrated into your own application to generate videos and images using AI.
+ /// Magic Hour provides a REST API (beta) for generating and editing video, images, and audio using AI.
/// Webhook documentation can be found [here](https://docs.magichour.ai/webhook-reference).
/// If you have any questions, please reach out to us via [discord](https://discord.gg/JX5rgsZaJp).
/// # Authentication
@@ -14,7 +14,7 @@ namespace MagicHour
/// | Key | Value |
/// |-|-|
/// | Authorization | Bearer mhk_live_apikey |
- /// > **Warning**: any API call that renders a video will utilize credits in your account.
+ /// > **Warning**: API generation and editing requests consume account credits. Cost varies by tool, model, and settings; see [API pricing](https://magichour.ai/api#api-cost-calculator).
/// If no httpClient is provided, a new one will be created.
/// If no baseUri is provided, the default baseUri from OpenAPI spec will be used.
///
diff --git a/src/libs/MagicHour/Generated/MagicHour.Models.AiImageEditorCreateImageRequest.g.cs b/src/libs/MagicHour/Generated/MagicHour.Models.AiImageEditorCreateImageRequest.g.cs
index 73f04cb..71404ff 100644
--- a/src/libs/MagicHour/Generated/MagicHour.Models.AiImageEditorCreateImageRequest.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.Models.AiImageEditorCreateImageRequest.g.cs
@@ -66,6 +66,10 @@ public sealed partial class AiImageEditorCreateImageRequest
/// - Supported resolutions: 640px, 1k, 2k
/// - Available for tiers: free, creator, pro, business
/// - Max additional input images: 2
+ /// - `qwen-image-2.1` - from 10 credits/image
+ /// - Supported resolutions: 640px, 1k, 2k
+ /// - Available for tiers: free, creator, pro, business
+ /// - Max additional input images: 2
/// - `seedream-v4` - from 40 credits/image
/// - Supported resolutions: 640px, 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
@@ -112,6 +116,7 @@ public sealed partial class AiImageEditorCreateImageRequest
/// - `nano-banana-2-lite` - 640px, 1k
/// - `nano-banana-pro` - 1k, 2k, 4k
/// - `qwen-edit` - 640px, 1k, 2k
+ /// - `qwen-image-2.1` - 640px, 1k, 2k
/// - `seedream-v4` - 640px, 1k, 2k, 4k
/// - `seedream-v4.5` - 640px, 1k, 2k, 4k
/// - `seedream-v5-pro` - 640px, 1k, 2k
@@ -200,6 +205,10 @@ public sealed partial class AiImageEditorCreateImageRequest
/// - Supported resolutions: 640px, 1k, 2k
/// - Available for tiers: free, creator, pro, business
/// - Max additional input images: 2
+ /// - `qwen-image-2.1` - from 10 credits/image
+ /// - Supported resolutions: 640px, 1k, 2k
+ /// - Available for tiers: free, creator, pro, business
+ /// - Max additional input images: 2
/// - `seedream-v4` - from 40 credits/image
/// - Supported resolutions: 640px, 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
@@ -236,6 +245,7 @@ public sealed partial class AiImageEditorCreateImageRequest
/// - `nano-banana-2-lite` - 640px, 1k
/// - `nano-banana-pro` - 1k, 2k, 4k
/// - `qwen-edit` - 640px, 1k, 2k
+ /// - `qwen-image-2.1` - 640px, 1k, 2k
/// - `seedream-v4` - 640px, 1k, 2k, 4k
/// - `seedream-v4.5` - 640px, 1k, 2k, 4k
/// - `seedream-v5-pro` - 640px, 1k, 2k
diff --git a/src/libs/MagicHour/Generated/MagicHour.Models.AiImageEditorCreateImageRequestModel.g.cs b/src/libs/MagicHour/Generated/MagicHour.Models.AiImageEditorCreateImageRequestModel.g.cs
index 6831548..652f987 100644
--- a/src/libs/MagicHour/Generated/MagicHour.Models.AiImageEditorCreateImageRequestModel.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.Models.AiImageEditorCreateImageRequestModel.g.cs
@@ -43,6 +43,10 @@ namespace MagicHour
/// - Supported resolutions: 640px, 1k, 2k
/// - Available for tiers: free, creator, pro, business
/// - Max additional input images: 2
+ /// - `qwen-image-2.1` - from 10 credits/image
+ /// - Supported resolutions: 640px, 1k, 2k
+ /// - Available for tiers: free, creator, pro, business
+ /// - Max additional input images: 2
/// - `seedream-v4` - from 40 credits/image
/// - Supported resolutions: 640px, 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
@@ -102,6 +106,10 @@ public enum AiImageEditorCreateImageRequestModel
///
///
///
+ QwenImage21,
+ ///
+ ///
+ ///
SeedreamV4,
///
///
@@ -135,6 +143,7 @@ public static string ToValueString(this AiImageEditorCreateImageRequestModel val
AiImageEditorCreateImageRequestModel.NanoBanana2Lite => "nano-banana-2-lite",
AiImageEditorCreateImageRequestModel.NanoBananaPro => "nano-banana-pro",
AiImageEditorCreateImageRequestModel.QwenEdit => "qwen-edit",
+ AiImageEditorCreateImageRequestModel.QwenImage21 => "qwen-image-2.1",
AiImageEditorCreateImageRequestModel.SeedreamV4 => "seedream-v4",
AiImageEditorCreateImageRequestModel.SeedreamV45 => "seedream-v4.5",
AiImageEditorCreateImageRequestModel.SeedreamV5Pro => "seedream-v5-pro",
@@ -158,6 +167,7 @@ public static string ToValueString(this AiImageEditorCreateImageRequestModel val
"nano-banana-2-lite" => AiImageEditorCreateImageRequestModel.NanoBanana2Lite,
"nano-banana-pro" => AiImageEditorCreateImageRequestModel.NanoBananaPro,
"qwen-edit" => AiImageEditorCreateImageRequestModel.QwenEdit,
+ "qwen-image-2.1" => AiImageEditorCreateImageRequestModel.QwenImage21,
"seedream-v4" => AiImageEditorCreateImageRequestModel.SeedreamV4,
"seedream-v4.5" => AiImageEditorCreateImageRequestModel.SeedreamV45,
"seedream-v5-pro" => AiImageEditorCreateImageRequestModel.SeedreamV5Pro,
diff --git a/src/libs/MagicHour/Generated/MagicHour.Models.AiImageEditorCreateImageRequestResolution.g.cs b/src/libs/MagicHour/Generated/MagicHour.Models.AiImageEditorCreateImageRequestResolution.g.cs
index 031842c..23ae2ce 100644
--- a/src/libs/MagicHour/Generated/MagicHour.Models.AiImageEditorCreateImageRequestResolution.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.Models.AiImageEditorCreateImageRequestResolution.g.cs
@@ -21,6 +21,7 @@ namespace MagicHour
/// - `nano-banana-2-lite` - 640px, 1k
/// - `nano-banana-pro` - 1k, 2k, 4k
/// - `qwen-edit` - 640px, 1k, 2k
+ /// - `qwen-image-2.1` - 640px, 1k, 2k
/// - `seedream-v4` - 640px, 1k, 2k, 4k
/// - `seedream-v4.5` - 640px, 1k, 2k, 4k
/// - `seedream-v5-pro` - 640px, 1k, 2k
diff --git a/src/libs/MagicHour/Generated/MagicHour.Models.AiImageGeneratorCreateImageRequest.g.cs b/src/libs/MagicHour/Generated/MagicHour.Models.AiImageGeneratorCreateImageRequest.g.cs
index 3675caf..d78bfb6 100644
--- a/src/libs/MagicHour/Generated/MagicHour.Models.AiImageGeneratorCreateImageRequest.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.Models.AiImageGeneratorCreateImageRequest.g.cs
@@ -66,6 +66,10 @@ public sealed partial class AiImageGeneratorCreateImageRequest
/// - Supported resolutions: 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
/// - Image count allowed: 1, 4, 9, 16
+ /// - `qwen-image-2.1` - from 10 credits/image
+ /// - Supported resolutions: 640px, 1k, 2k
+ /// - Available for tiers: free, creator, pro, business
+ /// - Image count allowed: 1, 2, 3, 4
/// - `seedream-v4` - from 40 credits/image
/// - Supported resolutions: 640px, 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
@@ -114,6 +118,7 @@ public sealed partial class AiImageGeneratorCreateImageRequest
/// - `nano-banana-2` - 640px, 1k, 2k, 4k
/// - `nano-banana-2-lite` - 640px, 1k
/// - `nano-banana-pro` - 1k, 2k, 4k
+ /// - `qwen-image-2.1` - 640px, 1k, 2k
/// - `seedream-v4` - 640px, 1k, 2k, 4k
/// - `seedream-v5-pro` - 640px, 1k, 2k
/// - `z-image-turbo` - 640px, 1k, 2k
@@ -194,6 +199,10 @@ public sealed partial class AiImageGeneratorCreateImageRequest
/// - Supported resolutions: 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
/// - Image count allowed: 1, 4, 9, 16
+ /// - `qwen-image-2.1` - from 10 credits/image
+ /// - Supported resolutions: 640px, 1k, 2k
+ /// - Available for tiers: free, creator, pro, business
+ /// - Image count allowed: 1, 2, 3, 4
/// - `seedream-v4` - from 40 credits/image
/// - Supported resolutions: 640px, 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
@@ -232,6 +241,7 @@ public sealed partial class AiImageGeneratorCreateImageRequest
/// - `nano-banana-2` - 640px, 1k, 2k, 4k
/// - `nano-banana-2-lite` - 640px, 1k
/// - `nano-banana-pro` - 1k, 2k, 4k
+ /// - `qwen-image-2.1` - 640px, 1k, 2k
/// - `seedream-v4` - 640px, 1k, 2k, 4k
/// - `seedream-v5-pro` - 640px, 1k, 2k
/// - `z-image-turbo` - 640px, 1k, 2k
diff --git a/src/libs/MagicHour/Generated/MagicHour.Models.AiImageGeneratorCreateImageRequestModel.g.cs b/src/libs/MagicHour/Generated/MagicHour.Models.AiImageGeneratorCreateImageRequestModel.g.cs
index bea1292..a6e9172 100644
--- a/src/libs/MagicHour/Generated/MagicHour.Models.AiImageGeneratorCreateImageRequestModel.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.Models.AiImageGeneratorCreateImageRequestModel.g.cs
@@ -43,6 +43,10 @@ namespace MagicHour
/// - Supported resolutions: 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
/// - Image count allowed: 1, 4, 9, 16
+ /// - `qwen-image-2.1` - from 10 credits/image
+ /// - Supported resolutions: 640px, 1k, 2k
+ /// - Available for tiers: free, creator, pro, business
+ /// - Image count allowed: 1, 2, 3, 4
/// - `seedream-v4` - from 40 credits/image
/// - Supported resolutions: 640px, 1k, 2k, 4k
/// - Available for tiers: creator, pro, business
@@ -104,6 +108,10 @@ public enum AiImageGeneratorCreateImageRequestModel
///
///
///
+ QwenImage21,
+ ///
+ ///
+ ///
Seedream,
///
///
@@ -141,6 +149,7 @@ public static string ToValueString(this AiImageGeneratorCreateImageRequestModel
AiImageGeneratorCreateImageRequestModel.NanoBanana2 => "nano-banana-2",
AiImageGeneratorCreateImageRequestModel.NanoBanana2Lite => "nano-banana-2-lite",
AiImageGeneratorCreateImageRequestModel.NanoBananaPro => "nano-banana-pro",
+ AiImageGeneratorCreateImageRequestModel.QwenImage21 => "qwen-image-2.1",
AiImageGeneratorCreateImageRequestModel.Seedream => "seedream",
AiImageGeneratorCreateImageRequestModel.SeedreamV4 => "seedream-v4",
AiImageGeneratorCreateImageRequestModel.SeedreamV5Pro => "seedream-v5-pro",
@@ -165,6 +174,7 @@ public static string ToValueString(this AiImageGeneratorCreateImageRequestModel
"nano-banana-2" => AiImageGeneratorCreateImageRequestModel.NanoBanana2,
"nano-banana-2-lite" => AiImageGeneratorCreateImageRequestModel.NanoBanana2Lite,
"nano-banana-pro" => AiImageGeneratorCreateImageRequestModel.NanoBananaPro,
+ "qwen-image-2.1" => AiImageGeneratorCreateImageRequestModel.QwenImage21,
"seedream" => AiImageGeneratorCreateImageRequestModel.Seedream,
"seedream-v4" => AiImageGeneratorCreateImageRequestModel.SeedreamV4,
"seedream-v5-pro" => AiImageGeneratorCreateImageRequestModel.SeedreamV5Pro,
diff --git a/src/libs/MagicHour/Generated/MagicHour.Models.AiImageGeneratorCreateImageRequestResolution.g.cs b/src/libs/MagicHour/Generated/MagicHour.Models.AiImageGeneratorCreateImageRequestResolution.g.cs
index 6c0b49d..e06e94f 100644
--- a/src/libs/MagicHour/Generated/MagicHour.Models.AiImageGeneratorCreateImageRequestResolution.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.Models.AiImageGeneratorCreateImageRequestResolution.g.cs
@@ -21,6 +21,7 @@ namespace MagicHour
/// - `nano-banana-2` - 640px, 1k, 2k, 4k
/// - `nano-banana-2-lite` - 640px, 1k
/// - `nano-banana-pro` - 1k, 2k, 4k
+ /// - `qwen-image-2.1` - 640px, 1k, 2k
/// - `seedream-v4` - 640px, 1k, 2k, 4k
/// - `seedream-v5-pro` - 640px, 1k, 2k
/// - `z-image-turbo` - 640px, 1k, 2k
diff --git a/src/libs/MagicHour/Generated/MagicHour.Models.AiTalkingPhotoCreateTalkingPhotoRequest.g.cs b/src/libs/MagicHour/Generated/MagicHour.Models.AiTalkingPhotoCreateTalkingPhotoRequest.g.cs
index 21706a7..ff648b9 100644
--- a/src/libs/MagicHour/Generated/MagicHour.Models.AiTalkingPhotoCreateTalkingPhotoRequest.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.Models.AiTalkingPhotoCreateTalkingPhotoRequest.g.cs
@@ -9,11 +9,11 @@ namespace MagicHour
public sealed partial class AiTalkingPhotoCreateTalkingPhotoRequest
{
///
- /// Give your image a custom name for easy identification.
+ /// Give your video a custom name for easy identification.
/// Default Value: Talking Photo - dateTime
- /// Example: My Talking Photo image
+ /// Example: My Talking Photo video
///
- /// My Talking Photo image
+ /// My Talking Photo video
[global::System.Text.Json.Serialization.JsonPropertyName("name")]
public string? Name { get; set; }
@@ -77,9 +77,9 @@ public sealed partial class AiTalkingPhotoCreateTalkingPhotoRequest
/// Provide the assets for creating a talking photo
///
///
- /// Give your image a custom name for easy identification.
+ /// Give your video a custom name for easy identification.
/// Default Value: Talking Photo - dateTime
- /// Example: My Talking Photo image
+ /// Example: My Talking Photo video
///
///
/// Attributes used to dictate the style of the output
diff --git a/src/libs/MagicHour/Generated/MagicHour.Models.LipSyncCreateVideoRequestStyle.g.cs b/src/libs/MagicHour/Generated/MagicHour.Models.LipSyncCreateVideoRequestStyle.g.cs
index ee19767..efbf00b 100644
--- a/src/libs/MagicHour/Generated/MagicHour.Models.LipSyncCreateVideoRequestStyle.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.Models.LipSyncCreateVideoRequestStyle.g.cs
@@ -11,9 +11,10 @@ public sealed partial class LipSyncCreateVideoRequestStyle
///
/// A specific version of our lip sync system, optimized for different needs.
/// * `lite` - Fast lip sync - best for simple videos. Costs 1 credit per frame of video.
- /// * `standard` - Natural, accurate lip sync - best for most creators. Costs 1 credit per frame of video.
- /// * `pro` - Premium fidelity with enhanced detail - best for professionals. Costs 2 credits per frame of video.
- /// Note: `standard` and `pro` are only available for users on Creator, Pro, and Business tiers.
+ /// * `standard` - Natural, accurate lip sync - best for most creators. Requires visible mouth movement in the opening seconds of the input video. Costs 1 credit per frame of video.
+ /// * `pro` - Premium fidelity with enhanced detail - best for professionals. Requires visible mouth movement in the opening seconds of the input video. Costs 2 credits per frame of video.
+ /// If your source is a still image, including a still image saved as a static video, use [AI Talking Photo](https://docs.magichour.ai/api-reference/video-projects/ai-talking-photo) with the original image and your audio instead.
+ /// Note: `pro` is only available for users on Creator, Pro, and Business tiers.
///
/// Default Value: lite
/// Example: lite
@@ -35,9 +36,10 @@ public sealed partial class LipSyncCreateVideoRequestStyle
///
/// A specific version of our lip sync system, optimized for different needs.
/// * `lite` - Fast lip sync - best for simple videos. Costs 1 credit per frame of video.
- /// * `standard` - Natural, accurate lip sync - best for most creators. Costs 1 credit per frame of video.
- /// * `pro` - Premium fidelity with enhanced detail - best for professionals. Costs 2 credits per frame of video.
- /// Note: `standard` and `pro` are only available for users on Creator, Pro, and Business tiers.
+ /// * `standard` - Natural, accurate lip sync - best for most creators. Requires visible mouth movement in the opening seconds of the input video. Costs 1 credit per frame of video.
+ /// * `pro` - Premium fidelity with enhanced detail - best for professionals. Requires visible mouth movement in the opening seconds of the input video. Costs 2 credits per frame of video.
+ /// If your source is a still image, including a still image saved as a static video, use [AI Talking Photo](https://docs.magichour.ai/api-reference/video-projects/ai-talking-photo) with the original image and your audio instead.
+ /// Note: `pro` is only available for users on Creator, Pro, and Business tiers.
///
/// Default Value: lite
/// Example: lite
diff --git a/src/libs/MagicHour/Generated/MagicHour.Models.LipSyncCreateVideoRequestStyleGenerationMode.g.cs b/src/libs/MagicHour/Generated/MagicHour.Models.LipSyncCreateVideoRequestStyleGenerationMode.g.cs
index 1664c43..544e81a 100644
--- a/src/libs/MagicHour/Generated/MagicHour.Models.LipSyncCreateVideoRequestStyleGenerationMode.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.Models.LipSyncCreateVideoRequestStyleGenerationMode.g.cs
@@ -6,9 +6,10 @@ namespace MagicHour
///
/// A specific version of our lip sync system, optimized for different needs.
/// * `lite` - Fast lip sync - best for simple videos. Costs 1 credit per frame of video.
- /// * `standard` - Natural, accurate lip sync - best for most creators. Costs 1 credit per frame of video.
- /// * `pro` - Premium fidelity with enhanced detail - best for professionals. Costs 2 credits per frame of video.
- /// Note: `standard` and `pro` are only available for users on Creator, Pro, and Business tiers.
+ /// * `standard` - Natural, accurate lip sync - best for most creators. Requires visible mouth movement in the opening seconds of the input video. Costs 1 credit per frame of video.
+ /// * `pro` - Premium fidelity with enhanced detail - best for professionals. Requires visible mouth movement in the opening seconds of the input video. Costs 2 credits per frame of video.
+ /// If your source is a still image, including a still image saved as a static video, use [AI Talking Photo](https://docs.magichour.ai/api-reference/video-projects/ai-talking-photo) with the original image and your audio instead.
+ /// Note: `pro` is only available for users on Creator, Pro, and Business tiers.
///
/// Default Value: lite
/// Example: lite
@@ -20,11 +21,11 @@ public enum LipSyncCreateVideoRequestStyleGenerationMode
///
Lite,
///
- /// `standard` and `pro` are only available for users on Creator, Pro, and Business tiers.
+ /// //docs.magichour.ai/api-reference/video-projects/ai-talking-photo) with the original image and your audio instead.
///
Pro,
///
- /// `standard` and `pro` are only available for users on Creator, Pro, and Business tiers.
+ ///
///
Standard,
}
diff --git a/src/libs/MagicHour/Generated/MagicHour.VideoProjectsClient.AiTalkingPhotoCreateTalkingPhoto.g.cs b/src/libs/MagicHour/Generated/MagicHour.VideoProjectsClient.AiTalkingPhotoCreateTalkingPhoto.g.cs
index 5d251b1..ee68808 100644
--- a/src/libs/MagicHour/Generated/MagicHour.VideoProjectsClient.AiTalkingPhotoCreateTalkingPhoto.g.cs
+++ b/src/libs/MagicHour/Generated/MagicHour.VideoProjectsClient.AiTalkingPhotoCreateTalkingPhoto.g.cs
@@ -43,7 +43,7 @@ partial void ProcessAiTalkingPhotoCreateTalkingPhotoResponseContent(
///
/// AI Talking Photo
- /// Create a talking photo from an image and audio or text input.
+ /// Create a talking photo video from an image and an audio file.
///
///
/// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering.
@@ -89,7 +89,7 @@ partial void ProcessAiTalkingPhotoCreateTalkingPhotoResponseContent(
}
///
/// AI Talking Photo
- /// Create a talking photo from an image and audio or text input.
+ /// Create a talking photo video from an image and an audio file.
///
///
/// Per-request overrides such as headers, query parameters, timeout, retries, and response buffering.
@@ -703,12 +703,12 @@ partial void ProcessAiTalkingPhotoCreateTalkingPhotoResponseContent(
}
///
/// AI Talking Photo
- /// Create a talking photo from an image and audio or text input.
+ /// Create a talking photo video from an image and an audio file.
///
///
- /// Give your image a custom name for easy identification.
+ /// Give your video a custom name for easy identification.
/// Default Value: Talking Photo - dateTime
- /// Example: My Talking Photo image
+ /// Example: My Talking Photo video
///
///
/// The start time of the input audio in seconds. Maximum clip length depends on style.generation_mode: realistic 300s, prompted 45s.
diff --git a/src/libs/MagicHour/openapi.yaml b/src/libs/MagicHour/openapi.yaml
index 5a293ed..f560262 100644
--- a/src/libs/MagicHour/openapi.yaml
+++ b/src/libs/MagicHour/openapi.yaml
@@ -176,7 +176,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.account.list();"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.account.list();"
},
{
"lang": "go",
@@ -390,7 +390,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.savedItems.list();"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.savedItems.list();"
},
{
"lang": "go",
@@ -644,7 +644,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.files.uploadUrls.create({\n items: [\n { extension: \"mp4\", type: \"video\" },\n { extension: \"mp3\", type: \"audio\" },\n ],\n});"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.files.uploadUrls.create({\n items: [\n { extension: \"mp4\", type: \"video\" },\n { extension: \"mp3\", type: \"audio\" },\n ],\n});"
},
{
"lang": "go",
@@ -867,7 +867,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.faceDetection.get({ id: \"uuid-example\" });"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.faceDetection.get({ id: \"uuid-example\" });"
},
{
"lang": "go",
@@ -1084,7 +1084,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.faceDetection.generate(\n {\n assets: { targetFilePath: \"/path/to/1234.png\" },\n confidenceScore: 0.5,\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.faceDetection.generate(\n {\n assets: { targetFilePath: \"/path/to/1234.png\" },\n confidenceScore: 0.5,\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -1362,7 +1362,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.videoProjects.get({ id: \"cuid-example\" });"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.videoProjects.get({ id: \"cuid-example\" });"
},
{
"lang": "go",
@@ -1529,7 +1529,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.videoProjects.delete({ id: \"cuid-example\" });"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.videoProjects.delete({ id: \"cuid-example\" });"
},
{
"lang": "go",
@@ -1556,7 +1556,7 @@
},
"/v1/ai-talking-photo": {
"post": {
- "description": "Create a talking photo from an image and audio or text input.",
+ "description": "Create a talking photo video from an image and an audio file.",
"summary": "AI Talking Photo",
"tags": ["Video Projects"],
"parameters": [],
@@ -1571,8 +1571,8 @@
"properties": {
"name": {
"type": "string",
- "description": "Give your image a custom name for easy identification.",
- "example": "My Talking Photo image",
+ "description": "Give your video a custom name for easy identification.",
+ "example": "My Talking Photo video",
"default": "Talking Photo - dateTime"
},
"start_seconds": {
@@ -1796,7 +1796,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiTalkingPhoto.generate(\n {\n assets: {\n audioFilePath: \"/path/to/1234.mp3\",\n imageFilePath: \"/path/to/1234.png\",\n },\n endSeconds: 15.0,\n name: \"Talking Photo image\",\n startSeconds: 0.0,\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiTalkingPhoto.generate(\n {\n assets: {\n audioFilePath: \"/path/to/1234.mp3\",\n imageFilePath: \"/path/to/1234.png\",\n },\n endSeconds: 15.0,\n name: \"Talking Photo image\",\n startSeconds: 0.0,\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -2052,7 +2052,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiVideoEditor.generate(\n {\n assets: { videoFilePath: \"/path/to/1234.mp4\" },\n endSeconds: 5.0,\n name: \"My Video Editor video\",\n startSeconds: 0.0,\n style: { prompt: \"Change the car color to blue\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiVideoEditor.generate(\n {\n assets: { videoFilePath: \"/path/to/1234.mp4\" },\n endSeconds: 5.0,\n name: \"My Video Editor video\",\n startSeconds: 0.0,\n style: { prompt: \"Change the car color to blue\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -2350,7 +2350,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiVideoTranslator.generate({\n assets: { videoFilePath: \"/path/to/video.mp4\" },\n endSeconds: 15.0,\n targetLanguage: \"Spanish\",\n startSeconds: 0.0,\n});"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiVideoTranslator.generate({\n assets: { videoFilePath: \"/path/to/video.mp4\" },\n endSeconds: 15.0,\n targetLanguage: \"Spanish\",\n startSeconds: 0.0,\n});"
},
{
"lang": "go",
@@ -2752,7 +2752,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.animation.generate(\n {\n assets: {\n audioFilePath: \"/path/to/1234.mp3\",\n audioSource: \"file\",\n imageFilePath: \"/path/to/1234.png\",\n },\n endSeconds: 15.0,\n fps: 12.0,\n height: 960,\n name: \"Animation video\",\n style: {\n artStyle: \"Painterly Illustration\",\n cameraEffect: \"Simple Zoom In\",\n prompt: \"Cyberpunk city\",\n promptType: \"custom\",\n transitionSpeed: 5,\n },\n width: 512,\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.animation.generate(\n {\n assets: {\n audioFilePath: \"/path/to/1234.mp3\",\n audioSource: \"file\",\n imageFilePath: \"/path/to/1234.png\",\n },\n endSeconds: 15.0,\n fps: 12.0,\n height: 960,\n name: \"Animation video\",\n style: {\n artStyle: \"Painterly Illustration\",\n cameraEffect: \"Simple Zoom In\",\n prompt: \"Cyberpunk city\",\n promptType: \"custom\",\n transitionSpeed: 5,\n },\n width: 512,\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -3007,7 +3007,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.audioToVideo.generate(\n {\n assets: {\n audioFilePath: \"/path/to/1234.mp3\",\n imageFilePath: \"/path/to/1234.png\",\n },\n endSeconds: 15.0,\n name: \"Audio To Video video\",\n resolution: \"720p\",\n startSeconds: 0.0,\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.audioToVideo.generate(\n {\n assets: {\n audioFilePath: \"/path/to/1234.mp3\",\n imageFilePath: \"/path/to/1234.png\",\n },\n endSeconds: 15.0,\n name: \"Audio To Video video\",\n resolution: \"720p\",\n startSeconds: 0.0,\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -3300,7 +3300,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.autoSubtitleGenerator.generate(\n {\n assets: { videoFilePath: \"/path/to/1234.mp4\" },\n endSeconds: 15.0,\n name: \"Auto Subtitle video\",\n startSeconds: 0.0,\n style: {},\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.autoSubtitleGenerator.generate(\n {\n assets: { videoFilePath: \"/path/to/1234.mp4\" },\n endSeconds: 15.0,\n name: \"Auto Subtitle video\",\n startSeconds: 0.0,\n style: {},\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -3599,7 +3599,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.characterReplace.generate(\n {\n assets: {\n imageFilePath: \"/path/to/5678.png\",\n videoFilePath: \"/path/to/1234.mp4\",\n },\n endSeconds: 15.0,\n name: \"My Character Replace video\",\n resolution: \"720p\",\n startSeconds: 0.0,\n style: { mode: \"replace\", selectionMode: \"auto\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.characterReplace.generate(\n {\n assets: {\n imageFilePath: \"/path/to/5678.png\",\n videoFilePath: \"/path/to/1234.mp4\",\n },\n endSeconds: 15.0,\n name: \"My Character Replace video\",\n resolution: \"720p\",\n startSeconds: 0.0,\n style: { mode: \"replace\", selectionMode: \"auto\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -3892,7 +3892,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.faceSwap.generate(\n {\n assets: {\n faceSwapMode: \"all-faces\",\n imageFilePath: \"image/id/1234.png\",\n videoFilePath: \"/path/to/1234.mp4\",\n videoSource: \"file\",\n },\n endSeconds: 15.0,\n name: \"Face Swap video\",\n startSeconds: 0.0,\n style: { version: \"default\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.faceSwap.generate(\n {\n assets: {\n faceSwapMode: \"all-faces\",\n imageFilePath: \"image/id/1234.png\",\n videoFilePath: \"/path/to/1234.mp4\",\n videoSource: \"file\",\n },\n endSeconds: 15.0,\n name: \"Face Swap video\",\n startSeconds: 0.0,\n style: { version: \"default\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -4175,7 +4175,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.imageToVideo.generate(\n {\n assets: { imageFilePath: \"/path/to/1234.png\" },\n endSeconds: 5.0,\n name: \"Image To Video video\",\n resolution: \"720p\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.imageToVideo.generate(\n {\n assets: { imageFilePath: \"/path/to/1234.png\" },\n endSeconds: 5.0,\n name: \"Image To Video video\",\n resolution: \"720p\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -4277,7 +4277,7 @@
"default": "lite",
"type": "string",
"enum": ["lite", "standard", "pro"],
- "description": "A specific version of our lip sync system, optimized for different needs.\n* `lite` - Fast lip sync - best for simple videos. Costs 1 credit per frame of video.\n* `standard` - Natural, accurate lip sync - best for most creators. Costs 1 credit per frame of video.\n* `pro` - Premium fidelity with enhanced detail - best for professionals. Costs 2 credits per frame of video.\n\nNote: `standard` and `pro` are only available for users on Creator, Pro, and Business tiers.\n ",
+ "description": "A specific version of our lip sync system, optimized for different needs.\n* `lite` - Fast lip sync - best for simple videos. Costs 1 credit per frame of video.\n* `standard` - Natural, accurate lip sync - best for most creators. Requires visible mouth movement in the opening seconds of the input video. Costs 1 credit per frame of video.\n* `pro` - Premium fidelity with enhanced detail - best for professionals. Requires visible mouth movement in the opening seconds of the input video. Costs 2 credits per frame of video.\n\nIf your source is a still image, including a still image saved as a static video, use [AI Talking Photo](https://docs.magichour.ai/api-reference/video-projects/ai-talking-photo) with the original image and your audio instead.\n\nNote: `pro` is only available for users on Creator, Pro, and Business tiers.\n ",
"example": "lite"
}
},
@@ -4441,7 +4441,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.lipSync.generate(\n {\n assets: {\n audioFilePath: \"/path/to/1234.mp3\",\n videoFilePath: \"/path/to/1234.mp4\",\n videoSource: \"file\",\n },\n endSeconds: 15.0,\n maxFpsLimit: 12.0,\n name: \"Lip Sync video\",\n startSeconds: 0.0,\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.lipSync.generate(\n {\n assets: {\n audioFilePath: \"/path/to/1234.mp3\",\n videoFilePath: \"/path/to/1234.mp4\",\n videoSource: \"file\",\n },\n endSeconds: 15.0,\n maxFpsLimit: 12.0,\n name: \"Lip Sync video\",\n startSeconds: 0.0,\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -4726,7 +4726,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.textToVideo.generate(\n {\n aspectRatio: \"16:9\",\n endSeconds: 5.0,\n name: \"Text To Video video\",\n resolution: \"720p\",\n style: { prompt: \"a dog running\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.textToVideo.generate(\n {\n aspectRatio: \"16:9\",\n endSeconds: 5.0,\n name: \"Text To Video video\",\n resolution: \"720p\",\n style: { prompt: \"a dog running\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -5095,7 +5095,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.videoToVideo.generate(\n {\n assets: { videoFilePath: \"/path/to/1234.mp4\", videoSource: \"file\" },\n endSeconds: 15.0,\n fpsResolution: \"HALF\",\n name: \"Video To Video video\",\n startSeconds: 0.0,\n style: {\n artStyle: \"3D Render\",\n model: \"default\",\n prompt: \"string\",\n promptType: \"default\",\n version: \"default\",\n },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.videoToVideo.generate(\n {\n assets: { videoFilePath: \"/path/to/1234.mp4\", videoSource: \"file\" },\n endSeconds: 15.0,\n fpsResolution: \"HALF\",\n name: \"Video To Video video\",\n startSeconds: 0.0,\n style: {\n artStyle: \"3D Render\",\n model: \"default\",\n prompt: \"string\",\n promptType: \"default\",\n version: \"default\",\n },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -5345,7 +5345,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.imageProjects.get({ id: \"cuid-example\" });"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.imageProjects.get({ id: \"cuid-example\" });"
},
{
"lang": "go",
@@ -5493,7 +5493,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.imageProjects.delete({ id: \"cuid-example\" });"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.imageProjects.delete({ id: \"cuid-example\" });"
},
{
"lang": "go",
@@ -5722,7 +5722,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiClothesChanger.generate(\n {\n assets: {\n garmentFilePath: \"/path/to/outfit.png\",\n garmentType: \"upper_body\",\n personFilePath: \"/path/to/model.png\",\n },\n name: \"Clothes Changer image\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiClothesChanger.generate(\n {\n assets: {\n garmentFilePath: \"/path/to/outfit.png\",\n garmentType: \"upper_body\",\n personFilePath: \"/path/to/model.png\",\n },\n name: \"Clothes Changer image\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -6077,7 +6077,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiFaceEditor.generate(\n {\n assets: { imageFilePath: \"/path/to/1234.png\" },\n name: \"Face Editor image\",\n style: {\n enhanceFace: false,\n eyeGazeHorizontal: 0.0,\n eyeGazeVertical: 0.0,\n eyeOpenRatio: 0.0,\n eyebrowDirection: 0.0,\n headPitch: 0.0,\n headRoll: 0.0,\n headYaw: 0.0,\n lipOpenRatio: 0.0,\n mouthGrim: 0.0,\n mouthPositionHorizontal: 0.0,\n mouthPositionVertical: 0.0,\n mouthPout: 0.0,\n mouthPurse: 0.0,\n mouthSmile: 0.0,\n },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiFaceEditor.generate(\n {\n assets: { imageFilePath: \"/path/to/1234.png\" },\n name: \"Face Editor image\",\n style: {\n enhanceFace: false,\n eyeGazeHorizontal: 0.0,\n eyeGazeVertical: 0.0,\n eyeOpenRatio: 0.0,\n eyebrowDirection: 0.0,\n headPitch: 0.0,\n headRoll: 0.0,\n headYaw: 0.0,\n lipOpenRatio: 0.0,\n mouthGrim: 0.0,\n mouthPositionHorizontal: 0.0,\n mouthPositionVertical: 0.0,\n mouthPout: 0.0,\n mouthPurse: 0.0,\n mouthSmile: 0.0,\n },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -6301,7 +6301,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiGifGenerator.generate(\n {\n name: \"Ai Gif gif\",\n style: { prompt: \"Cute dancing cat, pixel art\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiGifGenerator.generate(\n {\n name: \"Ai Gif gif\",\n style: { prompt: \"Cute dancing cat, pixel art\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -6358,6 +6358,7 @@
"type": "string",
"enum": [
"default",
+ "qwen-image-2.1",
"qwen-edit",
"flux-2-klein",
"nano-banana-2-lite",
@@ -6371,7 +6372,7 @@
"nano-banana",
"nano-banana-pro"
],
- "description": "The AI model to use for image editing. Each model has different capabilities and costs.\n\n**Models:**\n- `default` - Use the model we recommend, which will change over time. This is recommended unless you need a specific model. This is the default behavior.\n- `flux-2-klein` - from 5 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: free, creator, pro, business\n - Max additional input images: 5\n- `gpt-image-2` - from 50 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `gpt-image-2.5-flare` - from 100 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `krea-2` - from 10 credits/image\n - Supported resolutions: 640px, 1k\n - Available for tiers: free, creator, pro, business\n - Max additional input images: 1\n- `nano-banana` - from 50 credits/image\n - Supported resolutions: 640px, 1k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `nano-banana-2` - from 100 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `nano-banana-2-lite` - from 50 credits/image\n - Supported resolutions: 640px, 1k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `nano-banana-pro` - from 150 credits/image\n - Supported resolutions: 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `qwen-edit` - from 10 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: free, creator, pro, business\n - Max additional input images: 2\n- `seedream-v4` - from 40 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `seedream-v4.5` - from 50 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `seedream-v5-pro` - from 75 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n",
+ "description": "The AI model to use for image editing. Each model has different capabilities and costs.\n\n**Models:**\n- `default` - Use the model we recommend, which will change over time. This is recommended unless you need a specific model. This is the default behavior.\n- `flux-2-klein` - from 5 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: free, creator, pro, business\n - Max additional input images: 5\n- `gpt-image-2` - from 50 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `gpt-image-2.5-flare` - from 100 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `krea-2` - from 10 credits/image\n - Supported resolutions: 640px, 1k\n - Available for tiers: free, creator, pro, business\n - Max additional input images: 1\n- `nano-banana` - from 50 credits/image\n - Supported resolutions: 640px, 1k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `nano-banana-2` - from 100 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `nano-banana-2-lite` - from 50 credits/image\n - Supported resolutions: 640px, 1k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `nano-banana-pro` - from 150 credits/image\n - Supported resolutions: 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `qwen-edit` - from 10 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: free, creator, pro, business\n - Max additional input images: 2\n- `qwen-image-2.1` - from 10 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: free, creator, pro, business\n - Max additional input images: 2\n- `seedream-v4` - from 40 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `seedream-v4.5` - from 50 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n- `seedream-v5-pro` - from 75 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: creator, pro, business\n - Max additional input images: 9\n",
"example": "default"
},
"aspect_ratio": {
@@ -6383,7 +6384,7 @@
"resolution": {
"type": "string",
"enum": ["auto", "640px", "1k", "2k", "4k"],
- "description": "Maximum resolution (longest edge) for the output image.\n\n**Options:**\n- `640px` — up to 640px\n- `1k` — up to 1024px\n- `2k` — up to 2048px\n- `4k` — up to 4096px\n- `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports\n\n**Per-model support:**\n- `flux-2-klein` - 640px, 1k, 2k\n- `gpt-image-2` - 640px, 1k, 2k, 4k\n- `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k\n- `krea-2` - 640px, 1k\n- `nano-banana` - 640px, 1k\n- `nano-banana-2` - 640px, 1k, 2k, 4k\n- `nano-banana-2-lite` - 640px, 1k\n- `nano-banana-pro` - 1k, 2k, 4k\n- `qwen-edit` - 640px, 1k, 2k\n- `seedream-v4` - 640px, 1k, 2k, 4k\n- `seedream-v4.5` - 640px, 1k, 2k, 4k\n- `seedream-v5-pro` - 640px, 1k, 2k\n\nNote: Resolution availability depends on the model and your subscription tier.",
+ "description": "Maximum resolution (longest edge) for the output image.\n\n**Options:**\n- `640px` — up to 640px\n- `1k` — up to 1024px\n- `2k` — up to 2048px\n- `4k` — up to 4096px\n- `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports\n\n**Per-model support:**\n- `flux-2-klein` - 640px, 1k, 2k\n- `gpt-image-2` - 640px, 1k, 2k, 4k\n- `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k\n- `krea-2` - 640px, 1k\n- `nano-banana` - 640px, 1k\n- `nano-banana-2` - 640px, 1k, 2k, 4k\n- `nano-banana-2-lite` - 640px, 1k\n- `nano-banana-pro` - 1k, 2k, 4k\n- `qwen-edit` - 640px, 1k, 2k\n- `qwen-image-2.1` - 640px, 1k, 2k\n- `seedream-v4` - 640px, 1k, 2k, 4k\n- `seedream-v4.5` - 640px, 1k, 2k, 4k\n- `seedream-v5-pro` - 640px, 1k, 2k\n\nNote: Resolution availability depends on the model and your subscription tier.",
"example": "1k"
},
"style": {
@@ -6570,7 +6571,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiImageEditor.generate(\n {\n assets: { imageFilePaths: [\"/path/to/1234.png\", \"/path/to/1235.png\"] },\n name: \"Ai Image Editor image\",\n style: { prompt: \"Give me sunglasses\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiImageEditor.generate(\n {\n assets: { imageFilePaths: [\"/path/to/1234.png\", \"/path/to/1235.png\"] },\n name: \"Ai Image Editor image\",\n style: { prompt: \"Give me sunglasses\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -6796,7 +6797,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiHeadshotGenerator.generate(\n {\n assets: { imageFilePath: \"/path/to/1234.png\" },\n name: \"Ai Headshot image\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiHeadshotGenerator.generate(\n {\n assets: { imageFilePath: \"/path/to/1234.png\" },\n name: \"Ai Headshot image\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -6854,6 +6855,7 @@
"enum": [
"default",
"z-image-turbo",
+ "qwen-image-2.1",
"flux-2-klein",
"nano-banana-2-lite",
"nano-banana-2",
@@ -6867,7 +6869,7 @@
"flux-schnell",
"seedream"
],
- "description": "The AI model to use for image generation. Each model has different capabilities and costs.\n\n**Models:**\n- `default` - Use the model we recommend, which will change over time. This is recommended unless you need a specific model. This is the default behavior.\n- `flux-2-klein` - from 5 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: free, creator, pro, business\n - Image count allowed: 1\n- `flux-schnell` - from 5 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: free, creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `gpt-image-2` - from 50 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `gpt-image-2.5-flare` - from 100 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `krea-2` - from 10 credits/image\n - Supported resolutions: 640px, 1k\n - Available for tiers: free, creator, pro, business\n - Image count allowed: 1\n- `nano-banana` - from 50 credits/image\n - Supported resolutions: 640px, 1k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `nano-banana-2` - from 100 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 4, 9, 16\n- `nano-banana-2-lite` - from 50 credits/image\n - Supported resolutions: 640px, 1k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `nano-banana-pro` - from 150 credits/image\n - Supported resolutions: 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 4, 9, 16\n- `seedream-v4` - from 40 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `seedream-v5-pro` - from 75 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `z-image-turbo` - from 5 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: free, creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n\n**Deprecated Enum Values:**\n- `seedream` - Use `seedream-v4` instead.\n",
+ "description": "The AI model to use for image generation. Each model has different capabilities and costs.\n\n**Models:**\n- `default` - Use the model we recommend, which will change over time. This is recommended unless you need a specific model. This is the default behavior.\n- `flux-2-klein` - from 5 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: free, creator, pro, business\n - Image count allowed: 1\n- `flux-schnell` - from 5 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: free, creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `gpt-image-2` - from 50 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `gpt-image-2.5-flare` - from 100 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `krea-2` - from 10 credits/image\n - Supported resolutions: 640px, 1k\n - Available for tiers: free, creator, pro, business\n - Image count allowed: 1\n- `nano-banana` - from 50 credits/image\n - Supported resolutions: 640px, 1k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `nano-banana-2` - from 100 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 4, 9, 16\n- `nano-banana-2-lite` - from 50 credits/image\n - Supported resolutions: 640px, 1k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `nano-banana-pro` - from 150 credits/image\n - Supported resolutions: 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 4, 9, 16\n- `qwen-image-2.1` - from 10 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: free, creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `seedream-v4` - from 40 credits/image\n - Supported resolutions: 640px, 1k, 2k, 4k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `seedream-v5-pro` - from 75 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n- `z-image-turbo` - from 5 credits/image\n - Supported resolutions: 640px, 1k, 2k\n - Available for tiers: free, creator, pro, business\n - Image count allowed: 1, 2, 3, 4\n\n**Deprecated Enum Values:**\n- `seedream` - Use `seedream-v4` instead.\n",
"example": "default"
},
"aspect_ratio": {
@@ -6880,7 +6882,7 @@
"default": "auto",
"type": "string",
"enum": ["auto", "640px", "1k", "2k", "4k"],
- "description": "Maximum resolution (longest edge) for the output image.\n\n**Options:**\n- `640px` — up to 640px\n- `1k` — up to 1024px\n- `2k` — up to 2048px\n- `4k` — up to 4096px\n- `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports\n\n**Per-model support:**\n- `flux-2-klein` - 640px, 1k, 2k\n- `flux-schnell` - 640px, 1k, 2k\n- `gpt-image-2` - 640px, 1k, 2k, 4k\n- `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k\n- `krea-2` - 640px, 1k\n- `nano-banana` - 640px, 1k\n- `nano-banana-2` - 640px, 1k, 2k, 4k\n- `nano-banana-2-lite` - 640px, 1k\n- `nano-banana-pro` - 1k, 2k, 4k\n- `seedream-v4` - 640px, 1k, 2k, 4k\n- `seedream-v5-pro` - 640px, 1k, 2k\n- `z-image-turbo` - 640px, 1k, 2k\n\nNote: Resolution availability depends on the model and your subscription tier.",
+ "description": "Maximum resolution (longest edge) for the output image.\n\n**Options:**\n- `640px` — up to 640px\n- `1k` — up to 1024px\n- `2k` — up to 2048px\n- `4k` — up to 4096px\n- `auto` — **Deprecated.** Mapped server-side from your subscription tier to the best matching resolution the model supports\n\n**Per-model support:**\n- `flux-2-klein` - 640px, 1k, 2k\n- `flux-schnell` - 640px, 1k, 2k\n- `gpt-image-2` - 640px, 1k, 2k, 4k\n- `gpt-image-2.5-flare` - 640px, 1k, 2k, 4k\n- `krea-2` - 640px, 1k\n- `nano-banana` - 640px, 1k\n- `nano-banana-2` - 640px, 1k, 2k, 4k\n- `nano-banana-2-lite` - 640px, 1k\n- `nano-banana-pro` - 1k, 2k, 4k\n- `qwen-image-2.1` - 640px, 1k, 2k\n- `seedream-v4` - 640px, 1k, 2k, 4k\n- `seedream-v5-pro` - 640px, 1k, 2k\n- `z-image-turbo` - 640px, 1k, 2k\n\nNote: Resolution availability depends on the model and your subscription tier.",
"example": "1k"
},
"style": {
@@ -7097,7 +7099,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiImageGenerator.generate(\n {\n aspectRatio: \"1:1\",\n imageCount: 1,\n model: \"default\",\n name: \"My Ai Image image\",\n resolution: \"1k\",\n style: { prompt: \"Cool image\", tool: \"ai-anime-generator\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiImageGenerator.generate(\n {\n aspectRatio: \"1:1\",\n imageCount: 1,\n model: \"default\",\n name: \"My Ai Image image\",\n resolution: \"1k\",\n style: { prompt: \"Cool image\", tool: \"ai-anime-generator\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -7336,7 +7338,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiImageUpscaler.generate(\n {\n assets: { imageFilePath: \"/path/to/1234.png\" },\n name: \"Image Upscaler image\",\n scaleFactor: 2.0,\n style: { mode: \"balanced\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiImageUpscaler.generate(\n {\n assets: { imageFilePath: \"/path/to/1234.png\" },\n name: \"Image Upscaler image\",\n scaleFactor: 2.0,\n style: { mode: \"balanced\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -7666,7 +7668,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiMemeGenerator.generate(\n {\n name: \"My Funny Meme\",\n style: {\n searchWeb: false,\n template: \"Drake Hotline Bling\",\n topic: \"When the code finally works\",\n },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiMemeGenerator.generate(\n {\n name: \"My Funny Meme\",\n style: {\n searchWeb: false,\n template: \"Drake Hotline Bling\",\n topic: \"When the code finally works\",\n },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -7886,7 +7888,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiQrCodeGenerator.generate(\n {\n content: \"https://magichour.ai\",\n name: \"Qr Code image\",\n style: { artStyle: \"Watercolor\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiQrCodeGenerator.generate(\n {\n content: \"https://magichour.ai\",\n name: \"Qr Code image\",\n style: { artStyle: \"Watercolor\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -8115,7 +8117,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.bodySwap.generate(\n {\n assets: {\n personFilePath: \"/path/to/person.png\",\n sceneFilePath: \"/path/to/scene.png\",\n },\n name: \"My Body Swap image\",\n resolution: \"1k\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.bodySwap.generate(\n {\n assets: {\n personFilePath: \"/path/to/person.png\",\n sceneFilePath: \"/path/to/scene.png\",\n },\n name: \"My Body Swap image\",\n resolution: \"1k\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -8372,7 +8374,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.faceSwapPhoto.generate(\n {\n assets: {\n faceSwapMode: \"all-faces\",\n sourceFilePath: \"/path/to/1234.png\",\n targetFilePath: \"/path/to/1234.png\",\n },\n name: \"Face Swap image\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.faceSwapPhoto.generate(\n {\n assets: {\n faceSwapMode: \"all-faces\",\n sourceFilePath: \"/path/to/1234.png\",\n targetFilePath: \"/path/to/1234.png\",\n },\n name: \"Face Swap image\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -8600,7 +8602,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.headSwap.create({\n assets: {\n bodyFilePath: \"api-assets/id/1234.png\",\n headFilePath: \"api-assets/id/5678.png\",\n },\n maxResolution: 1024,\n name: \"My Head Swap image\",\n});"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.headSwap.create({\n assets: {\n bodyFilePath: \"api-assets/id/1234.png\",\n headFilePath: \"api-assets/id/5678.png\",\n },\n maxResolution: 1024,\n name: \"My Head Swap image\",\n});"
},
{
"lang": "go",
@@ -8821,7 +8823,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.imageBackgroundRemover.generate(\n {\n assets: {\n backgroundImageFilePath: \"/path/to/1234.png\",\n imageFilePath: \"/path/to/1234.png\",\n },\n name: \"Background Remover image\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.imageBackgroundRemover.generate(\n {\n assets: {\n backgroundImageFilePath: \"/path/to/1234.png\",\n imageFilePath: \"/path/to/1234.png\",\n },\n name: \"Background Remover image\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -9038,7 +9040,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.photoColorizer.generate(\n {\n assets: { imageFilePath: \"/path/to/1234.png\" },\n name: \"Photo Colorizer image\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.photoColorizer.generate(\n {\n assets: { imageFilePath: \"/path/to/1234.png\" },\n name: \"Photo Colorizer image\",\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -9282,7 +9284,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.audioProjects.get({ id: \"cuid-example\" });"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.audioProjects.get({ id: \"cuid-example\" });"
},
{
"lang": "go",
@@ -9430,7 +9432,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.audioProjects.delete({ id: \"cuid-example\" });"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.audioProjects.delete({ id: \"cuid-example\" });"
},
{
"lang": "go",
@@ -10921,7 +10923,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiVoiceGenerator.generate(\n {\n name: \"Voice Generator audio\",\n style: { prompt: \"Hello, how are you?\", voiceName: \"Elon Musk\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiVoiceGenerator.generate(\n {\n name: \"Voice Generator audio\",\n style: { prompt: \"Hello, how are you?\", voiceName: \"Elon Musk\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -11151,7 +11153,7 @@
},
{
"lang": "javascript",
- "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"]!! });\nconst res = await client.v1.aiVoiceCloner.generate(\n {\n assets: { audioFilePath: \"/path/to/audio.mp3\" },\n name: \"Voice Cloner audio\",\n style: { prompt: \"Hello, this is my cloned voice.\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
+ "source": "import { Client } from \"magic-hour\";\n\nconst client = new Client({ token: process.env[\"MAGIC_HOUR_API_KEY\"] });\nconst res = await client.v1.aiVoiceCloner.generate(\n {\n assets: { audioFilePath: \"/path/to/audio.mp3\" },\n name: \"Voice Cloner audio\",\n style: { prompt: \"Hello, this is my cloned voice.\" },\n },\n {\n waitForCompletion: true,\n downloadOutputs: true,\n downloadDirectory: \".\",\n },\n);"
},
{
"lang": "go",
@@ -11180,7 +11182,7 @@
"info": {
"title": "Magic Hour API",
"version": "beta",
- "description": "\nMagic Hour provides an API (beta) that can be integrated into your own application to generate videos and images using AI. \n\nWebhook documentation can be found [here](https://docs.magichour.ai/webhook-reference).\n\nIf you have any questions, please reach out to us via [discord](https://discord.gg/JX5rgsZaJp).\n\n# Authentication\n\nEvery request requires an API key.\n\nTo get started, first generate your API key [here](https://magichour.ai/developer?tab=api-keys&utm_source=docs&utm_medium=referral&utm_campaign=api-reference).\n\nThen, add the `Authorization` header to the request.\n\n| Key | Value |\n|-|-|\n| Authorization | Bearer mhk_live_apikey |\n\n> **Warning**: any API call that renders a video will utilize credits in your account.\n",
+ "description": "\nMagic Hour provides a REST API (beta) for generating and editing video, images, and audio using AI.\n\nWebhook documentation can be found [here](https://docs.magichour.ai/webhook-reference).\n\nIf you have any questions, please reach out to us via [discord](https://discord.gg/JX5rgsZaJp).\n\n# Authentication\n\nEvery request requires an API key.\n\nTo get started, first generate your API key [here](https://magichour.ai/developer?tab=api-keys&utm_source=docs&utm_medium=referral&utm_campaign=api-reference).\n\nThen, add the `Authorization` header to the request.\n\n| Key | Value |\n|-|-|\n| Authorization | Bearer mhk_live_apikey |\n\n> **Warning**: API generation and editing requests consume account credits. Cost varies by tool, model, and settings; see [API pricing](https://magichour.ai/api#api-cost-calculator).\n",
"termsOfService": "https://magichour.ai/terms-of-service"
},
"components": {