magic_hour 0.9.5__py3-none-any.whl → 0.44.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.
Files changed (264) hide show
  1. magic_hour/README.md +34 -0
  2. magic_hour/__init__.py +1 -1
  3. magic_hour/client.py +8 -17
  4. magic_hour/environment.py +13 -1
  5. magic_hour/helpers/__init__.py +4 -0
  6. magic_hour/helpers/download.py +77 -0
  7. magic_hour/helpers/logger.py +8 -0
  8. magic_hour/resources/v1/README.md +32 -0
  9. magic_hour/resources/v1/ai_clothes_changer/README.md +94 -5
  10. magic_hour/resources/v1/ai_clothes_changer/client.py +161 -16
  11. magic_hour/resources/v1/ai_face_editor/README.md +195 -0
  12. magic_hour/resources/v1/ai_face_editor/__init__.py +4 -0
  13. magic_hour/resources/v1/ai_face_editor/client.py +324 -0
  14. magic_hour/resources/v1/ai_gif_generator/README.md +116 -0
  15. magic_hour/resources/v1/ai_gif_generator/__init__.py +4 -0
  16. magic_hour/resources/v1/ai_gif_generator/client.py +257 -0
  17. magic_hour/resources/v1/ai_headshot_generator/README.md +81 -3
  18. magic_hour/resources/v1/ai_headshot_generator/client.py +167 -18
  19. magic_hour/resources/v1/ai_image_editor/README.md +125 -0
  20. magic_hour/resources/v1/ai_image_editor/__init__.py +4 -0
  21. magic_hour/resources/v1/ai_image_editor/client.py +290 -0
  22. magic_hour/resources/v1/ai_image_generator/README.md +99 -5
  23. magic_hour/resources/v1/ai_image_generator/client.py +170 -24
  24. magic_hour/resources/v1/ai_image_upscaler/README.md +89 -3
  25. magic_hour/resources/v1/ai_image_upscaler/client.py +173 -20
  26. magic_hour/resources/v1/ai_meme_generator/README.md +129 -0
  27. magic_hour/resources/v1/ai_meme_generator/__init__.py +4 -0
  28. magic_hour/resources/v1/ai_meme_generator/client.py +253 -0
  29. magic_hour/resources/v1/ai_photo_editor/README.md +119 -4
  30. magic_hour/resources/v1/ai_photo_editor/client.py +199 -18
  31. magic_hour/resources/v1/ai_qr_code_generator/README.md +84 -3
  32. magic_hour/resources/v1/ai_qr_code_generator/client.py +140 -18
  33. magic_hour/resources/v1/ai_talking_photo/README.md +137 -0
  34. magic_hour/resources/v1/ai_talking_photo/__init__.py +4 -0
  35. magic_hour/resources/v1/ai_talking_photo/client.py +326 -0
  36. magic_hour/resources/v1/ai_voice_cloner/README.md +62 -0
  37. magic_hour/resources/v1/ai_voice_cloner/__init__.py +4 -0
  38. magic_hour/resources/v1/ai_voice_cloner/client.py +272 -0
  39. magic_hour/resources/v1/ai_voice_generator/README.md +112 -0
  40. magic_hour/resources/v1/ai_voice_generator/__init__.py +4 -0
  41. magic_hour/resources/v1/ai_voice_generator/client.py +241 -0
  42. magic_hour/resources/v1/animation/README.md +128 -6
  43. magic_hour/resources/v1/animation/client.py +247 -22
  44. magic_hour/resources/v1/audio_projects/README.md +135 -0
  45. magic_hour/resources/v1/audio_projects/__init__.py +12 -0
  46. magic_hour/resources/v1/audio_projects/client.py +310 -0
  47. magic_hour/resources/v1/audio_projects/client_test.py +520 -0
  48. magic_hour/resources/v1/auto_subtitle_generator/README.md +128 -0
  49. magic_hour/resources/v1/auto_subtitle_generator/__init__.py +4 -0
  50. magic_hour/resources/v1/auto_subtitle_generator/client.py +346 -0
  51. magic_hour/resources/v1/client.py +75 -1
  52. magic_hour/resources/v1/face_detection/README.md +157 -0
  53. magic_hour/resources/v1/face_detection/__init__.py +12 -0
  54. magic_hour/resources/v1/face_detection/client.py +380 -0
  55. magic_hour/resources/v1/face_swap/README.md +137 -9
  56. magic_hour/resources/v1/face_swap/client.py +329 -38
  57. magic_hour/resources/v1/face_swap_photo/README.md +118 -3
  58. magic_hour/resources/v1/face_swap_photo/client.py +199 -14
  59. magic_hour/resources/v1/files/README.md +39 -0
  60. magic_hour/resources/v1/files/client.py +351 -1
  61. magic_hour/resources/v1/files/client_test.py +414 -0
  62. magic_hour/resources/v1/files/upload_urls/README.md +38 -17
  63. magic_hour/resources/v1/files/upload_urls/client.py +38 -34
  64. magic_hour/resources/v1/image_background_remover/README.md +96 -5
  65. magic_hour/resources/v1/image_background_remover/client.py +151 -16
  66. magic_hour/resources/v1/image_projects/README.md +82 -10
  67. magic_hour/resources/v1/image_projects/__init__.py +10 -2
  68. magic_hour/resources/v1/image_projects/client.py +154 -16
  69. magic_hour/resources/v1/image_projects/client_test.py +527 -0
  70. magic_hour/resources/v1/image_to_video/README.md +96 -11
  71. magic_hour/resources/v1/image_to_video/client.py +282 -38
  72. magic_hour/resources/v1/lip_sync/README.md +112 -9
  73. magic_hour/resources/v1/lip_sync/client.py +288 -34
  74. magic_hour/resources/v1/photo_colorizer/README.md +107 -0
  75. magic_hour/resources/v1/photo_colorizer/__init__.py +4 -0
  76. magic_hour/resources/v1/photo_colorizer/client.py +248 -0
  77. magic_hour/resources/v1/text_to_video/README.md +96 -7
  78. magic_hour/resources/v1/text_to_video/client.py +204 -18
  79. magic_hour/resources/v1/video_projects/README.md +81 -9
  80. magic_hour/resources/v1/video_projects/__init__.py +10 -2
  81. magic_hour/resources/v1/video_projects/client.py +151 -14
  82. magic_hour/resources/v1/video_projects/client_test.py +527 -0
  83. magic_hour/resources/v1/video_to_video/README.md +119 -15
  84. magic_hour/resources/v1/video_to_video/client.py +299 -46
  85. magic_hour/types/models/__init__.py +92 -56
  86. magic_hour/types/models/v1_ai_clothes_changer_create_response.py +33 -0
  87. magic_hour/types/models/v1_ai_face_editor_create_response.py +33 -0
  88. magic_hour/types/models/v1_ai_gif_generator_create_response.py +33 -0
  89. magic_hour/types/models/v1_ai_headshot_generator_create_response.py +33 -0
  90. magic_hour/types/models/v1_ai_image_editor_create_response.py +33 -0
  91. magic_hour/types/models/v1_ai_image_generator_create_response.py +33 -0
  92. magic_hour/types/models/v1_ai_image_upscaler_create_response.py +33 -0
  93. magic_hour/types/models/v1_ai_meme_generator_create_response.py +33 -0
  94. magic_hour/types/models/v1_ai_photo_editor_create_response.py +33 -0
  95. magic_hour/types/models/v1_ai_qr_code_generator_create_response.py +33 -0
  96. magic_hour/types/models/v1_ai_talking_photo_create_response.py +35 -0
  97. magic_hour/types/models/v1_ai_voice_cloner_create_response.py +27 -0
  98. magic_hour/types/models/v1_ai_voice_generator_create_response.py +27 -0
  99. magic_hour/types/models/v1_animation_create_response.py +35 -0
  100. magic_hour/types/models/v1_audio_projects_get_response.py +72 -0
  101. magic_hour/types/models/v1_audio_projects_get_response_downloads_item.py +19 -0
  102. magic_hour/types/models/{get_v1_image_projects_id_response_error.py → v1_audio_projects_get_response_error.py} +2 -2
  103. magic_hour/types/models/v1_auto_subtitle_generator_create_response.py +35 -0
  104. magic_hour/types/models/v1_face_detection_create_response.py +25 -0
  105. magic_hour/types/models/v1_face_detection_get_response.py +45 -0
  106. magic_hour/types/models/v1_face_detection_get_response_faces_item.py +25 -0
  107. magic_hour/types/models/v1_face_swap_create_response.py +35 -0
  108. magic_hour/types/models/v1_face_swap_photo_create_response.py +33 -0
  109. magic_hour/types/models/v1_files_upload_urls_create_response.py +24 -0
  110. magic_hour/types/models/{post_v1_files_upload_urls_response_items_item.py → v1_files_upload_urls_create_response_items_item.py} +2 -2
  111. magic_hour/types/models/v1_image_background_remover_create_response.py +33 -0
  112. magic_hour/types/models/{get_v1_image_projects_id_response.py → v1_image_projects_get_response.py} +20 -18
  113. magic_hour/types/models/{get_v1_video_projects_id_response_downloads_item.py → v1_image_projects_get_response_downloads_item.py} +1 -1
  114. magic_hour/types/models/{get_v1_video_projects_id_response_error.py → v1_image_projects_get_response_error.py} +2 -2
  115. magic_hour/types/models/v1_image_to_video_create_response.py +35 -0
  116. magic_hour/types/models/v1_lip_sync_create_response.py +35 -0
  117. magic_hour/types/models/v1_photo_colorizer_create_response.py +33 -0
  118. magic_hour/types/models/v1_text_to_video_create_response.py +35 -0
  119. magic_hour/types/models/{get_v1_video_projects_id_response.py → v1_video_projects_get_response.py} +26 -23
  120. magic_hour/types/models/{get_v1_video_projects_id_response_download.py → v1_video_projects_get_response_download.py} +1 -1
  121. magic_hour/types/models/{get_v1_image_projects_id_response_downloads_item.py → v1_video_projects_get_response_downloads_item.py} +1 -1
  122. magic_hour/types/models/v1_video_projects_get_response_error.py +25 -0
  123. magic_hour/types/models/v1_video_to_video_create_response.py +35 -0
  124. magic_hour/types/params/__init__.py +422 -176
  125. magic_hour/types/params/v1_ai_clothes_changer_create_body.py +40 -0
  126. magic_hour/types/params/v1_ai_clothes_changer_create_body_assets.py +58 -0
  127. magic_hour/types/params/v1_ai_clothes_changer_generate_body_assets.py +33 -0
  128. magic_hour/types/params/v1_ai_face_editor_create_body.py +52 -0
  129. magic_hour/types/params/v1_ai_face_editor_create_body_assets.py +33 -0
  130. magic_hour/types/params/v1_ai_face_editor_create_body_style.py +137 -0
  131. magic_hour/types/params/v1_ai_face_editor_generate_body_assets.py +17 -0
  132. magic_hour/types/params/v1_ai_gif_generator_create_body.py +47 -0
  133. magic_hour/types/params/{post_v1_ai_image_generator_body_style.py → v1_ai_gif_generator_create_body_style.py} +5 -5
  134. magic_hour/types/params/v1_ai_headshot_generator_create_body.py +49 -0
  135. magic_hour/types/params/v1_ai_headshot_generator_create_body_assets.py +33 -0
  136. magic_hour/types/params/v1_ai_headshot_generator_create_body_style.py +27 -0
  137. magic_hour/types/params/v1_ai_headshot_generator_generate_body_assets.py +17 -0
  138. magic_hour/types/params/v1_ai_image_editor_create_body.py +49 -0
  139. magic_hour/types/params/v1_ai_image_editor_create_body_assets.py +47 -0
  140. magic_hour/types/params/v1_ai_image_editor_create_body_style.py +41 -0
  141. magic_hour/types/params/v1_ai_image_editor_generate_body_assets.py +28 -0
  142. magic_hour/types/params/{post_v1_ai_image_generator_body.py → v1_ai_image_generator_create_body.py} +17 -11
  143. magic_hour/types/params/v1_ai_image_generator_create_body_style.py +127 -0
  144. magic_hour/types/params/v1_ai_image_upscaler_create_body.py +59 -0
  145. magic_hour/types/params/v1_ai_image_upscaler_create_body_assets.py +33 -0
  146. magic_hour/types/params/{post_v1_ai_image_upscaler_body_style.py → v1_ai_image_upscaler_create_body_style.py} +4 -4
  147. magic_hour/types/params/v1_ai_image_upscaler_generate_body_assets.py +17 -0
  148. magic_hour/types/params/v1_ai_meme_generator_create_body.py +37 -0
  149. magic_hour/types/params/v1_ai_meme_generator_create_body_style.py +73 -0
  150. magic_hour/types/params/{post_v1_ai_photo_editor_body.py → v1_ai_photo_editor_create_body.py} +15 -15
  151. magic_hour/types/params/v1_ai_photo_editor_create_body_assets.py +33 -0
  152. magic_hour/types/params/{post_v1_ai_photo_editor_body_style.py → v1_ai_photo_editor_create_body_style.py} +20 -4
  153. magic_hour/types/params/v1_ai_photo_editor_generate_body_assets.py +17 -0
  154. magic_hour/types/params/v1_ai_qr_code_generator_create_body.py +45 -0
  155. magic_hour/types/params/{post_v1_ai_qr_code_generator_body_style.py → v1_ai_qr_code_generator_create_body_style.py} +4 -4
  156. magic_hour/types/params/v1_ai_talking_photo_create_body.py +68 -0
  157. magic_hour/types/params/v1_ai_talking_photo_create_body_assets.py +46 -0
  158. magic_hour/types/params/v1_ai_talking_photo_create_body_style.py +44 -0
  159. magic_hour/types/params/v1_ai_talking_photo_generate_body_assets.py +26 -0
  160. magic_hour/types/params/v1_ai_voice_cloner_create_body.py +49 -0
  161. magic_hour/types/params/v1_ai_voice_cloner_create_body_assets.py +33 -0
  162. magic_hour/types/params/v1_ai_voice_cloner_create_body_style.py +28 -0
  163. magic_hour/types/params/v1_ai_voice_cloner_generate_body_assets.py +28 -0
  164. magic_hour/types/params/v1_ai_voice_generator_create_body.py +40 -0
  165. magic_hour/types/params/v1_ai_voice_generator_create_body_style.py +440 -0
  166. magic_hour/types/params/{post_v1_animation_body.py → v1_animation_create_body.py} +16 -16
  167. magic_hour/types/params/{post_v1_animation_body_assets.py → v1_animation_create_body_assets.py} +15 -5
  168. magic_hour/types/params/{post_v1_animation_body_style.py → v1_animation_create_body_style.py} +13 -10
  169. magic_hour/types/params/v1_animation_generate_body_assets.py +39 -0
  170. magic_hour/types/params/v1_auto_subtitle_generator_create_body.py +78 -0
  171. magic_hour/types/params/v1_auto_subtitle_generator_create_body_assets.py +33 -0
  172. magic_hour/types/params/v1_auto_subtitle_generator_create_body_style.py +56 -0
  173. magic_hour/types/params/v1_auto_subtitle_generator_create_body_style_custom_config.py +86 -0
  174. magic_hour/types/params/v1_auto_subtitle_generator_generate_body_assets.py +17 -0
  175. magic_hour/types/params/v1_face_detection_create_body.py +44 -0
  176. magic_hour/types/params/v1_face_detection_create_body_assets.py +33 -0
  177. magic_hour/types/params/v1_face_detection_generate_body_assets.py +17 -0
  178. magic_hour/types/params/v1_face_swap_create_body.py +92 -0
  179. magic_hour/types/params/v1_face_swap_create_body_assets.py +91 -0
  180. magic_hour/types/params/v1_face_swap_create_body_assets_face_mappings_item.py +44 -0
  181. magic_hour/types/params/v1_face_swap_create_body_style.py +33 -0
  182. magic_hour/types/params/v1_face_swap_generate_body_assets.py +56 -0
  183. magic_hour/types/params/v1_face_swap_generate_body_assets_face_mappings_item.py +25 -0
  184. magic_hour/types/params/v1_face_swap_photo_create_body.py +40 -0
  185. magic_hour/types/params/v1_face_swap_photo_create_body_assets.py +76 -0
  186. magic_hour/types/params/v1_face_swap_photo_create_body_assets_face_mappings_item.py +44 -0
  187. magic_hour/types/params/v1_face_swap_photo_generate_body_assets.py +47 -0
  188. magic_hour/types/params/v1_face_swap_photo_generate_body_assets_face_mappings_item.py +25 -0
  189. magic_hour/types/params/v1_files_upload_urls_create_body.py +36 -0
  190. magic_hour/types/params/v1_files_upload_urls_create_body_items_item.py +38 -0
  191. magic_hour/types/params/v1_image_background_remover_create_body.py +40 -0
  192. magic_hour/types/params/v1_image_background_remover_create_body_assets.py +49 -0
  193. magic_hour/types/params/v1_image_background_remover_generate_body_assets.py +27 -0
  194. magic_hour/types/params/v1_image_to_video_create_body.py +101 -0
  195. magic_hour/types/params/v1_image_to_video_create_body_assets.py +33 -0
  196. magic_hour/types/params/v1_image_to_video_create_body_style.py +53 -0
  197. magic_hour/types/params/v1_image_to_video_generate_body_assets.py +17 -0
  198. magic_hour/types/params/v1_lip_sync_create_body.py +100 -0
  199. magic_hour/types/params/{post_v1_lip_sync_body_assets.py → v1_lip_sync_create_body_assets.py} +15 -5
  200. magic_hour/types/params/v1_lip_sync_create_body_style.py +37 -0
  201. magic_hour/types/params/v1_lip_sync_generate_body_assets.py +36 -0
  202. magic_hour/types/params/v1_photo_colorizer_create_body.py +40 -0
  203. magic_hour/types/params/v1_photo_colorizer_create_body_assets.py +33 -0
  204. magic_hour/types/params/v1_photo_colorizer_generate_body_assets.py +17 -0
  205. magic_hour/types/params/v1_text_to_video_create_body.py +78 -0
  206. magic_hour/types/params/v1_text_to_video_create_body_style.py +43 -0
  207. magic_hour/types/params/v1_video_to_video_create_body.py +101 -0
  208. magic_hour/types/params/{post_v1_video_to_video_body_assets.py → v1_video_to_video_create_body_assets.py} +9 -4
  209. magic_hour/types/params/{post_v1_video_to_video_body_style.py → v1_video_to_video_create_body_style.py} +68 -26
  210. magic_hour/types/params/v1_video_to_video_generate_body_assets.py +27 -0
  211. magic_hour-0.44.0.dist-info/METADATA +328 -0
  212. magic_hour-0.44.0.dist-info/RECORD +231 -0
  213. magic_hour/core/__init__.py +0 -52
  214. magic_hour/core/api_error.py +0 -56
  215. magic_hour/core/auth.py +0 -314
  216. magic_hour/core/base_client.py +0 -618
  217. magic_hour/core/binary_response.py +0 -23
  218. magic_hour/core/query.py +0 -106
  219. magic_hour/core/request.py +0 -156
  220. magic_hour/core/response.py +0 -293
  221. magic_hour/core/type_utils.py +0 -28
  222. magic_hour/core/utils.py +0 -55
  223. magic_hour/types/models/post_v1_ai_clothes_changer_response.py +0 -25
  224. magic_hour/types/models/post_v1_ai_headshot_generator_response.py +0 -25
  225. magic_hour/types/models/post_v1_ai_image_generator_response.py +0 -25
  226. magic_hour/types/models/post_v1_ai_image_upscaler_response.py +0 -25
  227. magic_hour/types/models/post_v1_ai_photo_editor_response.py +0 -25
  228. magic_hour/types/models/post_v1_ai_qr_code_generator_response.py +0 -25
  229. magic_hour/types/models/post_v1_animation_response.py +0 -25
  230. magic_hour/types/models/post_v1_face_swap_photo_response.py +0 -25
  231. magic_hour/types/models/post_v1_face_swap_response.py +0 -25
  232. magic_hour/types/models/post_v1_files_upload_urls_response.py +0 -21
  233. magic_hour/types/models/post_v1_image_background_remover_response.py +0 -25
  234. magic_hour/types/models/post_v1_image_to_video_response.py +0 -25
  235. magic_hour/types/models/post_v1_lip_sync_response.py +0 -25
  236. magic_hour/types/models/post_v1_text_to_video_response.py +0 -25
  237. magic_hour/types/models/post_v1_video_to_video_response.py +0 -25
  238. magic_hour/types/params/post_v1_ai_clothes_changer_body.py +0 -40
  239. magic_hour/types/params/post_v1_ai_clothes_changer_body_assets.py +0 -45
  240. magic_hour/types/params/post_v1_ai_headshot_generator_body.py +0 -40
  241. magic_hour/types/params/post_v1_ai_headshot_generator_body_assets.py +0 -28
  242. magic_hour/types/params/post_v1_ai_image_upscaler_body.py +0 -57
  243. magic_hour/types/params/post_v1_ai_image_upscaler_body_assets.py +0 -28
  244. magic_hour/types/params/post_v1_ai_photo_editor_body_assets.py +0 -28
  245. magic_hour/types/params/post_v1_ai_qr_code_generator_body.py +0 -45
  246. magic_hour/types/params/post_v1_face_swap_body.py +0 -72
  247. magic_hour/types/params/post_v1_face_swap_body_assets.py +0 -52
  248. magic_hour/types/params/post_v1_face_swap_photo_body.py +0 -40
  249. magic_hour/types/params/post_v1_face_swap_photo_body_assets.py +0 -36
  250. magic_hour/types/params/post_v1_files_upload_urls_body.py +0 -31
  251. magic_hour/types/params/post_v1_files_upload_urls_body_items_item.py +0 -38
  252. magic_hour/types/params/post_v1_image_background_remover_body.py +0 -40
  253. magic_hour/types/params/post_v1_image_background_remover_body_assets.py +0 -28
  254. magic_hour/types/params/post_v1_image_to_video_body.py +0 -73
  255. magic_hour/types/params/post_v1_image_to_video_body_assets.py +0 -28
  256. magic_hour/types/params/post_v1_image_to_video_body_style.py +0 -37
  257. magic_hour/types/params/post_v1_lip_sync_body.py +0 -80
  258. magic_hour/types/params/post_v1_text_to_video_body.py +0 -57
  259. magic_hour/types/params/post_v1_text_to_video_body_style.py +0 -28
  260. magic_hour/types/params/post_v1_video_to_video_body.py +0 -93
  261. magic_hour-0.9.5.dist-info/METADATA +0 -133
  262. magic_hour-0.9.5.dist-info/RECORD +0 -132
  263. {magic_hour-0.9.5.dist-info → magic_hour-0.44.0.dist-info}/LICENSE +0 -0
  264. {magic_hour-0.9.5.dist-info → magic_hour-0.44.0.dist-info}/WHEEL +0 -0
@@ -3,9 +3,9 @@ import typing
3
3
  import typing_extensions
4
4
 
5
5
 
6
- class PostV1VideoToVideoBodyStyle(typing_extensions.TypedDict):
6
+ class V1VideoToVideoCreateBodyStyle(typing_extensions.TypedDict):
7
7
  """
8
- PostV1VideoToVideoBodyStyle
8
+ V1VideoToVideoCreateBodyStyle
9
9
  """
10
10
 
11
11
  art_style: typing_extensions.Required[
@@ -19,7 +19,9 @@ class PostV1VideoToVideoBodyStyle(typing_extensions.TypedDict):
19
19
  "Avatar",
20
20
  "Black Spiderman",
21
21
  "Boba Fett",
22
+ "Bold Anime",
22
23
  "Celestial Skin",
24
+ "Chinese Swordsmen",
23
25
  "Clay",
24
26
  "Comic",
25
27
  "Cyberpunk",
@@ -29,6 +31,7 @@ class PostV1VideoToVideoBodyStyle(typing_extensions.TypedDict):
29
31
  "Future Bot",
30
32
  "Futuristic Fantasy",
31
33
  "GTA",
34
+ "Ghibli Anime",
32
35
  "Ghost",
33
36
  "Gundam",
34
37
  "Hologram",
@@ -41,21 +44,31 @@ class PostV1VideoToVideoBodyStyle(typing_extensions.TypedDict):
41
44
  "Lego",
42
45
  "Link",
43
46
  "Marble",
47
+ "Mario",
44
48
  "Master Chief",
45
49
  "Mech",
46
50
  "Minecraft",
51
+ "Mystique",
47
52
  "Naruto",
48
53
  "Neon Dream",
54
+ "No Art Style",
49
55
  "Oil Painting",
50
56
  "On Fire",
51
57
  "Origami",
58
+ "Painterly Anime",
59
+ "Pixar",
52
60
  "Pixel",
53
61
  "Power Armor",
54
62
  "Power Ranger",
63
+ "Radiant Anime",
64
+ "Realistic Anime",
65
+ "Realistic Pixar",
55
66
  "Retro Anime",
56
67
  "Retro Sci-Fi",
57
68
  "Samurai",
58
69
  "Samurai Bot",
70
+ "Sharp Anime",
71
+ "Soft Anime",
59
72
  "Solid Snake",
60
73
  "Spartan",
61
74
  "Starfield",
@@ -63,33 +76,43 @@ class PostV1VideoToVideoBodyStyle(typing_extensions.TypedDict):
63
76
  "Studio Ghibli",
64
77
  "Sub-Zero",
65
78
  "The Void",
79
+ "Tomb Raider",
66
80
  "Underwater",
67
81
  "Van Gogh",
68
82
  "Viking",
69
83
  "Watercolor",
84
+ "Western Anime",
70
85
  "Wu Kong",
86
+ "Wuxia Anime",
71
87
  "Zelda",
72
88
  ]
73
89
  ]
74
90
 
75
- model: typing_extensions.Required[
91
+ model: typing_extensions.NotRequired[
76
92
  typing_extensions.Literal[
77
- "Absolute Reality", "Dreamshaper", "Flat 2D Anime", "default"
93
+ "3D Anime",
94
+ "Absolute Reality",
95
+ "Dreamshaper",
96
+ "Flat 2D Anime",
97
+ "Kaywaii",
98
+ "Soft Anime",
99
+ "Western Anime",
100
+ "default",
78
101
  ]
79
102
  ]
80
103
  """
81
- * `Dreamshaper` - a good all-around model that works for both animations as well as realism.
82
- * `Absolute Reality` - better at realism, but you'll often get similar results with Dreamshaper as well.
104
+ * `Dreamshaper` - a good all-around model that works for both animations as well as realism.
105
+ * `Absolute Reality` - better at realism, but you'll often get similar results with Dreamshaper as well.
83
106
  * `Flat 2D Anime` - best for a flat illustration style that's common in most anime.
84
107
  * `default` - use the default recommended model for the selected art style.
85
108
  """
86
109
 
87
- prompt: typing_extensions.Required[typing.Optional[str]]
110
+ prompt: typing_extensions.NotRequired[typing.Optional[str]]
88
111
  """
89
112
  The prompt used for the video. Prompt is required if `prompt_type` is `custom` or `append_default`. If `prompt_type` is `default`, then the `prompt` value passed will be ignored.
90
113
  """
91
114
 
92
- prompt_type: typing_extensions.Required[
115
+ prompt_type: typing_extensions.NotRequired[
93
116
  typing_extensions.Literal["append_default", "custom", "default"]
94
117
  ]
95
118
  """
@@ -98,7 +121,7 @@ class PostV1VideoToVideoBodyStyle(typing_extensions.TypedDict):
98
121
  * `append_default` - Add the default recommended prompt to the end of the prompt passed in the API.
99
122
  """
100
123
 
101
- version: typing_extensions.Required[
124
+ version: typing_extensions.NotRequired[
102
125
  typing_extensions.Literal["default", "v1", "v2"]
103
126
  ]
104
127
  """
@@ -108,9 +131,9 @@ class PostV1VideoToVideoBodyStyle(typing_extensions.TypedDict):
108
131
  """
109
132
 
110
133
 
111
- class _SerializerPostV1VideoToVideoBodyStyle(pydantic.BaseModel):
134
+ class _SerializerV1VideoToVideoCreateBodyStyle(pydantic.BaseModel):
112
135
  """
113
- Serializer for PostV1VideoToVideoBodyStyle handling case conversions
136
+ Serializer for V1VideoToVideoCreateBodyStyle handling case conversions
114
137
  and file omissions as dictated by the API
115
138
  """
116
139
 
@@ -128,7 +151,9 @@ class _SerializerPostV1VideoToVideoBodyStyle(pydantic.BaseModel):
128
151
  "Avatar",
129
152
  "Black Spiderman",
130
153
  "Boba Fett",
154
+ "Bold Anime",
131
155
  "Celestial Skin",
156
+ "Chinese Swordsmen",
132
157
  "Clay",
133
158
  "Comic",
134
159
  "Cyberpunk",
@@ -138,6 +163,7 @@ class _SerializerPostV1VideoToVideoBodyStyle(pydantic.BaseModel):
138
163
  "Future Bot",
139
164
  "Futuristic Fantasy",
140
165
  "GTA",
166
+ "Ghibli Anime",
141
167
  "Ghost",
142
168
  "Gundam",
143
169
  "Hologram",
@@ -150,21 +176,31 @@ class _SerializerPostV1VideoToVideoBodyStyle(pydantic.BaseModel):
150
176
  "Lego",
151
177
  "Link",
152
178
  "Marble",
179
+ "Mario",
153
180
  "Master Chief",
154
181
  "Mech",
155
182
  "Minecraft",
183
+ "Mystique",
156
184
  "Naruto",
157
185
  "Neon Dream",
186
+ "No Art Style",
158
187
  "Oil Painting",
159
188
  "On Fire",
160
189
  "Origami",
190
+ "Painterly Anime",
191
+ "Pixar",
161
192
  "Pixel",
162
193
  "Power Armor",
163
194
  "Power Ranger",
195
+ "Radiant Anime",
196
+ "Realistic Anime",
197
+ "Realistic Pixar",
164
198
  "Retro Anime",
165
199
  "Retro Sci-Fi",
166
200
  "Samurai",
167
201
  "Samurai Bot",
202
+ "Sharp Anime",
203
+ "Soft Anime",
168
204
  "Solid Snake",
169
205
  "Spartan",
170
206
  "Starfield",
@@ -172,28 +208,34 @@ class _SerializerPostV1VideoToVideoBodyStyle(pydantic.BaseModel):
172
208
  "Studio Ghibli",
173
209
  "Sub-Zero",
174
210
  "The Void",
211
+ "Tomb Raider",
175
212
  "Underwater",
176
213
  "Van Gogh",
177
214
  "Viking",
178
215
  "Watercolor",
216
+ "Western Anime",
179
217
  "Wu Kong",
218
+ "Wuxia Anime",
180
219
  "Zelda",
181
220
  ] = pydantic.Field(
182
221
  alias="art_style",
183
222
  )
184
- model: typing_extensions.Literal[
185
- "Absolute Reality", "Dreamshaper", "Flat 2D Anime", "default"
186
- ] = pydantic.Field(
187
- alias="model",
188
- )
189
- prompt: typing.Optional[str] = pydantic.Field(
190
- alias="prompt",
191
- )
192
- prompt_type: typing_extensions.Literal["append_default", "custom", "default"] = (
193
- pydantic.Field(
194
- alias="prompt_type",
195
- )
196
- )
197
- version: typing_extensions.Literal["default", "v1", "v2"] = pydantic.Field(
198
- alias="version",
223
+ model: typing.Optional[
224
+ typing_extensions.Literal[
225
+ "3D Anime",
226
+ "Absolute Reality",
227
+ "Dreamshaper",
228
+ "Flat 2D Anime",
229
+ "Kaywaii",
230
+ "Soft Anime",
231
+ "Western Anime",
232
+ "default",
233
+ ]
234
+ ] = pydantic.Field(alias="model", default=None)
235
+ prompt: typing.Optional[str] = pydantic.Field(alias="prompt", default=None)
236
+ prompt_type: typing.Optional[
237
+ typing_extensions.Literal["append_default", "custom", "default"]
238
+ ] = pydantic.Field(alias="prompt_type", default=None)
239
+ version: typing.Optional[typing_extensions.Literal["default", "v1", "v2"]] = (
240
+ pydantic.Field(alias="version", default=None)
199
241
  )
@@ -0,0 +1,27 @@
1
+ import pydantic
2
+ import typing
3
+ import typing_extensions
4
+
5
+
6
+ class V1VideoToVideoGenerateBodyAssets(typing_extensions.TypedDict):
7
+ """
8
+ Provide the assets for video-to-video. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
9
+ """
10
+
11
+ video_file_path: typing_extensions.NotRequired[str]
12
+ """
13
+ Required if `video_source` is `file`. This value is either
14
+ - a direct URL to the video file
15
+ - a path to a local file
16
+
17
+ Note: if the path begins with `api-assets`, it will be assumed to already be uploaded to Magic Hour's storage, and will not be uploaded again.
18
+ """
19
+
20
+ video_source: typing_extensions.Required[
21
+ typing_extensions.Literal["file", "youtube"]
22
+ ]
23
+
24
+ youtube_url: typing_extensions.NotRequired[str]
25
+ """
26
+ Using a youtube video as the input source. This field is required if `video_source` is `youtube`
27
+ """
@@ -0,0 +1,328 @@
1
+ Metadata-Version: 2.1
2
+ Name: magic_hour
3
+ Version: 0.44.0
4
+ Summary: Python SDK for Magic Hour API
5
+ Requires-Python: >=3.8,<4.0
6
+ Classifier: Programming Language :: Python :: 3
7
+ Classifier: Programming Language :: Python :: 3.8
8
+ Classifier: Programming Language :: Python :: 3.9
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Requires-Dist: make-api-request (>=0.1.3,<0.2.0)
14
+ Description-Content-Type: text/markdown
15
+
16
+ # Magic Hour Python SDK
17
+
18
+ [![PyPI - Version](https://img.shields.io/pypi/v/magic_hour)](https://pypi.org/project/magic_hour/)
19
+
20
+ The Magic Hour Python Library provides convenient access to the Magic Hour API. This library offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
21
+
22
+ ## Documentation
23
+
24
+ For full documentation of all APIs, please visit https://docs.magichour.ai
25
+
26
+ If you have any questions, please reach out to us via [discord](https://discord.gg/JX5rgsZaJp).
27
+
28
+ ## Install
29
+
30
+ ```sh
31
+ pip install magic_hour
32
+ ```
33
+
34
+ ## Cookbook
35
+
36
+ For end-to-end examples demonstrating all available Magic Hour APIs, check out our interactive Google Colab cookbook:
37
+
38
+ - **Interactive Notebook**: [Magic Hour API Cookbook](https://colab.research.google.com/drive/1NTHL_lr_s-qBJ-mSecSXPzRLi9_V5JiU?usp=sharing)
39
+
40
+ The cookbook includes:
41
+
42
+ - Setup instructions
43
+ - Examples for all available APIs (image generation, face swap, lip sync, video generation, and more)
44
+ - Display helpers for previewing outputs
45
+ - Production-ready patterns and best practices
46
+
47
+ ## Synchronous Client Usage
48
+
49
+ ```python
50
+ from magic_hour import Client
51
+
52
+ # generate your API Key at https://magichour.ai/developer
53
+ client = Client(token="my api key")
54
+
55
+ response = client.v1.face_swap_photo.generate(
56
+ assets={
57
+ "face_swap_mode": "all-faces",
58
+ "source_file_path": "/path/to/source/image.png",
59
+ "target_file_path": "/path/to/target/image.png",
60
+ },
61
+ name="Face Swap image",
62
+ wait_for_completion=True,
63
+ download_outputs=True,
64
+ download_directory="./outputs/",
65
+ )
66
+ print(f"Project ID: {response.id}")
67
+ print(f"Status: {response.status}")
68
+ print(f"Downloaded files: {response.downloaded_paths}")
69
+ ```
70
+
71
+ ### Asynchronous Client Usage
72
+
73
+ ```python
74
+ from magic_hour import AsyncClient
75
+
76
+ # generate your API Key at https://magichour.ai/developer
77
+ client = AsyncClient(token="my api key")
78
+
79
+ response = await client.v1.face_swap_photo.generate(
80
+ assets={
81
+ "face_swap_mode": "all-faces",
82
+ "source_file_path": "/path/to/source/image.png",
83
+ "target_file_path": "/path/to/target/image.png",
84
+ },
85
+ name="Face Swap image",
86
+ wait_for_completion=True,
87
+ download_outputs=True,
88
+ download_directory="./outputs/",
89
+ )
90
+ print(f"Project ID: {response.id}")
91
+ print(f"Status: {response.status}")
92
+ print(f"Downloaded files: {response.downloaded_paths}")
93
+ ```
94
+
95
+ ## Client Functions
96
+
97
+ Most resources that generate media content support two methods:
98
+
99
+ - **`generate()`** - A high-level convenience method that handles the entire workflow
100
+ - **`create()`** - A low-level method that only initiates the generation process
101
+
102
+ ### Generate Function
103
+
104
+ The `generate()` function provides a complete end-to-end solution:
105
+
106
+ - Uploads local file to Magic Hour storage
107
+ - Calls the API to start generation
108
+ - Automatically polls for completion
109
+ - Downloads generated files to your local machine
110
+ - Returns both API response data and local file paths
111
+
112
+ **Additional Parameters:**
113
+
114
+ - `wait_for_completion` (bool, default True): Whether to wait for the project to complete.
115
+ - `download_outputs` (bool, default True): Whether to download the generated files
116
+ - `download_directory` (str, optional): Directory to save downloaded files (defaults to current directory)
117
+
118
+ ```python
119
+ # Generate function - handles everything automatically
120
+ response = client.v1.ai_image_generator.generate(
121
+ style={"prompt": "A beautiful sunset over mountains"},
122
+ name="Sunset Image",
123
+ wait_for_completion=True, # Wait for status to be complete/error/canceled
124
+ download_outputs=True, # Download files automatically
125
+ download_directory="./outputs/" # Where to save files
126
+ )
127
+
128
+ # You get both the API response AND downloaded file paths
129
+ print(f"Project ID: {response.id}")
130
+ print(f"Status: {response.status}")
131
+ print(f"Downloaded files: {response.downloaded_paths}")
132
+ ```
133
+
134
+ ### Create Function
135
+
136
+ The `create()` function provides granular control:
137
+
138
+ - Only calls the API to start the generation process
139
+ - Returns immediately with a project ID and amount of credits used
140
+ - Requires manual status checking and file downloading
141
+
142
+ ```python
143
+ # Create function - only starts the process
144
+ create_response = client.v1.ai_image_generator.create(
145
+ style={"prompt": "A beautiful sunset over mountains"},
146
+ name="Sunset Image"
147
+ )
148
+
149
+ # You get just the project ID and initial response
150
+ project_id = create_response.id
151
+ print(f"Started project: {project_id}")
152
+
153
+ # You must handle the rest:
154
+ # 1. Poll for completion. We provide a helper function to handle polling for you
155
+ result = client.v1.image_projects.check_status(
156
+ wait_for_completion=True,
157
+ download_outputs=False,
158
+ )
159
+ # 2. Download files using the download URLs
160
+ download_urls = result.downloads
161
+ # download the files using your preferred way
162
+ ```
163
+
164
+ ### Choosing Between Which Function to use
165
+
166
+ **Use `generate()` when:**
167
+
168
+ - You want a simple, one-call solution
169
+ - You're building a straightforward application
170
+ - You don't need custom polling or download logic
171
+
172
+ **Use `create()` when:**
173
+
174
+ - You need custom status checking logic
175
+ - You're integrating with existing job processing systems
176
+ - You want to separate generation initiation from completion handling
177
+ - You need fine-grained control over the entire workflow
178
+
179
+ ## Module Documentation and Snippets
180
+
181
+ ### [v1.ai_clothes_changer](magic_hour/resources/v1/ai_clothes_changer/README.md)
182
+
183
+ - [create](magic_hour/resources/v1/ai_clothes_changer/README.md#create) - AI Clothes Changer
184
+ - [generate](magic_hour/resources/v1/ai_clothes_changer/README.md#generate) - AI Clothes Changer Generate Workflow
185
+
186
+ ### [v1.ai_face_editor](magic_hour/resources/v1/ai_face_editor/README.md)
187
+
188
+ - [create](magic_hour/resources/v1/ai_face_editor/README.md#create) - AI Face Editor
189
+ - [generate](magic_hour/resources/v1/ai_face_editor/README.md#generate) - Ai Face Editor Generate Workflow
190
+
191
+ ### [v1.ai_gif_generator](magic_hour/resources/v1/ai_gif_generator/README.md)
192
+
193
+ - [create](magic_hour/resources/v1/ai_gif_generator/README.md#create) - AI GIF Generator
194
+ - [generate](magic_hour/resources/v1/ai_gif_generator/README.md#generate) - Ai Gif Generator Generate Workflow
195
+
196
+ ### [v1.ai_headshot_generator](magic_hour/resources/v1/ai_headshot_generator/README.md)
197
+
198
+ - [create](magic_hour/resources/v1/ai_headshot_generator/README.md#create) - AI Headshot Generator
199
+ - [generate](magic_hour/resources/v1/ai_headshot_generator/README.md#generate) - Ai Headshot Generator Generate Workflow
200
+
201
+ ### [v1.ai_image_editor](magic_hour/resources/v1/ai_image_editor/README.md)
202
+
203
+ - [create](magic_hour/resources/v1/ai_image_editor/README.md#create) - AI Image Editor
204
+ - [generate](magic_hour/resources/v1/ai_image_editor/README.md#generate) - Ai Image Editor Generate Workflow
205
+
206
+ ### [v1.ai_image_generator](magic_hour/resources/v1/ai_image_generator/README.md)
207
+
208
+ - [create](magic_hour/resources/v1/ai_image_generator/README.md#create) - AI Image Generator
209
+ - [generate](magic_hour/resources/v1/ai_image_generator/README.md#generate) - Ai Image Generator Generate Workflow
210
+
211
+ ### [v1.ai_image_upscaler](magic_hour/resources/v1/ai_image_upscaler/README.md)
212
+
213
+ - [create](magic_hour/resources/v1/ai_image_upscaler/README.md#create) - AI Image Upscaler
214
+ - [generate](magic_hour/resources/v1/ai_image_upscaler/README.md#generate) - Ai Image Upscaler Generate Workflow
215
+
216
+ ### [v1.ai_meme_generator](magic_hour/resources/v1/ai_meme_generator/README.md)
217
+
218
+ - [create](magic_hour/resources/v1/ai_meme_generator/README.md#create) - AI Meme Generator
219
+ - [generate](magic_hour/resources/v1/ai_meme_generator/README.md#generate) - Ai Meme Generator Generate Workflow
220
+
221
+ ### [v1.ai_photo_editor](magic_hour/resources/v1/ai_photo_editor/README.md)
222
+
223
+ - [create](magic_hour/resources/v1/ai_photo_editor/README.md#create) - AI Photo Editor
224
+ - [generate](magic_hour/resources/v1/ai_photo_editor/README.md#generate) - Ai Photo Editor Generate Workflow
225
+
226
+ ### [v1.ai_qr_code_generator](magic_hour/resources/v1/ai_qr_code_generator/README.md)
227
+
228
+ - [create](magic_hour/resources/v1/ai_qr_code_generator/README.md#create) - AI QR Code Generator
229
+ - [generate](magic_hour/resources/v1/ai_qr_code_generator/README.md#generate) - Ai Qr Code Generator Generate Workflow
230
+
231
+ ### [v1.ai_talking_photo](magic_hour/resources/v1/ai_talking_photo/README.md)
232
+
233
+ - [create](magic_hour/resources/v1/ai_talking_photo/README.md#create) - AI Talking Photo
234
+ - [generate](magic_hour/resources/v1/ai_talking_photo/README.md#generate) - Ai Talking Photo Generate Workflow
235
+
236
+ ### [v1.ai_voice_cloner](magic_hour/resources/v1/ai_voice_cloner/README.md)
237
+
238
+ - [create](magic_hour/resources/v1/ai_voice_cloner/README.md#create) - AI Voice Cloner
239
+
240
+ ### [v1.ai_voice_generator](magic_hour/resources/v1/ai_voice_generator/README.md)
241
+
242
+ - [create](magic_hour/resources/v1/ai_voice_generator/README.md#create) - AI Voice Generator
243
+ - [generate](magic_hour/resources/v1/ai_voice_generator/README.md#generate) - Ai Talking Photo Generate Workflow
244
+
245
+ ### [v1.animation](magic_hour/resources/v1/animation/README.md)
246
+
247
+ - [create](magic_hour/resources/v1/animation/README.md#create) - Animation
248
+ - [generate](magic_hour/resources/v1/animation/README.md#generate) - Animation Generate Workflow
249
+
250
+ ### [v1.audio_projects](magic_hour/resources/v1/audio_projects/README.md)
251
+
252
+ - [check-result](magic_hour/resources/v1/audio_projects/README.md#check-result) - Check results
253
+ - [delete](magic_hour/resources/v1/audio_projects/README.md#delete) - Delete audio
254
+ - [get](magic_hour/resources/v1/audio_projects/README.md#get) - Get audio details
255
+
256
+ ### [v1.auto_subtitle_generator](magic_hour/resources/v1/auto_subtitle_generator/README.md)
257
+
258
+ - [create](magic_hour/resources/v1/auto_subtitle_generator/README.md#create) - Auto Subtitle Generator
259
+ - [generate](magic_hour/resources/v1/auto_subtitle_generator/README.md#generate) - Auto Subtitle Generator Generate Workflow
260
+
261
+ ### [v1.face_detection](magic_hour/resources/v1/face_detection/README.md)
262
+
263
+ - [create](magic_hour/resources/v1/face_detection/README.md#create) - Face Detection
264
+ - [generate](magic_hour/resources/v1/face_detection/README.md#generate) - Face Detection Generate Workflow
265
+ - [get](magic_hour/resources/v1/face_detection/README.md#get) - Get face detection details
266
+
267
+ ### [v1.face_swap](magic_hour/resources/v1/face_swap/README.md)
268
+
269
+ - [create](magic_hour/resources/v1/face_swap/README.md#create) - Face Swap Video
270
+ - [generate](magic_hour/resources/v1/face_swap/README.md#generate) - Face Swap Generate Workflow
271
+
272
+ ### [v1.face_swap_photo](magic_hour/resources/v1/face_swap_photo/README.md)
273
+
274
+ - [create](magic_hour/resources/v1/face_swap_photo/README.md#create) - Face Swap Photo
275
+ - [generate](magic_hour/resources/v1/face_swap_photo/README.md#generate) - Face Swap Photo Generate Workflow
276
+
277
+ ### [v1.files](magic_hour/resources/v1/files/README.md)
278
+
279
+ - [upload-file](magic_hour/resources/v1/files/README.md#upload-file) - Upload File
280
+
281
+ ### [v1.files.upload_urls](magic_hour/resources/v1/files/upload_urls/README.md)
282
+
283
+ - [create](magic_hour/resources/v1/files/upload_urls/README.md#create) - Generate asset upload urls
284
+
285
+ ### [v1.image_background_remover](magic_hour/resources/v1/image_background_remover/README.md)
286
+
287
+ - [create](magic_hour/resources/v1/image_background_remover/README.md#create) - Image Background Remover
288
+ - [generate](magic_hour/resources/v1/image_background_remover/README.md#generate) - Image Background Remover Generate Workflow
289
+
290
+ ### [v1.image_projects](magic_hour/resources/v1/image_projects/README.md)
291
+
292
+ - [check-result](magic_hour/resources/v1/image_projects/README.md#check-result) - Check results
293
+ - [delete](magic_hour/resources/v1/image_projects/README.md#delete) - Delete image
294
+ - [get](magic_hour/resources/v1/image_projects/README.md#get) - Get image details
295
+
296
+ ### [v1.image_to_video](magic_hour/resources/v1/image_to_video/README.md)
297
+
298
+ - [create](magic_hour/resources/v1/image_to_video/README.md#create) - Image-to-Video
299
+ - [generate](magic_hour/resources/v1/image_to_video/README.md#generate) - Image To Video Generate Workflow
300
+
301
+ ### [v1.lip_sync](magic_hour/resources/v1/lip_sync/README.md)
302
+
303
+ - [create](magic_hour/resources/v1/lip_sync/README.md#create) - Lip Sync
304
+ - [generate](magic_hour/resources/v1/lip_sync/README.md#generate) - Lip Sync Generate Workflow
305
+
306
+ ### [v1.photo_colorizer](magic_hour/resources/v1/photo_colorizer/README.md)
307
+
308
+ - [create](magic_hour/resources/v1/photo_colorizer/README.md#create) - Photo Colorizer
309
+ - [generate](magic_hour/resources/v1/photo_colorizer/README.md#generate) - Photo Colorizer Generate Workflow
310
+
311
+ ### [v1.text_to_video](magic_hour/resources/v1/text_to_video/README.md)
312
+
313
+ - [create](magic_hour/resources/v1/text_to_video/README.md#create) - Text-to-Video
314
+ - [generate](magic_hour/resources/v1/text_to_video/README.md#generate) - Text To Video Generate Workflow
315
+
316
+ ### [v1.video_projects](magic_hour/resources/v1/video_projects/README.md)
317
+
318
+ - [check-result](magic_hour/resources/v1/video_projects/README.md#check-result) - Check results
319
+ - [delete](magic_hour/resources/v1/video_projects/README.md#delete) - Delete video
320
+ - [get](magic_hour/resources/v1/video_projects/README.md#get) - Get video details
321
+
322
+ ### [v1.video_to_video](magic_hour/resources/v1/video_to_video/README.md)
323
+
324
+ - [create](magic_hour/resources/v1/video_to_video/README.md#create) - Video-to-Video
325
+ - [generate](magic_hour/resources/v1/video_to_video/README.md#generate) - Video To Video Generate Workflow
326
+
327
+ <!-- MODULE DOCS END -->
328
+