diff --git a/src/libs/MagicHour/Generated/MagicHour.AudioProjectsClient.g.cs b/src/libs/MagicHour/Generated/MagicHour.AudioProjectsClient.g.cs index 8331fb0..8daa0bb 100644 --- a/src/libs/MagicHour/Generated/MagicHour.AudioProjectsClient.g.cs +++ b/src/libs/MagicHour/Generated/MagicHour.AudioProjectsClient.g.cs @@ -4,7 +4,7 @@ namespace MagicHour { /// - /// API related to audio projects.
+ /// API related to audio projects
/// 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.FilesClient.g.cs b/src/libs/MagicHour/Generated/MagicHour.FilesClient.g.cs index 3908632..bd51e1f 100644 --- a/src/libs/MagicHour/Generated/MagicHour.FilesClient.g.cs +++ b/src/libs/MagicHour/Generated/MagicHour.FilesClient.g.cs @@ -4,7 +4,7 @@ namespace MagicHour { /// - /// API related to uploading assets used for video generation.
+ /// API related to uploading assets used for video generation
/// 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.IAudioProjectsClient.g.cs b/src/libs/MagicHour/Generated/MagicHour.IAudioProjectsClient.g.cs index b05b71f..e88e32e 100644 --- a/src/libs/MagicHour/Generated/MagicHour.IAudioProjectsClient.g.cs +++ b/src/libs/MagicHour/Generated/MagicHour.IAudioProjectsClient.g.cs @@ -4,7 +4,7 @@ namespace MagicHour { /// - /// API related to audio projects.
+ /// API related to audio projects
/// 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. ///
@@ -33,12 +33,12 @@ public partial interface IAudioProjectsClient : global::System.IDisposable /// ensuring is populated. /// public bool ReadResponseAsString { get; set; } - /// /// Client-wide request defaults such as headers, query parameters, retries, and timeout. /// public global::MagicHour.AutoSDKClientOptions Options { get; } + /// /// /// diff --git a/src/libs/MagicHour/Generated/MagicHour.IFilesClient.g.cs b/src/libs/MagicHour/Generated/MagicHour.IFilesClient.g.cs index 853d0c0..512e017 100644 --- a/src/libs/MagicHour/Generated/MagicHour.IFilesClient.g.cs +++ b/src/libs/MagicHour/Generated/MagicHour.IFilesClient.g.cs @@ -4,7 +4,7 @@ namespace MagicHour { /// - /// API related to uploading assets used for video generation.
+ /// API related to uploading assets used for video generation
/// 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. ///
@@ -33,12 +33,12 @@ public partial interface IFilesClient : global::System.IDisposable /// ensuring is populated. /// public bool ReadResponseAsString { get; set; } - /// /// Client-wide request defaults such as headers, query parameters, retries, and timeout. /// public global::MagicHour.AutoSDKClientOptions Options { get; } + /// /// /// diff --git a/src/libs/MagicHour/Generated/MagicHour.IImageProjectsClient.g.cs b/src/libs/MagicHour/Generated/MagicHour.IImageProjectsClient.g.cs index 39cbf03..b0f09e7 100644 --- a/src/libs/MagicHour/Generated/MagicHour.IImageProjectsClient.g.cs +++ b/src/libs/MagicHour/Generated/MagicHour.IImageProjectsClient.g.cs @@ -4,7 +4,7 @@ namespace MagicHour { /// - /// API related to image projects.
+ /// API related to image projects
/// 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. ///
@@ -33,12 +33,12 @@ public partial interface IImageProjectsClient : global::System.IDisposable /// ensuring is populated. /// public bool ReadResponseAsString { get; set; } - /// /// Client-wide request defaults such as headers, query parameters, retries, and timeout. /// public global::MagicHour.AutoSDKClientOptions Options { get; } + /// /// /// diff --git a/src/libs/MagicHour/Generated/MagicHour.IMagicHourClient.g.cs b/src/libs/MagicHour/Generated/MagicHour.IMagicHourClient.g.cs index 6b06ce5..736e2c3 100644 --- a/src/libs/MagicHour/Generated/MagicHour.IMagicHourClient.g.cs +++ b/src/libs/MagicHour/Generated/MagicHour.IMagicHourClient.g.cs @@ -43,12 +43,12 @@ public partial interface IMagicHourClient : global::System.IDisposable /// ensuring is populated. /// public bool ReadResponseAsString { get; set; } - /// /// Client-wide request defaults such as headers, query parameters, retries, and timeout. /// public global::MagicHour.AutoSDKClientOptions Options { get; } + /// /// /// diff --git a/src/libs/MagicHour/Generated/MagicHour.IVideoProjectsClient.g.cs b/src/libs/MagicHour/Generated/MagicHour.IVideoProjectsClient.g.cs index 92a7ae0..2f16798 100644 --- a/src/libs/MagicHour/Generated/MagicHour.IVideoProjectsClient.g.cs +++ b/src/libs/MagicHour/Generated/MagicHour.IVideoProjectsClient.g.cs @@ -4,7 +4,7 @@ namespace MagicHour { /// - /// API related to video projects.
+ /// API related to video projects
/// 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. ///
@@ -33,12 +33,12 @@ public partial interface IVideoProjectsClient : global::System.IDisposable /// ensuring is populated. /// public bool ReadResponseAsString { get; set; } - /// /// Client-wide request defaults such as headers, query parameters, retries, and timeout. /// public global::MagicHour.AutoSDKClientOptions Options { get; } + /// /// /// diff --git a/src/libs/MagicHour/Generated/MagicHour.ImageProjectsClient.g.cs b/src/libs/MagicHour/Generated/MagicHour.ImageProjectsClient.g.cs index 3a8df2c..1de5249 100644 --- a/src/libs/MagicHour/Generated/MagicHour.ImageProjectsClient.g.cs +++ b/src/libs/MagicHour/Generated/MagicHour.ImageProjectsClient.g.cs @@ -4,7 +4,7 @@ namespace MagicHour { /// - /// API related to image projects.
+ /// API related to image projects
/// 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.OptionsSupport.g.cs b/src/libs/MagicHour/Generated/MagicHour.OptionsSupport.g.cs index e27ef10..483abbe 100644 --- a/src/libs/MagicHour/Generated/MagicHour.OptionsSupport.g.cs +++ b/src/libs/MagicHour/Generated/MagicHour.OptionsSupport.g.cs @@ -106,6 +106,7 @@ public sealed class AutoSDKRetryOptions public global::System.TimeSpan? Delay { get; set; } } + /// /// Runtime hook interface for generated SDK lifecycle events. /// @@ -236,6 +237,7 @@ public sealed class AutoSDKHookContext public global::System.Threading.CancellationToken CancellationToken { get; set; } } + internal static class AutoSDKRequestOptionsSupport { internal static global::MagicHour.AutoSDKHookContext CreateHookContext( diff --git a/src/libs/MagicHour/Generated/MagicHour.VideoProjectsClient.g.cs b/src/libs/MagicHour/Generated/MagicHour.VideoProjectsClient.g.cs index 587fe43..0d7c6c6 100644 --- a/src/libs/MagicHour/Generated/MagicHour.VideoProjectsClient.g.cs +++ b/src/libs/MagicHour/Generated/MagicHour.VideoProjectsClient.g.cs @@ -4,7 +4,7 @@ namespace MagicHour { /// - /// API related to video projects.
+ /// API related to video projects
/// 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/autosdk.generated-examples.json b/src/libs/MagicHour/Generated/autosdk.generated-examples.json new file mode 100644 index 0000000..e72898a --- /dev/null +++ b/src/libs/MagicHour/Generated/autosdk.generated-examples.json @@ -0,0 +1,356 @@ +{ + "Examples": [ + { + "Order": 1, + "Title": "AI Voice Cloner", + "Slug": "aivoicecloner-createaudio", + "Description": "Clone a voice from an audio sample and generate speech. \n* Each character costs 0.05 credits. \n* The cost is rounded up to the nearest whole number", + "Language": "http", + "Code": "### AI Voice Cloner\n# @name aiVoiceCloner.createAudio\nPOST {{host}}/v1/ai-voice-cloner\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Voice Cloner audio\u0022,\n \u0022assets\u0022: {\n \u0022audio_file_path\u0022: \u0022api-assets/id/1234.mp3\u0022\n },\n \u0022style\u0022: {\n \u0022prompt\u0022: \u0022Hello, this is my cloned voice.\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "aiVoiceCloner.createAudio", + "Setup": null + }, + { + "Order": 2, + "Title": "AI Voice Generator", + "Slug": "aivoicegenerator-createaudio", + "Description": "Generate speech from text. Each character costs 0.05 credits. The cost is rounded up to the nearest whole number.", + "Language": "http", + "Code": "### AI Voice Generator\n# @name aiVoiceGenerator.createAudio\nPOST {{host}}/v1/ai-voice-generator\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Voice Generator audio\u0022,\n \u0022style\u0022: {\n \u0022prompt\u0022: \u0022Hello, how are you?\u0022,\n \u0022voice_name\u0022: \u0022Elon Musk\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "aiVoiceGenerator.createAudio", + "Setup": null + }, + { + "Order": 3, + "Title": "Delete audio", + "Slug": "audioprojects-delete", + "Description": "Permanently delete the rendered audio file(s). This action is not reversible, please be sure before deleting.", + "Language": "http", + "Code": "### Delete audio\n# @name audioProjects.delete\nDELETE {{host}}/v1/audio-projects/{{id}}\nAuthorization: Bearer {{token}}\nAccept: application/json\n\n## Responses\n# 204\n# Description: 204\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json", + "Format": "http", + "OperationId": "audioProjects.delete", + "Setup": null + }, + { + "Order": 4, + "Title": "Get audio details", + "Slug": "audioprojects-getdetails", + "Description": "Check the progress of a audio project. The \u0060downloads\u0060 field is populated after a successful render.\n \n**Statuses**\n- \u0060queued\u0060 \u2014 waiting to start\n- \u0060rendering\u0060 \u2014 in progress\n- \u0060complete\u0060 \u2014 ready; see \u0060downloads\u0060\n- \u0060error\u0060 \u2014 a failure occurred (see \u0060error\u0060)\n- \u0060canceled\u0060 \u2014 user canceled\n- \u0060draft\u0060 \u2014 not used", + "Language": "http", + "Code": "### Get audio details\n# @name audioProjects.getDetails\nGET {{host}}/v1/audio-projects/{{id}}\nAuthorization: Bearer {{token}}\nAccept: application/json\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json", + "Format": "http", + "OperationId": "audioProjects.getDetails", + "Setup": null + }, + { + "Order": 5, + "Title": "Face Detection", + "Slug": "facedetection-detectfaces", + "Description": "Detect faces in an image or video. \n \nUse this API to get the list of faces detected in the image or video to use in the [face swap photo](https://docs.magichour.ai/api-reference/image-projects/face-swap-photo) or [face swap video](https://docs.magichour.ai/api-reference/video-projects/face-swap-video) API calls for multi-face swaps.\n\nNote: Face detection is free to use for the near future. Pricing may change in the future.", + "Language": "http", + "Code": "### Face Detection\n# @name faceDetection.detectFaces\nPOST {{host}}/v1/face-detection\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022confidence_score\u0022: 0.5,\n \u0022assets\u0022: {\n \u0022target_file_path\u0022: \u0022api-assets/id/1234.png\u0022\n }\n}\n\n## Responses\n# 200\n# Description: 200\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "faceDetection.detectFaces", + "Setup": null + }, + { + "Order": 6, + "Title": "Get face detection details", + "Slug": "facedetection-getdetails", + "Description": "Get the details of a face detection task. \n\nUse this API to get the list of faces detected in the image or video to use in the [face swap photo](https://docs.magichour.ai/api-reference/image-projects/face-swap-photo) or [face swap video](https://docs.magichour.ai/api-reference/video-projects/face-swap-video) API calls for multi-face swaps.", + "Language": "http", + "Code": "### Get face detection details\n# @name faceDetection.getDetails\nGET {{host}}/v1/face-detection/{{id}}\nAuthorization: Bearer {{token}}\nAccept: application/json\n\n## Responses\n# 200\n# Description: 200\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "faceDetection.getDetails", + "Setup": null + }, + { + "Order": 7, + "Title": "Generate asset upload urls", + "Slug": "videoassets-generatepresignedurl", + "Description": "Generates a list of pre-signed upload URLs for the assets required. This API is only necessary if you want to upload to Magic Hour\u0027s storage. Refer to the [Input Files Guide](/integration/input-files) for more details.\n\nThe response array will match the order of items in the request body.\n\n**Valid file extensions per asset type**:\n- video: mp4, m4v, mov, webm\n- audio: mp3, wav, aac, flac, webm, m4a\n- image: png, jpg, jpeg, heic, webp, avif, jp2, tiff, bmp\n- gif: gif, webp, webm\n\n\u003E Note: \u0060gif\u0060 is only supported for face swap API \u0060video_file_path\u0060 field.\n\nOnce you receive an upload URL, send a \u0060PUT\u0060 request to upload the file directly.\n\nExample:\n\n\u0060\u0060\u0060\ncurl -X PUT --data \u0027@/path/to/file/video.mp4\u0027 \\\n https://videos.magichour.ai/api-assets/id/video.mp4?\u003Cauth params from the API response\u003E\n\u0060\u0060\u0060", + "Language": "http", + "Code": "### Generate asset upload urls\n# @name videoAssets.generatePresignedUrl\nPOST {{host}}/v1/files/upload-urls\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022items\u0022: [\n {\n \u0022type\u0022: \u0022video\u0022,\n \u0022extension\u0022: \u0022mp4\u0022\n },\n {\n \u0022type\u0022: \u0022audio\u0022,\n \u0022extension\u0022: \u0022mp3\u0022\n }\n ]\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "videoAssets.generatePresignedUrl", + "Setup": null + }, + { + "Order": 8, + "Title": "AI Clothes Changer", + "Slug": "aiclotheschanger-createimage", + "Description": "Change outfits in photos in seconds with just a photo reference. Each photo costs 25 credits.", + "Language": "http", + "Code": "### AI Clothes Changer\n# @name aiClothesChanger.createImage\nPOST {{host}}/v1/ai-clothes-changer\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Clothes Changer image\u0022,\n \u0022assets\u0022: {\n \u0022person_file_path\u0022: \u0022api-assets/id/model.png\u0022,\n \u0022garment_file_path\u0022: \u0022api-assets/id/outfit.png\u0022,\n \u0022garment_type\u0022: \u0022entire_outfit\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "aiClothesChanger.createImage", + "Setup": null + }, + { + "Order": 9, + "Title": "AI Face Editor", + "Slug": "aifaceeditor-editimage", + "Description": "Edit facial features of an image using AI. Each edit costs 1 frame. The height/width of the output image depends on your subscription. Please refer to our [pricing](https://magichour.ai/pricing) page for more details", + "Language": "http", + "Code": "### AI Face Editor\n# @name aiFaceEditor.editImage\nPOST {{host}}/v1/ai-face-editor\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Face Editor image\u0022,\n \u0022assets\u0022: {\n \u0022image_file_path\u0022: \u0022api-assets/id/1234.png\u0022\n },\n \u0022style\u0022: {\n \u0022enhance_face\u0022: false,\n \u0022eyebrow_direction\u0022: 0,\n \u0022eye_gaze_horizontal\u0022: 0,\n \u0022eye_gaze_vertical\u0022: 0,\n \u0022eye_open_ratio\u0022: 0,\n \u0022lip_open_ratio\u0022: 0,\n \u0022head_roll\u0022: 0,\n \u0022mouth_grim\u0022: 0,\n \u0022mouth_pout\u0022: 0,\n \u0022mouth_purse\u0022: 0,\n \u0022mouth_smile\u0022: 0,\n \u0022mouth_position_horizontal\u0022: 0,\n \u0022mouth_position_vertical\u0022: 0,\n \u0022head_pitch\u0022: 0,\n \u0022head_yaw\u0022: 0\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "aiFaceEditor.editImage", + "Setup": null + }, + { + "Order": 10, + "Title": "AI GIF Generator", + "Slug": "aigifgenerator-createimage", + "Description": "Create an AI GIF. Each GIF costs 50 credits.", + "Language": "http", + "Code": "### AI GIF Generator\n# @name aiGifGenerator.createImage\nPOST {{host}}/v1/ai-gif-generator\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Ai Gif gif\u0022,\n \u0022style\u0022: {\n \u0022prompt\u0022: \u0022Cute dancing cat, pixel art\u0022\n },\n \u0022output_format\u0022: \u0022gif\u0022\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "aiGifGenerator.createImage", + "Setup": null + }, + { + "Order": 11, + "Title": "AI Headshot Generator", + "Slug": "aiheadshotgenerator-createimage", + "Description": "Create an AI headshot. Each headshot costs 50 credits.", + "Language": "http", + "Code": "### AI Headshot Generator\n# @name aiHeadshotGenerator.createImage\nPOST {{host}}/v1/ai-headshot-generator\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Ai Headshot image\u0022,\n \u0022style\u0022: {\n \u0022prompt\u0022: \u0022string\u0022\n },\n \u0022assets\u0022: {\n \u0022image_file_path\u0022: \u0022api-assets/id/1234.png\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "aiHeadshotGenerator.createImage", + "Setup": null + }, + { + "Order": 12, + "Title": "AI Image Editor", + "Slug": "aiimageeditor-createimage", + "Description": "Edit images with AI.", + "Language": "http", + "Code": "### AI Image Editor\n# @name aiImageEditor.createImage\nPOST {{host}}/v1/ai-image-editor\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Ai Image Editor image\u0022,\n \u0022image_count\u0022: 1,\n \u0022model\u0022: \u0022default\u0022,\n \u0022aspect_ratio\u0022: \u00221:1\u0022,\n \u0022resolution\u0022: \u0022auto\u0022,\n \u0022style\u0022: {\n \u0022prompt\u0022: \u0022Give me sunglasses\u0022\n },\n \u0022assets\u0022: {\n \u0022image_file_paths\u0022: [\n \u0022api-assets/id/1234.png\u0022,\n \u0022api-assets/id/1235.png\u0022\n ]\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "aiImageEditor.createImage", + "Setup": null + }, + { + "Order": 13, + "Title": "AI Image Generator", + "Slug": "aiimagegenerator-createimage", + "Description": "Create an AI image with advanced model selection and quality controls.", + "Language": "http", + "Code": "### AI Image Generator\n# @name aiImageGenerator.createImage\nPOST {{host}}/v1/ai-image-generator\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Ai Image image\u0022,\n \u0022image_count\u0022: 1,\n \u0022model\u0022: \u0022default\u0022,\n \u0022aspect_ratio\u0022: \u00221:1\u0022,\n \u0022resolution\u0022: \u0022auto\u0022,\n \u0022style\u0022: {\n \u0022prompt\u0022: \u0022Cool image\u0022,\n \u0022tool\u0022: \u0022ai-anime-generator\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "aiImageGenerator.createImage", + "Setup": null + }, + { + "Order": 14, + "Title": "AI Image Upscaler", + "Slug": "aiimageupscaler-createimage", + "Description": "Upscale your image using AI. Each 2x upscale costs 50 credits, and 4x upscale costs 200 credits.", + "Language": "http", + "Code": "### AI Image Upscaler\n# @name aiImageUpscaler.createImage\nPOST {{host}}/v1/ai-image-upscaler\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Image Upscaler image\u0022,\n \u0022scale_factor\u0022: 2,\n \u0022style\u0022: {\n \u0022enhancement\u0022: \u0022Resemblance\u0022,\n \u0022prompt\u0022: \u0022string\u0022\n },\n \u0022assets\u0022: {\n \u0022image_file_path\u0022: \u0022api-assets/id/1234.png\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "aiImageUpscaler.createImage", + "Setup": null + }, + { + "Order": 15, + "Title": "AI Meme Generator", + "Slug": "aimemegenerator-createimage", + "Description": "Create an AI generated meme. Each meme costs 10 credits.", + "Language": "http", + "Code": "### AI Meme Generator\n# @name aiMemeGenerator.createImage\nPOST {{host}}/v1/ai-meme-generator\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Funny Meme\u0022,\n \u0022style\u0022: {\n \u0022topic\u0022: \u0022When the code finally works\u0022,\n \u0022template\u0022: \u0022Drake Hotline Bling\u0022,\n \u0022searchWeb\u0022: false\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "aiMemeGenerator.createImage", + "Setup": null + }, + { + "Order": 16, + "Title": "AI QR Code Generator", + "Slug": "aiqrcodegenerator-createimage", + "Description": "Create an AI QR code. Each QR code costs 0 credits.", + "Language": "http", + "Code": "### AI QR Code Generator\n# @name aiQrCodeGenerator.createImage\nPOST {{host}}/v1/ai-qr-code-generator\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Qr Code image\u0022,\n \u0022content\u0022: \u0022https://magichour.ai\u0022,\n \u0022style\u0022: {\n \u0022art_style\u0022: \u0022Watercolor\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "aiQrCodeGenerator.createImage", + "Setup": null + }, + { + "Order": 17, + "Title": "Face Swap Photo", + "Slug": "faceswapphoto-createimage", + "Description": "Create a face swap photo. Each photo costs 10 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](https://magichour.ai/pricing) page for more details", + "Language": "http", + "Code": "### Face Swap Photo\n# @name faceSwapPhoto.createImage\nPOST {{host}}/v1/face-swap-photo\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Face Swap image\u0022,\n \u0022assets\u0022: {\n \u0022face_swap_mode\u0022: \u0022all-faces\u0022,\n \u0022source_file_path\u0022: \u0022api-assets/id/1234.png\u0022,\n \u0022face_mappings\u0022: [\n {\n \u0022original_face\u0022: \u0022api-assets/id/0-0.png\u0022,\n \u0022new_face\u0022: \u0022api-assets/id/1234.png\u0022\n }\n ],\n \u0022target_file_path\u0022: \u0022api-assets/id/1234.png\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "faceSwapPhoto.createImage", + "Setup": null + }, + { + "Order": 18, + "Title": "Head Swap", + "Slug": "headswap-createimage", + "Description": "Swap a head onto a body image. Each image costs 10 credits. Output resolution depends on your subscription; you may set \u0060max_resolution\u0060 lower than your plan maximum if desired.", + "Language": "http", + "Code": "### Head Swap\n# @name headSwap.createImage\nPOST {{host}}/v1/head-swap\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Head Swap image\u0022,\n \u0022max_resolution\u0022: 1024,\n \u0022assets\u0022: {\n \u0022body_file_path\u0022: \u0022api-assets/id/1234.png\u0022,\n \u0022head_file_path\u0022: \u0022api-assets/id/5678.png\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "headSwap.createImage", + "Setup": null + }, + { + "Order": 19, + "Title": "Image Background Remover", + "Slug": "imagebackgroundremover-createimage", + "Description": "Remove background from image. Each image costs 5 credits.", + "Language": "http", + "Code": "### Image Background Remover\n# @name imageBackgroundRemover.createImage\nPOST {{host}}/v1/image-background-remover\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Background Remover image\u0022,\n \u0022assets\u0022: {\n \u0022image_file_path\u0022: \u0022api-assets/id/1234.png\u0022,\n \u0022background_image_file_path\u0022: \u0022api-assets/id/1234.png\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "imageBackgroundRemover.createImage", + "Setup": null + }, + { + "Order": 20, + "Title": "Delete image", + "Slug": "imageprojects-delete", + "Description": "Permanently delete the rendered image(s). This action is not reversible, please be sure before deleting.", + "Language": "http", + "Code": "### Delete image\n# @name imageProjects.delete\nDELETE {{host}}/v1/image-projects/{{id}}\nAuthorization: Bearer {{token}}\nAccept: application/json\n\n## Responses\n# 204\n# Description: 204\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json", + "Format": "http", + "OperationId": "imageProjects.delete", + "Setup": null + }, + { + "Order": 21, + "Title": "Get image details", + "Slug": "imageprojects-getdetails", + "Description": "Check the progress of a image project. The \u0060downloads\u0060 field is populated after a successful render.\n \n**Statuses**\n- \u0060queued\u0060 \u2014 waiting to start\n- \u0060rendering\u0060 \u2014 in progress\n- \u0060complete\u0060 \u2014 ready; see \u0060downloads\u0060\n- \u0060error\u0060 \u2014 a failure occurred (see \u0060error\u0060)\n- \u0060canceled\u0060 \u2014 user canceled\n- \u0060draft\u0060 \u2014 not used", + "Language": "http", + "Code": "### Get image details\n# @name imageProjects.getDetails\nGET {{host}}/v1/image-projects/{{id}}\nAuthorization: Bearer {{token}}\nAccept: application/json\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json", + "Format": "http", + "OperationId": "imageProjects.getDetails", + "Setup": null + }, + { + "Order": 22, + "Title": "Photo Colorizer", + "Slug": "photocolorizer-createimage", + "Description": "Colorize image. Each image costs 10 credits.", + "Language": "http", + "Code": "### Photo Colorizer\n# @name photoColorizer.createImage\nPOST {{host}}/v1/photo-colorizer\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Photo Colorizer image\u0022,\n \u0022assets\u0022: {\n \u0022image_file_path\u0022: \u0022api-assets/id/1234.png\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "photoColorizer.createImage", + "Setup": null + }, + { + "Order": 23, + "Title": "AI Talking Photo", + "Slug": "aitalkingphoto-createtalkingphoto", + "Description": "Create a talking photo from an image and audio or text input.", + "Language": "http", + "Code": "### AI Talking Photo\n# @name aiTalkingPhoto.createTalkingPhoto\nPOST {{host}}/v1/ai-talking-photo\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Talking Photo image\u0022,\n \u0022start_seconds\u0022: 0,\n \u0022end_seconds\u0022: 15,\n \u0022assets\u0022: {\n \u0022image_file_path\u0022: \u0022api-assets/id/1234.png\u0022,\n \u0022audio_file_path\u0022: \u0022api-assets/id/1234.mp3\u0022\n },\n \u0022style\u0022: {\n \u0022generation_mode\u0022: \u0022realistic\u0022,\n \u0022prompt\u0022: \u0022string\u0022\n },\n \u0022max_resolution\u0022: 1024\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "aiTalkingPhoto.createTalkingPhoto", + "Setup": null + }, + { + "Order": 24, + "Title": "Animation", + "Slug": "animation-createvideo", + "Description": "Create a Animation video. The estimated frame cost is calculated based on the \u0060fps\u0060 and \u0060end_seconds\u0060 input.", + "Language": "http", + "Code": "### Animation\n# @name animation.createVideo\nPOST {{host}}/v1/animation\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Animation video\u0022,\n \u0022fps\u0022: 12,\n \u0022end_seconds\u0022: 15,\n \u0022height\u0022: 960,\n \u0022width\u0022: 512,\n \u0022style\u0022: {\n \u0022art_style\u0022: \u0022Painterly Illustration\u0022,\n \u0022art_style_custom\u0022: \u0022string\u0022,\n \u0022camera_effect\u0022: \u0022Simple Zoom In\u0022,\n \u0022prompt_type\u0022: \u0022custom\u0022,\n \u0022prompt\u0022: \u0022Cyberpunk city\u0022,\n \u0022transition_speed\u0022: 5\n },\n \u0022assets\u0022: {\n \u0022audio_source\u0022: \u0022file\u0022,\n \u0022audio_file_path\u0022: \u0022api-assets/id/1234.mp3\u0022,\n \u0022youtube_url\u0022: \u0022https://example.com\u0022,\n \u0022image_file_path\u0022: \u0022api-assets/id/1234.png\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "animation.createVideo", + "Setup": null + }, + { + "Order": 25, + "Title": "Auto Subtitle Generator", + "Slug": "autosubtitlegenerator-createvideo", + "Description": "Automatically generate subtitles for your video in multiple languages.", + "Language": "http", + "Code": "### Auto Subtitle Generator\n# @name autoSubtitleGenerator.createVideo\nPOST {{host}}/v1/auto-subtitle-generator\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Auto Subtitle video\u0022,\n \u0022start_seconds\u0022: 0,\n \u0022end_seconds\u0022: 15,\n \u0022assets\u0022: {\n \u0022video_file_path\u0022: \u0022api-assets/id/1234.mp4\u0022\n },\n \u0022style\u0022: {\n \u0022template\u0022: \u0022karaoke\u0022,\n \u0022custom_config\u0022: {\n \u0022font\u0022: \u0022Noto Sans\u0022,\n \u0022font_size\u0022: 24,\n \u0022font_style\u0022: \u0022normal\u0022,\n \u0022text_color\u0022: \u0022#FFFFFF\u0022,\n \u0022highlighted_text_color\u0022: \u0022#FFD700\u0022,\n \u0022stroke_color\u0022: \u0022#000000\u0022,\n \u0022stroke_width\u0022: 1,\n \u0022vertical_position\u0022: \u0022bottom\u0022,\n \u0022horizontal_position\u0022: \u0022center\u0022\n }\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "autoSubtitleGenerator.createVideo", + "Setup": null + }, + { + "Order": 26, + "Title": "Face Swap Video", + "Slug": "faceswap-createvideo", + "Description": "**What this API does**\n\nCreate the same Face Swap you can make in the browser, but programmatically, so you can automate it, run it at scale, or connect it to your own app or workflow.\n \n**Good for**\n- Automation and batch processing \n- Adding face swap into apps, pipelines, or tools \n\n**How it works (3 steps)**\n1) Upload your inputs (video, image, or audio) with [Generate Upload URLs](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls) and copy the \u0060file_path\u0060. \n2) Send a request to create a face swap job with the basic fields. \n3) Check the job status until it\u0027s \u0060complete\u0060, then download the result from \u0060downloads\u0060.\n\n**Key options**\n- Inputs: usually a file, sometimes a YouTube link, depending on project type \n- Resolution: free users are limited to 576px; higher plans unlock HD and larger sizes \n- Extra fields: e.g. \u0060face_swap_mode\u0060, \u0060start_seconds\u0060/\u0060end_seconds\u0060, or a text prompt \n\n**Cost** \nCredits are only charged for the frames that actually render. You\u0027ll see an estimate when the job is queued, and the final total after it\u0027s done.\n\nFor detailed examples, see the [product page](https://magichour.ai/products/face-swap).", + "Language": "http", + "Code": "### Face Swap Video\n# @name faceSwap.createVideo\nPOST {{host}}/v1/face-swap\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Face Swap video\u0022,\n \u0022start_seconds\u0022: 0,\n \u0022end_seconds\u0022: 15,\n \u0022style\u0022: {\n \u0022version\u0022: \u0022default\u0022\n },\n \u0022assets\u0022: {\n \u0022face_swap_mode\u0022: \u0022all-faces\u0022,\n \u0022image_file_path\u0022: \u0022image/id/1234.png\u0022,\n \u0022face_mappings\u0022: [\n {\n \u0022original_face\u0022: \u0022api-assets/id/0-0.png\u0022,\n \u0022new_face\u0022: \u0022api-assets/id/1234.png\u0022\n }\n ],\n \u0022video_source\u0022: \u0022file\u0022,\n \u0022video_file_path\u0022: \u0022api-assets/id/1234.mp4\u0022,\n \u0022youtube_url\u0022: \u0022https://example.com\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "faceSwap.createVideo", + "Setup": null + }, + { + "Order": 27, + "Title": "Image-to-Video", + "Slug": "imagetovideo-createvideo", + "Description": "**What this API does**\n\nCreate the same Image To Video you can make in the browser, but programmatically, so you can automate it, run it at scale, or connect it to your own app or workflow.\n \n**Good for**\n- Automation and batch processing \n- Adding image to video into apps, pipelines, or tools \n\n**How it works (3 steps)**\n1) Upload your inputs (video, image, or audio) with [Generate Upload URLs](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls) and copy the \u0060file_path\u0060. \n2) Send a request to create a image to video job with the basic fields. \n3) Check the job status until it\u0027s \u0060complete\u0060, then download the result from \u0060downloads\u0060.\n\n**Key options**\n- Inputs: usually a file, sometimes a YouTube link, depending on project type \n- Resolution: free users are limited to 576px; higher plans unlock HD and larger sizes \n- Extra fields: e.g. \u0060face_swap_mode\u0060, \u0060start_seconds\u0060/\u0060end_seconds\u0060, or a text prompt \n\n**Cost** \nCredits are only charged for the frames that actually render. You\u0027ll see an estimate when the job is queued, and the final total after it\u0027s done.\n\nFor detailed examples, see the [product page](https://magichour.ai/products/image-to-video).", + "Language": "http", + "Code": "### Image-to-Video\n# @name imageToVideo.createVideo\nPOST {{host}}/v1/image-to-video\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Image To Video video\u0022,\n \u0022end_seconds\u0022: 5,\n \u0022model\u0022: \u0022kling-3.0\u0022,\n \u0022resolution\u0022: \u0022720p\u0022,\n \u0022audio\u0022: true,\n \u0022style\u0022: {\n \u0022prompt\u0022: \u0022a dog running\u0022\n },\n \u0022assets\u0022: {\n \u0022image_file_path\u0022: \u0022api-assets/id/1234.png\u0022,\n \u0022end_image_file_path\u0022: \u0022api-assets/id/1234.png\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "imageToVideo.createVideo", + "Setup": null + }, + { + "Order": 28, + "Title": "Lip Sync", + "Slug": "lipsync-createvideo", + "Description": "**What this API does**\n\nCreate the same Lip Sync you can make in the browser, but programmatically, so you can automate it, run it at scale, or connect it to your own app or workflow.\n \n**Good for**\n- Automation and batch processing \n- Adding lip sync into apps, pipelines, or tools \n\n**How it works (3 steps)**\n1) Upload your inputs (video, image, or audio) with [Generate Upload URLs](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls) and copy the \u0060file_path\u0060. \n2) Send a request to create a lip sync job with the basic fields. \n3) Check the job status until it\u0027s \u0060complete\u0060, then download the result from \u0060downloads\u0060.\n\n**Key options**\n- Inputs: usually a file, sometimes a YouTube link, depending on project type \n- Resolution: free users are limited to 576px; higher plans unlock HD and larger sizes \n- Extra fields: e.g. \u0060face_swap_mode\u0060, \u0060start_seconds\u0060/\u0060end_seconds\u0060, or a text prompt \n\n**Cost** \nCredits are only charged for the frames that actually render. You\u0027ll see an estimate when the job is queued, and the final total after it\u0027s done.\n\nFor detailed examples, see the [product page](https://magichour.ai/products/lip-sync).", + "Language": "http", + "Code": "### Lip Sync\n# @name lipSync.createVideo\nPOST {{host}}/v1/lip-sync\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Lip Sync video\u0022,\n \u0022start_seconds\u0022: 0,\n \u0022end_seconds\u0022: 15,\n \u0022max_fps_limit\u0022: 12,\n \u0022assets\u0022: {\n \u0022audio_file_path\u0022: \u0022api-assets/id/1234.mp3\u0022,\n \u0022video_source\u0022: \u0022file\u0022,\n \u0022video_file_path\u0022: \u0022api-assets/id/1234.mp4\u0022,\n \u0022youtube_url\u0022: \u0022https://example.com\u0022\n },\n \u0022style\u0022: {\n \u0022generation_mode\u0022: \u0022lite\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "lipSync.createVideo", + "Setup": null + }, + { + "Order": 29, + "Title": "Text-to-Video", + "Slug": "texttovideo-createvideo", + "Description": "**What this API does**\n\nCreate the same Text To Video you can make in the browser, but programmatically, so you can automate it, run it at scale, or connect it to your own app or workflow.\n \n**Good for**\n- Automation and batch processing \n- Adding text to video into apps, pipelines, or tools \n\n**How it works (3 steps)**\n1) Upload your inputs (video, image, or audio) with [Generate Upload URLs](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls) and copy the \u0060file_path\u0060. \n2) Send a request to create a text to video job with the basic fields. \n3) Check the job status until it\u0027s \u0060complete\u0060, then download the result from \u0060downloads\u0060.\n\n**Key options**\n- Inputs: usually a file, sometimes a YouTube link, depending on project type \n- Resolution: free users are limited to 576px; higher plans unlock HD and larger sizes \n- Extra fields: e.g. \u0060face_swap_mode\u0060, \u0060start_seconds\u0060/\u0060end_seconds\u0060, or a text prompt \n\n**Cost** \nCredits are only charged for the frames that actually render. You\u0027ll see an estimate when the job is queued, and the final total after it\u0027s done.\n\nFor detailed examples, see the [product page](https://magichour.ai/products/text-to-video).", + "Language": "http", + "Code": "### Text-to-Video\n# @name textToVideo.createVideo\nPOST {{host}}/v1/text-to-video\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Text To Video video\u0022,\n \u0022end_seconds\u0022: 5,\n \u0022aspect_ratio\u0022: \u002216:9\u0022,\n \u0022resolution\u0022: \u0022720p\u0022,\n \u0022model\u0022: \u0022kling-3.0\u0022,\n \u0022audio\u0022: true,\n \u0022style\u0022: {\n \u0022prompt\u0022: \u0022a dog running\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "textToVideo.createVideo", + "Setup": null + }, + { + "Order": 30, + "Title": "Delete video", + "Slug": "videoprojects-delete", + "Description": "Permanently delete the rendered video. This action is not reversible, please be sure before deleting.", + "Language": "http", + "Code": "### Delete video\n# @name videoProjects.delete\nDELETE {{host}}/v1/video-projects/{{id}}\nAuthorization: Bearer {{token}}\nAccept: application/json\n\n## Responses\n# 204\n# Description: 204\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "videoProjects.delete", + "Setup": null + }, + { + "Order": 31, + "Title": "Get video details", + "Slug": "videoprojects-getdetails", + "Description": "Check the progress of a video project. The \u0060downloads\u0060 field is populated after a successful render.\n \n**Statuses**\n- \u0060queued\u0060 \u2014 waiting to start\n- \u0060rendering\u0060 \u2014 in progress\n- \u0060complete\u0060 \u2014 ready; see \u0060downloads\u0060\n- \u0060error\u0060 \u2014 a failure occurred (see \u0060error\u0060)\n- \u0060canceled\u0060 \u2014 user canceled\n- \u0060draft\u0060 \u2014 not used", + "Language": "http", + "Code": "### Get video details\n# @name videoProjects.getDetails\nGET {{host}}/v1/video-projects/{{id}}\nAuthorization: Bearer {{token}}\nAccept: application/json\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json", + "Format": "http", + "OperationId": "videoProjects.getDetails", + "Setup": null + }, + { + "Order": 32, + "Title": "Video-to-Video", + "Slug": "videotovideo-createvideo", + "Description": "**What this API does**\n\nCreate the same Video To Video you can make in the browser, but programmatically, so you can automate it, run it at scale, or connect it to your own app or workflow.\n \n**Good for**\n- Automation and batch processing \n- Adding video to video into apps, pipelines, or tools \n\n**How it works (3 steps)**\n1) Upload your inputs (video, image, or audio) with [Generate Upload URLs](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls) and copy the \u0060file_path\u0060. \n2) Send a request to create a video to video job with the basic fields. \n3) Check the job status until it\u0027s \u0060complete\u0060, then download the result from \u0060downloads\u0060.\n\n**Key options**\n- Inputs: usually a file, sometimes a YouTube link, depending on project type \n- Resolution: free users are limited to 576px; higher plans unlock HD and larger sizes \n- Extra fields: e.g. \u0060face_swap_mode\u0060, \u0060start_seconds\u0060/\u0060end_seconds\u0060, or a text prompt \n\n**Cost** \nCredits are only charged for the frames that actually render. You\u0027ll see an estimate when the job is queued, and the final total after it\u0027s done.\n\nFor detailed examples, see the [product page](https://magichour.ai/products/video-to-video).", + "Language": "http", + "Code": "### Video-to-Video\n# @name videoToVideo.createVideo\nPOST {{host}}/v1/video-to-video\nAuthorization: Bearer {{token}}\nContent-Type: application/json\nAccept: application/json\n\n{\n \u0022name\u0022: \u0022My Video To Video video\u0022,\n \u0022start_seconds\u0022: 0,\n \u0022end_seconds\u0022: 15,\n \u0022fps_resolution\u0022: \u0022HALF\u0022,\n \u0022style\u0022: {\n \u0022art_style\u0022: \u0022Minecraft\u0022,\n \u0022version\u0022: \u0022default\u0022,\n \u0022prompt_type\u0022: \u0022default\u0022,\n \u0022prompt\u0022: \u0022string\u0022,\n \u0022model\u0022: \u0022default\u0022\n },\n \u0022assets\u0022: {\n \u0022video_source\u0022: \u0022file\u0022,\n \u0022video_file_path\u0022: \u0022api-assets/id/1234.mp4\u0022,\n \u0022youtube_url\u0022: \u0022https://example.com\u0022\n }\n}\n\n## Responses\n# 200\n# Description: Success\n# Content-Type: application/json\n# 400\n# Description: Invalid Request\n# Content-Type: application/json\n# 401\n# Description: Unauthorized\n# Content-Type: application/json\n# 402\n# Description: Payment Required\n# Content-Type: application/json\n# 404\n# Description: Not Found\n# Content-Type: application/json\n# 422\n# Description: Unprocessable Entity\n# Content-Type: application/json", + "Format": "http", + "OperationId": "videoToVideo.createVideo", + "Setup": null + } + ] +} \ No newline at end of file