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": {