magic_hour 0.33.1__py3-none-any.whl → 0.34.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of magic_hour might be problematic. Click here for more details.
- magic_hour/environment.py +1 -1
- magic_hour/resources/v1/ai_clothes_changer/README.md +5 -5
- magic_hour/resources/v1/ai_clothes_changer/client.py +4 -4
- magic_hour/resources/v1/ai_face_editor/README.md +2 -2
- magic_hour/resources/v1/ai_face_editor/client.py +2 -2
- magic_hour/resources/v1/ai_gif_generator/README.md +2 -2
- magic_hour/resources/v1/ai_gif_generator/client.py +2 -2
- magic_hour/resources/v1/ai_headshot_generator/README.md +3 -3
- magic_hour/resources/v1/ai_headshot_generator/client.py +2 -2
- magic_hour/resources/v1/ai_image_editor/README.md +2 -2
- magic_hour/resources/v1/ai_image_editor/client.py +2 -2
- magic_hour/resources/v1/ai_image_generator/README.md +5 -5
- magic_hour/resources/v1/ai_image_generator/client.py +8 -8
- magic_hour/resources/v1/ai_image_upscaler/README.md +3 -3
- magic_hour/resources/v1/ai_image_upscaler/client.py +8 -4
- magic_hour/resources/v1/ai_meme_generator/README.md +1 -1
- magic_hour/resources/v1/ai_photo_editor/README.md +2 -2
- magic_hour/resources/v1/ai_photo_editor/client.py +2 -2
- magic_hour/resources/v1/ai_qr_code_generator/README.md +2 -2
- magic_hour/resources/v1/ai_qr_code_generator/client.py +2 -2
- magic_hour/resources/v1/ai_talking_photo/README.md +2 -2
- magic_hour/resources/v1/ai_talking_photo/client.py +2 -2
- magic_hour/resources/v1/animation/README.md +8 -8
- magic_hour/resources/v1/animation/client.py +8 -8
- magic_hour/resources/v1/auto_subtitle_generator/README.md +4 -4
- magic_hour/resources/v1/auto_subtitle_generator/client.py +6 -6
- magic_hour/resources/v1/face_detection/README.md +10 -6
- magic_hour/resources/v1/face_detection/client.py +12 -4
- magic_hour/resources/v1/face_swap/README.md +4 -4
- magic_hour/resources/v1/face_swap/client.py +6 -6
- magic_hour/resources/v1/face_swap_photo/README.md +2 -2
- magic_hour/resources/v1/face_swap_photo/client.py +2 -2
- magic_hour/resources/v1/files/upload_urls/README.md +7 -6
- magic_hour/resources/v1/files/upload_urls/client.py +14 -12
- magic_hour/resources/v1/image_background_remover/README.md +2 -2
- magic_hour/resources/v1/image_background_remover/client.py +2 -2
- magic_hour/resources/v1/image_projects/README.md +8 -8
- magic_hour/resources/v1/image_projects/client.py +10 -10
- magic_hour/resources/v1/image_to_video/README.md +5 -3
- magic_hour/resources/v1/image_to_video/client.py +10 -4
- magic_hour/resources/v1/lip_sync/README.md +4 -4
- magic_hour/resources/v1/lip_sync/client.py +6 -6
- magic_hour/resources/v1/photo_colorizer/README.md +2 -2
- magic_hour/resources/v1/photo_colorizer/client.py +2 -2
- magic_hour/resources/v1/text_to_video/README.md +6 -4
- magic_hour/resources/v1/text_to_video/client.py +18 -4
- magic_hour/resources/v1/video_projects/README.md +7 -7
- magic_hour/resources/v1/video_projects/client.py +8 -8
- magic_hour/resources/v1/video_to_video/README.md +9 -9
- magic_hour/resources/v1/video_to_video/client.py +10 -10
- magic_hour/types/models/v1_face_detection_create_response.py +1 -1
- magic_hour/types/models/v1_face_detection_get_response.py +1 -1
- magic_hour/types/models/v1_files_upload_urls_create_response.py +3 -0
- magic_hour/types/models/v1_video_projects_get_response.py +2 -2
- magic_hour/types/params/v1_ai_clothes_changer_create_body.py +1 -1
- magic_hour/types/params/v1_ai_clothes_changer_create_body_assets.py +15 -2
- magic_hour/types/params/v1_ai_face_editor_create_body.py +1 -1
- magic_hour/types/params/v1_ai_face_editor_create_body_assets.py +6 -1
- magic_hour/types/params/v1_ai_face_editor_create_body_style.py +44 -47
- magic_hour/types/params/v1_ai_gif_generator_create_body.py +1 -1
- magic_hour/types/params/v1_ai_headshot_generator_create_body.py +1 -1
- magic_hour/types/params/v1_ai_headshot_generator_create_body_assets.py +6 -1
- magic_hour/types/params/v1_ai_headshot_generator_create_body_style.py +1 -1
- magic_hour/types/params/v1_ai_image_editor_create_body.py +1 -1
- magic_hour/types/params/v1_ai_image_editor_create_body_assets.py +6 -1
- magic_hour/types/params/v1_ai_image_generator_create_body.py +8 -2
- magic_hour/types/params/v1_ai_image_generator_create_body_style.py +2 -2
- magic_hour/types/params/v1_ai_image_upscaler_create_body.py +4 -2
- magic_hour/types/params/v1_ai_image_upscaler_create_body_assets.py +6 -1
- magic_hour/types/params/v1_ai_photo_editor_create_body.py +1 -1
- magic_hour/types/params/v1_ai_photo_editor_create_body_assets.py +6 -1
- magic_hour/types/params/v1_ai_qr_code_generator_create_body.py +1 -1
- magic_hour/types/params/v1_ai_talking_photo_create_body.py +1 -1
- magic_hour/types/params/v1_ai_talking_photo_create_body_assets.py +12 -2
- magic_hour/types/params/v1_animation_create_body.py +2 -2
- magic_hour/types/params/v1_animation_create_body_assets.py +12 -2
- magic_hour/types/params/v1_animation_create_body_style.py +10 -7
- magic_hour/types/params/v1_auto_subtitle_generator_create_body.py +3 -3
- magic_hour/types/params/v1_auto_subtitle_generator_create_body_assets.py +6 -1
- magic_hour/types/params/v1_face_detection_create_body_assets.py +6 -1
- magic_hour/types/params/v1_face_swap_create_body.py +3 -3
- magic_hour/types/params/v1_face_swap_create_body_assets.py +12 -2
- magic_hour/types/params/v1_face_swap_create_body_assets_face_mappings_item.py +6 -1
- magic_hour/types/params/v1_face_swap_photo_create_body.py +1 -1
- magic_hour/types/params/v1_face_swap_photo_create_body_assets.py +12 -2
- magic_hour/types/params/v1_face_swap_photo_create_body_assets_face_mappings_item.py +6 -1
- magic_hour/types/params/v1_files_upload_urls_create_body.py +3 -0
- magic_hour/types/params/v1_files_upload_urls_create_body_items_item.py +2 -2
- magic_hour/types/params/v1_image_background_remover_create_body.py +1 -1
- magic_hour/types/params/v1_image_background_remover_create_body_assets.py +12 -2
- magic_hour/types/params/v1_image_to_video_create_body.py +4 -2
- magic_hour/types/params/v1_image_to_video_create_body_assets.py +6 -1
- magic_hour/types/params/v1_lip_sync_create_body.py +3 -3
- magic_hour/types/params/v1_lip_sync_create_body_assets.py +12 -2
- magic_hour/types/params/v1_photo_colorizer_create_body.py +1 -1
- magic_hour/types/params/v1_photo_colorizer_create_body_assets.py +6 -1
- magic_hour/types/params/v1_text_to_video_create_body.py +8 -2
- magic_hour/types/params/v1_video_to_video_create_body.py +3 -3
- magic_hour/types/params/v1_video_to_video_create_body_assets.py +6 -1
- {magic_hour-0.33.1.dist-info → magic_hour-0.34.0.dist-info}/METADATA +1 -1
- {magic_hour-0.33.1.dist-info → magic_hour-0.34.0.dist-info}/RECORD +103 -103
- {magic_hour-0.33.1.dist-info → magic_hour-0.34.0.dist-info}/LICENSE +0 -0
- {magic_hour-0.33.1.dist-info → magic_hour-0.34.0.dist-info}/WHEEL +0 -0
|
@@ -55,7 +55,7 @@ class LipSyncClient:
|
|
|
55
55
|
|
|
56
56
|
See our [pricing page](https://magichour.ai/pricing) for more details.
|
|
57
57
|
max_fps_limit: Defines the maximum FPS (frames per second) for the output video. If the input video's FPS is lower than this limit, the output video will retain the input FPS. This is useful for reducing unnecessary frame usage in scenarios where high FPS is not required.
|
|
58
|
-
name: The name of video
|
|
58
|
+
name: The name of video. This value is mainly used for your own identification of the video.
|
|
59
59
|
width: Used to determine the dimensions of the output video.
|
|
60
60
|
|
|
61
61
|
* If width is provided, height will also be required. The larger value between width and height will be used to determine the maximum output resolution while maintaining the original aspect ratio.
|
|
@@ -65,8 +65,8 @@ class LipSyncClient:
|
|
|
65
65
|
|
|
66
66
|
See our [pricing page](https://magichour.ai/pricing) for more details.
|
|
67
67
|
assets: Provide the assets for lip-sync. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
|
|
68
|
-
end_seconds: The end time of the input video in seconds
|
|
69
|
-
start_seconds: The start time of the input video in seconds
|
|
68
|
+
end_seconds: The end time of the input video in seconds. This value is used to trim the input video. The value must be greater than 0.1, and more than the start_seconds.
|
|
69
|
+
start_seconds: The start time of the input video in seconds. This value is used to trim the input video. The value must be greater than 0.
|
|
70
70
|
request_options: Additional options to customize the HTTP request
|
|
71
71
|
|
|
72
72
|
Returns:
|
|
@@ -159,7 +159,7 @@ class AsyncLipSyncClient:
|
|
|
159
159
|
|
|
160
160
|
See our [pricing page](https://magichour.ai/pricing) for more details.
|
|
161
161
|
max_fps_limit: Defines the maximum FPS (frames per second) for the output video. If the input video's FPS is lower than this limit, the output video will retain the input FPS. This is useful for reducing unnecessary frame usage in scenarios where high FPS is not required.
|
|
162
|
-
name: The name of video
|
|
162
|
+
name: The name of video. This value is mainly used for your own identification of the video.
|
|
163
163
|
width: Used to determine the dimensions of the output video.
|
|
164
164
|
|
|
165
165
|
* If width is provided, height will also be required. The larger value between width and height will be used to determine the maximum output resolution while maintaining the original aspect ratio.
|
|
@@ -169,8 +169,8 @@ class AsyncLipSyncClient:
|
|
|
169
169
|
|
|
170
170
|
See our [pricing page](https://magichour.ai/pricing) for more details.
|
|
171
171
|
assets: Provide the assets for lip-sync. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
|
|
172
|
-
end_seconds: The end time of the input video in seconds
|
|
173
|
-
start_seconds: The start time of the input video in seconds
|
|
172
|
+
end_seconds: The end time of the input video in seconds. This value is used to trim the input video. The value must be greater than 0.1, and more than the start_seconds.
|
|
173
|
+
start_seconds: The start time of the input video in seconds. This value is used to trim the input video. The value must be greater than 0.
|
|
174
174
|
request_options: Additional options to customize the HTTP request
|
|
175
175
|
|
|
176
176
|
Returns:
|
|
@@ -10,7 +10,7 @@ Colorize image. Each image costs 5 credits.
|
|
|
10
10
|
| Parameter | Required | Description | Example |
|
|
11
11
|
|-----------|:--------:|-------------|--------|
|
|
12
12
|
| `assets` | ✓ | Provide the assets for photo colorization | `{"image_file_path": "api-assets/id/1234.png"}` |
|
|
13
|
-
| `name` | ✗ | The name of image | `"Photo Colorizer image"` |
|
|
13
|
+
| `name` | ✗ | The name of image. This value is mainly used for your own identification of the image. | `"Photo Colorizer image"` |
|
|
14
14
|
|
|
15
15
|
#### Synchronous Client
|
|
16
16
|
|
|
@@ -44,4 +44,4 @@ res = await client.v1.photo_colorizer.create(
|
|
|
44
44
|
[V1PhotoColorizerCreateResponse](/magic_hour/types/models/v1_photo_colorizer_create_response.py)
|
|
45
45
|
|
|
46
46
|
##### Example
|
|
47
|
-
`{"credits_charged": 5, "frame_cost": 5, "id": "
|
|
47
|
+
`{"credits_charged": 5, "frame_cost": 5, "id": "cuid-example"}`
|
|
@@ -32,7 +32,7 @@ class PhotoColorizerClient:
|
|
|
32
32
|
POST /v1/photo-colorizer
|
|
33
33
|
|
|
34
34
|
Args:
|
|
35
|
-
name: The name of image
|
|
35
|
+
name: The name of image. This value is mainly used for your own identification of the image.
|
|
36
36
|
assets: Provide the assets for photo colorization
|
|
37
37
|
request_options: Additional options to customize the HTTP request
|
|
38
38
|
|
|
@@ -86,7 +86,7 @@ class AsyncPhotoColorizerClient:
|
|
|
86
86
|
POST /v1/photo-colorizer
|
|
87
87
|
|
|
88
88
|
Args:
|
|
89
|
-
name: The name of image
|
|
89
|
+
name: The name of image. This value is mainly used for your own identification of the image.
|
|
90
90
|
assets: Provide the assets for photo colorization
|
|
91
91
|
request_options: Additional options to customize the HTTP request
|
|
92
92
|
|
|
@@ -12,11 +12,11 @@ Get more information about this mode at our [product page](https://magichour.ai/
|
|
|
12
12
|
|
|
13
13
|
| Parameter | Required | Description | Example |
|
|
14
14
|
|-----------|:--------:|-------------|--------|
|
|
15
|
-
| `end_seconds` | ✓ | The total duration of the output video in seconds. | `5.0` |
|
|
15
|
+
| `end_seconds` | ✓ | The total duration of the output video in seconds. The value must be greater than or equal to 5 seconds and less than or equal to 60 seconds. Note: For 480p resolution, the value must be either 5 or 10. | `5.0` |
|
|
16
16
|
| `orientation` | ✓ | Determines the orientation of the output video | `"landscape"` |
|
|
17
17
|
| `style` | ✓ | | `{"prompt": "a dog running"}` |
|
|
18
|
-
| `name` | ✗ | The name of video | `"Text To Video video"` |
|
|
19
|
-
| `resolution` | ✗ | Controls the output video resolution. Defaults to `720p` if not specified. **Options:** - `480p` - Supports only 5 or 10 second videos. Output: 24fps. Cost: 120 credits per 5 seconds. - `720p` - Supports videos between 5-60 seconds. Output: 30fps. Cost: 300 credits per 5 seconds. - `1080p` - Supports videos between 5-60 seconds. Output: 30fps. Cost: 600 credits per 5 seconds.
|
|
18
|
+
| `name` | ✗ | The name of video. This value is mainly used for your own identification of the video. | `"Text To Video video"` |
|
|
19
|
+
| `resolution` | ✗ | Controls the output video resolution. Defaults to `720p` if not specified. 480p and 720p are available on Creator, Pro, or Business tiers. However, 1080p require Pro or Business tier. **Options:** - `480p` - Supports only 5 or 10 second videos. Output: 24fps. Cost: 120 credits per 5 seconds. - `720p` - Supports videos between 5-60 seconds. Output: 30fps. Cost: 300 credits per 5 seconds. - `1080p` - Supports videos between 5-60 seconds. Output: 30fps. Cost: 600 credits per 5 seconds. | `"720p"` |
|
|
20
20
|
|
|
21
21
|
#### Synchronous Client
|
|
22
22
|
|
|
@@ -30,6 +30,7 @@ res = client.v1.text_to_video.create(
|
|
|
30
30
|
orientation="landscape",
|
|
31
31
|
style={"prompt": "a dog running"},
|
|
32
32
|
name="Text To Video video",
|
|
33
|
+
resolution="720p",
|
|
33
34
|
)
|
|
34
35
|
|
|
35
36
|
```
|
|
@@ -46,6 +47,7 @@ res = await client.v1.text_to_video.create(
|
|
|
46
47
|
orientation="landscape",
|
|
47
48
|
style={"prompt": "a dog running"},
|
|
48
49
|
name="Text To Video video",
|
|
50
|
+
resolution="720p",
|
|
49
51
|
)
|
|
50
52
|
|
|
51
53
|
```
|
|
@@ -56,4 +58,4 @@ res = await client.v1.text_to_video.create(
|
|
|
56
58
|
[V1TextToVideoCreateResponse](/magic_hour/types/models/v1_text_to_video_create_response.py)
|
|
57
59
|
|
|
58
60
|
##### Example
|
|
59
|
-
`{"credits_charged": 450, "estimated_frame_cost": 450, "id": "
|
|
61
|
+
`{"credits_charged": 450, "estimated_frame_cost": 450, "id": "cuid-example"}`
|
|
@@ -42,14 +42,20 @@ class TextToVideoClient:
|
|
|
42
42
|
POST /v1/text-to-video
|
|
43
43
|
|
|
44
44
|
Args:
|
|
45
|
-
name: The name of video
|
|
45
|
+
name: The name of video. This value is mainly used for your own identification of the video.
|
|
46
46
|
resolution: Controls the output video resolution. Defaults to `720p` if not specified.
|
|
47
47
|
|
|
48
|
+
480p and 720p are available on Creator, Pro, or Business tiers. However, 1080p require Pro or Business tier.
|
|
49
|
+
|
|
48
50
|
**Options:**
|
|
49
51
|
- `480p` - Supports only 5 or 10 second videos. Output: 24fps. Cost: 120 credits per 5 seconds.
|
|
50
52
|
- `720p` - Supports videos between 5-60 seconds. Output: 30fps. Cost: 300 credits per 5 seconds.
|
|
51
|
-
- `1080p` - Supports videos between 5-60 seconds. Output: 30fps. Cost: 600 credits per 5 seconds.
|
|
53
|
+
- `1080p` - Supports videos between 5-60 seconds. Output: 30fps. Cost: 600 credits per 5 seconds.
|
|
52
54
|
end_seconds: The total duration of the output video in seconds.
|
|
55
|
+
|
|
56
|
+
The value must be greater than or equal to 5 seconds and less than or equal to 60 seconds.
|
|
57
|
+
|
|
58
|
+
Note: For 480p resolution, the value must be either 5 or 10.
|
|
53
59
|
orientation: Determines the orientation of the output video
|
|
54
60
|
style: V1TextToVideoCreateBodyStyle
|
|
55
61
|
request_options: Additional options to customize the HTTP request
|
|
@@ -68,6 +74,7 @@ class TextToVideoClient:
|
|
|
68
74
|
orientation="landscape",
|
|
69
75
|
style={"prompt": "a dog running"},
|
|
70
76
|
name="Text To Video video",
|
|
77
|
+
resolution="720p",
|
|
71
78
|
)
|
|
72
79
|
```
|
|
73
80
|
"""
|
|
@@ -121,14 +128,20 @@ class AsyncTextToVideoClient:
|
|
|
121
128
|
POST /v1/text-to-video
|
|
122
129
|
|
|
123
130
|
Args:
|
|
124
|
-
name: The name of video
|
|
131
|
+
name: The name of video. This value is mainly used for your own identification of the video.
|
|
125
132
|
resolution: Controls the output video resolution. Defaults to `720p` if not specified.
|
|
126
133
|
|
|
134
|
+
480p and 720p are available on Creator, Pro, or Business tiers. However, 1080p require Pro or Business tier.
|
|
135
|
+
|
|
127
136
|
**Options:**
|
|
128
137
|
- `480p` - Supports only 5 or 10 second videos. Output: 24fps. Cost: 120 credits per 5 seconds.
|
|
129
138
|
- `720p` - Supports videos between 5-60 seconds. Output: 30fps. Cost: 300 credits per 5 seconds.
|
|
130
|
-
- `1080p` - Supports videos between 5-60 seconds. Output: 30fps. Cost: 600 credits per 5 seconds.
|
|
139
|
+
- `1080p` - Supports videos between 5-60 seconds. Output: 30fps. Cost: 600 credits per 5 seconds.
|
|
131
140
|
end_seconds: The total duration of the output video in seconds.
|
|
141
|
+
|
|
142
|
+
The value must be greater than or equal to 5 seconds and less than or equal to 60 seconds.
|
|
143
|
+
|
|
144
|
+
Note: For 480p resolution, the value must be either 5 or 10.
|
|
132
145
|
orientation: Determines the orientation of the output video
|
|
133
146
|
style: V1TextToVideoCreateBodyStyle
|
|
134
147
|
request_options: Additional options to customize the HTTP request
|
|
@@ -147,6 +160,7 @@ class AsyncTextToVideoClient:
|
|
|
147
160
|
orientation="landscape",
|
|
148
161
|
style={"prompt": "a dog running"},
|
|
149
162
|
name="Text To Video video",
|
|
163
|
+
resolution="720p",
|
|
150
164
|
)
|
|
151
165
|
```
|
|
152
166
|
"""
|
|
@@ -9,7 +9,7 @@ Permanently delete the rendered video. This action is not reversible, please be
|
|
|
9
9
|
|
|
10
10
|
| Parameter | Required | Description | Example |
|
|
11
11
|
|-----------|:--------:|-------------|--------|
|
|
12
|
-
| `id` | ✓ |
|
|
12
|
+
| `id` | ✓ | Unique ID of the video project. This value is returned by all of the POST APIs that create a video. | `"cuid-example"` |
|
|
13
13
|
|
|
14
14
|
#### Synchronous Client
|
|
15
15
|
|
|
@@ -18,7 +18,7 @@ from magic_hour import Client
|
|
|
18
18
|
from os import getenv
|
|
19
19
|
|
|
20
20
|
client = Client(token=getenv("API_TOKEN"))
|
|
21
|
-
res = client.v1.video_projects.delete(id="
|
|
21
|
+
res = client.v1.video_projects.delete(id="cuid-example")
|
|
22
22
|
|
|
23
23
|
```
|
|
24
24
|
|
|
@@ -29,7 +29,7 @@ from magic_hour import AsyncClient
|
|
|
29
29
|
from os import getenv
|
|
30
30
|
|
|
31
31
|
client = AsyncClient(token=getenv("API_TOKEN"))
|
|
32
|
-
res = await client.v1.video_projects.delete(id="
|
|
32
|
+
res = await client.v1.video_projects.delete(id="cuid-example")
|
|
33
33
|
|
|
34
34
|
```
|
|
35
35
|
|
|
@@ -52,7 +52,7 @@ The video can be one of the following status
|
|
|
52
52
|
|
|
53
53
|
| Parameter | Required | Description | Example |
|
|
54
54
|
|-----------|:--------:|-------------|--------|
|
|
55
|
-
| `id` | ✓ |
|
|
55
|
+
| `id` | ✓ | Unique ID of the video project. This value is returned by all of the POST APIs that create a video. | `"cuid-example"` |
|
|
56
56
|
|
|
57
57
|
#### Synchronous Client
|
|
58
58
|
|
|
@@ -61,7 +61,7 @@ from magic_hour import Client
|
|
|
61
61
|
from os import getenv
|
|
62
62
|
|
|
63
63
|
client = Client(token=getenv("API_TOKEN"))
|
|
64
|
-
res = client.v1.video_projects.get(id="
|
|
64
|
+
res = client.v1.video_projects.get(id="cuid-example")
|
|
65
65
|
|
|
66
66
|
```
|
|
67
67
|
|
|
@@ -72,7 +72,7 @@ from magic_hour import AsyncClient
|
|
|
72
72
|
from os import getenv
|
|
73
73
|
|
|
74
74
|
client = AsyncClient(token=getenv("API_TOKEN"))
|
|
75
|
-
res = await client.v1.video_projects.get(id="
|
|
75
|
+
res = await client.v1.video_projects.get(id="cuid-example")
|
|
76
76
|
|
|
77
77
|
```
|
|
78
78
|
|
|
@@ -82,4 +82,4 @@ res = await client.v1.video_projects.get(id="cm6pvghix03bvyz0zwash6noj")
|
|
|
82
82
|
[V1VideoProjectsGetResponse](/magic_hour/types/models/v1_video_projects_get_response.py)
|
|
83
83
|
|
|
84
84
|
##### Example
|
|
85
|
-
`{"created_at": "1970-01-01T00:00:00", "credits_charged": 450, "download": {"expires_at": "2024-10-19T05:16:19.027Z", "url": "https://videos.magichour.ai/id/output.mp4"}, "downloads": [{"expires_at": "2024-10-19T05:16:19.027Z", "url": "https://videos.magichour.ai/id/output.mp4"}], "enabled": True, "end_seconds": 15.0, "error": {"code": "no_source_face", "message": "Please use an image with a detectable face"}, "fps": 30.0, "height": 960, "id": "
|
|
85
|
+
`{"created_at": "1970-01-01T00:00:00", "credits_charged": 450, "download": {"expires_at": "2024-10-19T05:16:19.027Z", "url": "https://videos.magichour.ai/id/output.mp4"}, "downloads": [{"expires_at": "2024-10-19T05:16:19.027Z", "url": "https://videos.magichour.ai/id/output.mp4"}], "enabled": True, "end_seconds": 15.0, "error": {"code": "no_source_face", "message": "Please use an image with a detectable face"}, "fps": 30.0, "height": 960, "id": "cuid-example", "name": "Example Name", "start_seconds": 0.0, "status": "complete", "total_frame_cost": 450, "type_": "FACE_SWAP", "width": 512}`
|
|
@@ -24,7 +24,7 @@ class VideoProjectsClient:
|
|
|
24
24
|
DELETE /v1/video-projects/{id}
|
|
25
25
|
|
|
26
26
|
Args:
|
|
27
|
-
id:
|
|
27
|
+
id: Unique ID of the video project. This value is returned by all of the POST APIs that create a video.
|
|
28
28
|
request_options: Additional options to customize the HTTP request
|
|
29
29
|
|
|
30
30
|
Returns:
|
|
@@ -36,7 +36,7 @@ class VideoProjectsClient:
|
|
|
36
36
|
|
|
37
37
|
Examples:
|
|
38
38
|
```py
|
|
39
|
-
client.v1.video_projects.delete(id="
|
|
39
|
+
client.v1.video_projects.delete(id="cuid-example")
|
|
40
40
|
```
|
|
41
41
|
"""
|
|
42
42
|
self._base_client.request(
|
|
@@ -67,7 +67,7 @@ class VideoProjectsClient:
|
|
|
67
67
|
GET /v1/video-projects/{id}
|
|
68
68
|
|
|
69
69
|
Args:
|
|
70
|
-
id:
|
|
70
|
+
id: Unique ID of the video project. This value is returned by all of the POST APIs that create a video.
|
|
71
71
|
request_options: Additional options to customize the HTTP request
|
|
72
72
|
|
|
73
73
|
Returns:
|
|
@@ -79,7 +79,7 @@ class VideoProjectsClient:
|
|
|
79
79
|
|
|
80
80
|
Examples:
|
|
81
81
|
```py
|
|
82
|
-
client.v1.video_projects.get(id="
|
|
82
|
+
client.v1.video_projects.get(id="cuid-example")
|
|
83
83
|
```
|
|
84
84
|
"""
|
|
85
85
|
return self._base_client.request(
|
|
@@ -106,7 +106,7 @@ class AsyncVideoProjectsClient:
|
|
|
106
106
|
DELETE /v1/video-projects/{id}
|
|
107
107
|
|
|
108
108
|
Args:
|
|
109
|
-
id:
|
|
109
|
+
id: Unique ID of the video project. This value is returned by all of the POST APIs that create a video.
|
|
110
110
|
request_options: Additional options to customize the HTTP request
|
|
111
111
|
|
|
112
112
|
Returns:
|
|
@@ -118,7 +118,7 @@ class AsyncVideoProjectsClient:
|
|
|
118
118
|
|
|
119
119
|
Examples:
|
|
120
120
|
```py
|
|
121
|
-
await client.v1.video_projects.delete(id="
|
|
121
|
+
await client.v1.video_projects.delete(id="cuid-example")
|
|
122
122
|
```
|
|
123
123
|
"""
|
|
124
124
|
await self._base_client.request(
|
|
@@ -149,7 +149,7 @@ class AsyncVideoProjectsClient:
|
|
|
149
149
|
GET /v1/video-projects/{id}
|
|
150
150
|
|
|
151
151
|
Args:
|
|
152
|
-
id:
|
|
152
|
+
id: Unique ID of the video project. This value is returned by all of the POST APIs that create a video.
|
|
153
153
|
request_options: Additional options to customize the HTTP request
|
|
154
154
|
|
|
155
155
|
Returns:
|
|
@@ -161,7 +161,7 @@ class AsyncVideoProjectsClient:
|
|
|
161
161
|
|
|
162
162
|
Examples:
|
|
163
163
|
```py
|
|
164
|
-
await client.v1.video_projects.get(id="
|
|
164
|
+
await client.v1.video_projects.get(id="cuid-example")
|
|
165
165
|
```
|
|
166
166
|
"""
|
|
167
167
|
return await self._base_client.request(
|
|
@@ -13,12 +13,12 @@ Get more information about this mode at our [product page](https://magichour.ai/
|
|
|
13
13
|
| Parameter | Required | Description | Example |
|
|
14
14
|
|-----------|:--------:|-------------|--------|
|
|
15
15
|
| `assets` | ✓ | Provide the assets for video-to-video. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used | `{"video_file_path": "api-assets/id/1234.mp4", "video_source": "file"}` |
|
|
16
|
-
| `end_seconds` | ✓ | The end time of the input video in seconds | `15.0` |
|
|
17
|
-
| `start_seconds` | ✓ | The start time of the input video in seconds | `0.0` |
|
|
18
|
-
| `style` | ✓ | | `{"art_style": "3D Render", "model": "
|
|
16
|
+
| `end_seconds` | ✓ | The end time of the input video in seconds. This value is used to trim the input video. The value must be greater than 0.1, and more than the start_seconds. | `15.0` |
|
|
17
|
+
| `start_seconds` | ✓ | The start time of the input video in seconds. This value is used to trim the input video. The value must be greater than 0. | `0.0` |
|
|
18
|
+
| `style` | ✓ | | `{"art_style": "3D Render", "model": "default", "prompt": "string", "prompt_type": "default", "version": "default"}` |
|
|
19
19
|
| `fps_resolution` | ✗ | Determines whether the resulting video will have the same frame per second as the original video, or half. * `FULL` - the result video will have the same FPS as the input video * `HALF` - the result video will have half the FPS as the input video | `"HALF"` |
|
|
20
20
|
| `height` | ✗ | Used to determine the dimensions of the output video. * If height is provided, width will also be required. The larger value between width and height will be used to determine the maximum output resolution while maintaining the original aspect ratio. * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio. Note: if the video's original resolution is less than the maximum, the video will not be resized. See our [pricing page](https://magichour.ai/pricing) for more details. | `960` |
|
|
21
|
-
| `name` | ✗ | The name of video | `"Video To Video video"` |
|
|
21
|
+
| `name` | ✗ | The name of video. This value is mainly used for your own identification of the video. | `"Video To Video video"` |
|
|
22
22
|
| `width` | ✗ | Used to determine the dimensions of the output video. * If width is provided, height will also be required. The larger value between width and height will be used to determine the maximum output resolution while maintaining the original aspect ratio. * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio. Note: if the video's original resolution is less than the maximum, the video will not be resized. See our [pricing page](https://magichour.ai/pricing) for more details. | `512` |
|
|
23
23
|
|
|
24
24
|
#### Synchronous Client
|
|
@@ -34,9 +34,9 @@ res = client.v1.video_to_video.create(
|
|
|
34
34
|
start_seconds=0.0,
|
|
35
35
|
style={
|
|
36
36
|
"art_style": "3D Render",
|
|
37
|
-
"model": "
|
|
37
|
+
"model": "default",
|
|
38
38
|
"prompt": "string",
|
|
39
|
-
"prompt_type": "
|
|
39
|
+
"prompt_type": "default",
|
|
40
40
|
"version": "default",
|
|
41
41
|
},
|
|
42
42
|
fps_resolution="HALF",
|
|
@@ -60,9 +60,9 @@ res = await client.v1.video_to_video.create(
|
|
|
60
60
|
start_seconds=0.0,
|
|
61
61
|
style={
|
|
62
62
|
"art_style": "3D Render",
|
|
63
|
-
"model": "
|
|
63
|
+
"model": "default",
|
|
64
64
|
"prompt": "string",
|
|
65
|
-
"prompt_type": "
|
|
65
|
+
"prompt_type": "default",
|
|
66
66
|
"version": "default",
|
|
67
67
|
},
|
|
68
68
|
fps_resolution="HALF",
|
|
@@ -79,4 +79,4 @@ res = await client.v1.video_to_video.create(
|
|
|
79
79
|
[V1VideoToVideoCreateResponse](/magic_hour/types/models/v1_video_to_video_create_response.py)
|
|
80
80
|
|
|
81
81
|
##### Example
|
|
82
|
-
`{"credits_charged": 450, "estimated_frame_cost": 450, "id": "
|
|
82
|
+
`{"credits_charged": 450, "estimated_frame_cost": 450, "id": "cuid-example"}`
|
|
@@ -60,7 +60,7 @@ class VideoToVideoClient:
|
|
|
60
60
|
Note: if the video's original resolution is less than the maximum, the video will not be resized.
|
|
61
61
|
|
|
62
62
|
See our [pricing page](https://magichour.ai/pricing) for more details.
|
|
63
|
-
name: The name of video
|
|
63
|
+
name: The name of video. This value is mainly used for your own identification of the video.
|
|
64
64
|
width: Used to determine the dimensions of the output video.
|
|
65
65
|
|
|
66
66
|
* If width is provided, height will also be required. The larger value between width and height will be used to determine the maximum output resolution while maintaining the original aspect ratio.
|
|
@@ -70,8 +70,8 @@ class VideoToVideoClient:
|
|
|
70
70
|
|
|
71
71
|
See our [pricing page](https://magichour.ai/pricing) for more details.
|
|
72
72
|
assets: Provide the assets for video-to-video. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
|
|
73
|
-
end_seconds: The end time of the input video in seconds
|
|
74
|
-
start_seconds: The start time of the input video in seconds
|
|
73
|
+
end_seconds: The end time of the input video in seconds. This value is used to trim the input video. The value must be greater than 0.1, and more than the start_seconds.
|
|
74
|
+
start_seconds: The start time of the input video in seconds. This value is used to trim the input video. The value must be greater than 0.
|
|
75
75
|
style: V1VideoToVideoCreateBodyStyle
|
|
76
76
|
request_options: Additional options to customize the HTTP request
|
|
77
77
|
|
|
@@ -93,9 +93,9 @@ class VideoToVideoClient:
|
|
|
93
93
|
start_seconds=0.0,
|
|
94
94
|
style={
|
|
95
95
|
"art_style": "3D Render",
|
|
96
|
-
"model": "
|
|
96
|
+
"model": "default",
|
|
97
97
|
"prompt": "string",
|
|
98
|
-
"prompt_type": "
|
|
98
|
+
"prompt_type": "default",
|
|
99
99
|
"version": "default",
|
|
100
100
|
},
|
|
101
101
|
fps_resolution="HALF",
|
|
@@ -176,7 +176,7 @@ class AsyncVideoToVideoClient:
|
|
|
176
176
|
Note: if the video's original resolution is less than the maximum, the video will not be resized.
|
|
177
177
|
|
|
178
178
|
See our [pricing page](https://magichour.ai/pricing) for more details.
|
|
179
|
-
name: The name of video
|
|
179
|
+
name: The name of video. This value is mainly used for your own identification of the video.
|
|
180
180
|
width: Used to determine the dimensions of the output video.
|
|
181
181
|
|
|
182
182
|
* If width is provided, height will also be required. The larger value between width and height will be used to determine the maximum output resolution while maintaining the original aspect ratio.
|
|
@@ -186,8 +186,8 @@ class AsyncVideoToVideoClient:
|
|
|
186
186
|
|
|
187
187
|
See our [pricing page](https://magichour.ai/pricing) for more details.
|
|
188
188
|
assets: Provide the assets for video-to-video. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
|
|
189
|
-
end_seconds: The end time of the input video in seconds
|
|
190
|
-
start_seconds: The start time of the input video in seconds
|
|
189
|
+
end_seconds: The end time of the input video in seconds. This value is used to trim the input video. The value must be greater than 0.1, and more than the start_seconds.
|
|
190
|
+
start_seconds: The start time of the input video in seconds. This value is used to trim the input video. The value must be greater than 0.
|
|
191
191
|
style: V1VideoToVideoCreateBodyStyle
|
|
192
192
|
request_options: Additional options to customize the HTTP request
|
|
193
193
|
|
|
@@ -209,9 +209,9 @@ class AsyncVideoToVideoClient:
|
|
|
209
209
|
start_seconds=0.0,
|
|
210
210
|
style={
|
|
211
211
|
"art_style": "3D Render",
|
|
212
|
-
"model": "
|
|
212
|
+
"model": "default",
|
|
213
213
|
"prompt": "string",
|
|
214
|
-
"prompt_type": "
|
|
214
|
+
"prompt_type": "default",
|
|
215
215
|
"version": "default",
|
|
216
216
|
},
|
|
217
217
|
fps_resolution="HALF",
|
|
@@ -21,5 +21,5 @@ class V1FaceDetectionCreateResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
The id of the task
|
|
24
|
+
The id of the task. Use this value in the [get face detection details API](/api-reference/files/get-face-detection-details) to get the details of the face detection task.
|
|
25
25
|
"""
|
|
@@ -33,7 +33,7 @@ class V1FaceDetectionGetResponse(pydantic.BaseModel):
|
|
|
33
33
|
alias="id",
|
|
34
34
|
)
|
|
35
35
|
"""
|
|
36
|
-
The id of the task
|
|
36
|
+
The id of the task. This value is returned by the [face detection API](/api-reference/files/face-detection#response-id).
|
|
37
37
|
"""
|
|
38
38
|
status: typing_extensions.Literal["complete", "error", "queued", "rendering"] = (
|
|
39
39
|
pydantic.Field(
|
|
@@ -19,3 +19,6 @@ class V1FilesUploadUrlsCreateResponse(pydantic.BaseModel):
|
|
|
19
19
|
items: typing.List[V1FilesUploadUrlsCreateResponseItemsItem] = pydantic.Field(
|
|
20
20
|
alias="items",
|
|
21
21
|
)
|
|
22
|
+
"""
|
|
23
|
+
The list of upload URLs and file paths for the assets. The response array will match the order of items in the request body. Refer to the [Input Files Guide](/integration/input-files) for more details.
|
|
24
|
+
"""
|
|
@@ -49,7 +49,7 @@ class V1VideoProjectsGetResponse(pydantic.BaseModel):
|
|
|
49
49
|
alias="end_seconds",
|
|
50
50
|
)
|
|
51
51
|
"""
|
|
52
|
-
The end time of the input video in seconds
|
|
52
|
+
The end time of the input video in seconds. This value is used to trim the input video. The value must be greater than 0.1, and more than the start_seconds.
|
|
53
53
|
"""
|
|
54
54
|
error: typing.Optional[V1VideoProjectsGetResponseError] = pydantic.Field(
|
|
55
55
|
alias="error",
|
|
@@ -85,7 +85,7 @@ class V1VideoProjectsGetResponse(pydantic.BaseModel):
|
|
|
85
85
|
alias="start_seconds",
|
|
86
86
|
)
|
|
87
87
|
"""
|
|
88
|
-
The start time of the input video in seconds
|
|
88
|
+
The start time of the input video in seconds. This value is used to trim the input video. The value must be greater than 0.
|
|
89
89
|
"""
|
|
90
90
|
status: typing_extensions.Literal[
|
|
91
91
|
"canceled", "complete", "draft", "error", "queued", "rendering"
|
|
@@ -9,16 +9,29 @@ class V1AiClothesChangerCreateBodyAssets(typing_extensions.TypedDict):
|
|
|
9
9
|
|
|
10
10
|
garment_file_path: typing_extensions.Required[str]
|
|
11
11
|
"""
|
|
12
|
-
The image of the outfit. This value
|
|
12
|
+
The image of the outfit. This value is either
|
|
13
|
+
- a direct URL to the video file
|
|
14
|
+
- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).
|
|
15
|
+
|
|
16
|
+
Please refer to the [Input File documentation](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) to learn more.
|
|
17
|
+
|
|
13
18
|
"""
|
|
14
19
|
|
|
15
20
|
garment_type: typing_extensions.Required[
|
|
16
21
|
typing_extensions.Literal["dresses", "lower_body", "upper_body"]
|
|
17
22
|
]
|
|
23
|
+
"""
|
|
24
|
+
The type of the outfit.
|
|
25
|
+
"""
|
|
18
26
|
|
|
19
27
|
person_file_path: typing_extensions.Required[str]
|
|
20
28
|
"""
|
|
21
|
-
The image with the person. This value
|
|
29
|
+
The image with the person. This value is either
|
|
30
|
+
- a direct URL to the video file
|
|
31
|
+
- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).
|
|
32
|
+
|
|
33
|
+
Please refer to the [Input File documentation](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) to learn more.
|
|
34
|
+
|
|
22
35
|
"""
|
|
23
36
|
|
|
24
37
|
|
|
@@ -24,7 +24,7 @@ class V1AiFaceEditorCreateBody(typing_extensions.TypedDict):
|
|
|
24
24
|
|
|
25
25
|
name: typing_extensions.NotRequired[str]
|
|
26
26
|
"""
|
|
27
|
-
The name of image
|
|
27
|
+
The name of image. This value is mainly used for your own identification of the image.
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
30
|
style: typing_extensions.Required[V1AiFaceEditorCreateBodyStyle]
|
|
@@ -9,7 +9,12 @@ class V1AiFaceEditorCreateBodyAssets(typing_extensions.TypedDict):
|
|
|
9
9
|
|
|
10
10
|
image_file_path: typing_extensions.Required[str]
|
|
11
11
|
"""
|
|
12
|
-
This is the image whose face will be edited. This value
|
|
12
|
+
This is the image whose face will be edited. This value is either
|
|
13
|
+
- a direct URL to the video file
|
|
14
|
+
- `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls).
|
|
15
|
+
|
|
16
|
+
Please refer to the [Input File documentation](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls#input-file) to learn more.
|
|
17
|
+
|
|
13
18
|
"""
|
|
14
19
|
|
|
15
20
|
|