magic_hour 0.19.0__tar.gz → 0.21.0__tar.gz

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.

Files changed (164) hide show
  1. {magic_hour-0.19.0 → magic_hour-0.21.0}/PKG-INFO +1 -1
  2. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/environment.py +1 -1
  3. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_gif_generator/README.md +1 -1
  4. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_gif_generator/client.py +2 -2
  5. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_photo_editor/README.md +4 -0
  6. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_photo_editor/client.py +4 -0
  7. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/video_to_video/client.py +52 -16
  8. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_photo_editor_create_body_style.py +16 -0
  9. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_video_to_video_create_body.py +20 -10
  10. {magic_hour-0.19.0 → magic_hour-0.21.0}/pyproject.toml +1 -1
  11. {magic_hour-0.19.0 → magic_hour-0.21.0}/LICENSE +0 -0
  12. {magic_hour-0.19.0 → magic_hour-0.21.0}/README.md +0 -0
  13. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/__init__.py +0 -0
  14. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/client.py +0 -0
  15. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/core/__init__.py +0 -0
  16. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/core/api_error.py +0 -0
  17. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/core/auth.py +0 -0
  18. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/core/base_client.py +0 -0
  19. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/core/binary_response.py +0 -0
  20. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/core/query.py +0 -0
  21. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/core/request.py +0 -0
  22. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/core/response.py +0 -0
  23. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/core/type_utils.py +0 -0
  24. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/core/utils.py +0 -0
  25. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/__init__.py +0 -0
  26. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_clothes_changer/README.md +0 -0
  27. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_clothes_changer/__init__.py +0 -0
  28. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_clothes_changer/client.py +0 -0
  29. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_face_editor/README.md +0 -0
  30. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_face_editor/__init__.py +0 -0
  31. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_face_editor/client.py +0 -0
  32. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_gif_generator/__init__.py +0 -0
  33. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_headshot_generator/README.md +0 -0
  34. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_headshot_generator/__init__.py +0 -0
  35. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_headshot_generator/client.py +0 -0
  36. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_image_generator/README.md +0 -0
  37. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_image_generator/__init__.py +0 -0
  38. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_image_generator/client.py +0 -0
  39. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_image_upscaler/README.md +0 -0
  40. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_image_upscaler/__init__.py +0 -0
  41. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_image_upscaler/client.py +0 -0
  42. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_meme_generator/README.md +0 -0
  43. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_meme_generator/__init__.py +0 -0
  44. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_meme_generator/client.py +0 -0
  45. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_photo_editor/__init__.py +0 -0
  46. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_qr_code_generator/README.md +0 -0
  47. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_qr_code_generator/__init__.py +0 -0
  48. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_qr_code_generator/client.py +0 -0
  49. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_talking_photo/README.md +0 -0
  50. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_talking_photo/__init__.py +0 -0
  51. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/ai_talking_photo/client.py +0 -0
  52. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/animation/README.md +0 -0
  53. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/animation/__init__.py +0 -0
  54. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/animation/client.py +0 -0
  55. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/client.py +0 -0
  56. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/face_swap/README.md +0 -0
  57. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/face_swap/__init__.py +0 -0
  58. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/face_swap/client.py +0 -0
  59. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/face_swap_photo/README.md +0 -0
  60. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/face_swap_photo/__init__.py +0 -0
  61. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/face_swap_photo/client.py +0 -0
  62. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/files/__init__.py +0 -0
  63. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/files/client.py +0 -0
  64. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/files/upload_urls/README.md +0 -0
  65. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/files/upload_urls/__init__.py +0 -0
  66. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/files/upload_urls/client.py +0 -0
  67. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/image_background_remover/README.md +0 -0
  68. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/image_background_remover/__init__.py +0 -0
  69. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/image_background_remover/client.py +0 -0
  70. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/image_projects/README.md +0 -0
  71. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/image_projects/__init__.py +0 -0
  72. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/image_projects/client.py +0 -0
  73. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/image_to_video/README.md +0 -0
  74. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/image_to_video/__init__.py +0 -0
  75. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/image_to_video/client.py +0 -0
  76. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/lip_sync/README.md +0 -0
  77. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/lip_sync/__init__.py +0 -0
  78. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/lip_sync/client.py +0 -0
  79. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/photo_colorizer/README.md +0 -0
  80. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/photo_colorizer/__init__.py +0 -0
  81. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/photo_colorizer/client.py +0 -0
  82. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/text_to_video/README.md +0 -0
  83. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/text_to_video/__init__.py +0 -0
  84. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/text_to_video/client.py +0 -0
  85. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/video_projects/README.md +0 -0
  86. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/video_projects/__init__.py +0 -0
  87. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/video_projects/client.py +0 -0
  88. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/video_to_video/README.md +4 -4
  89. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/resources/v1/video_to_video/__init__.py +0 -0
  90. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/__init__.py +0 -0
  91. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_ai_clothes_changer_create_response.py +0 -0
  92. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_ai_face_editor_create_response.py +0 -0
  93. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_ai_gif_generator_create_response.py +0 -0
  94. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_ai_headshot_generator_create_response.py +0 -0
  95. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_ai_image_generator_create_response.py +0 -0
  96. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_ai_image_upscaler_create_response.py +0 -0
  97. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_ai_meme_generator_create_response.py +0 -0
  98. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_ai_photo_editor_create_response.py +0 -0
  99. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_ai_qr_code_generator_create_response.py +0 -0
  100. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_ai_talking_photo_create_response.py +0 -0
  101. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_animation_create_response.py +0 -0
  102. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_face_swap_create_response.py +0 -0
  103. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_face_swap_photo_create_response.py +0 -0
  104. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_files_upload_urls_create_response.py +0 -0
  105. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_files_upload_urls_create_response_items_item.py +0 -0
  106. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_image_background_remover_create_response.py +0 -0
  107. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_image_projects_get_response.py +0 -0
  108. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_image_projects_get_response_downloads_item.py +0 -0
  109. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_image_projects_get_response_error.py +0 -0
  110. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_image_to_video_create_response.py +0 -0
  111. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_lip_sync_create_response.py +0 -0
  112. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_photo_colorizer_create_response.py +0 -0
  113. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_text_to_video_create_response.py +0 -0
  114. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_video_projects_get_response.py +0 -0
  115. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_video_projects_get_response_download.py +0 -0
  116. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_video_projects_get_response_downloads_item.py +0 -0
  117. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_video_projects_get_response_error.py +0 -0
  118. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/models/v1_video_to_video_create_response.py +0 -0
  119. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/__init__.py +0 -0
  120. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_clothes_changer_create_body.py +0 -0
  121. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_clothes_changer_create_body_assets.py +0 -0
  122. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_face_editor_create_body.py +0 -0
  123. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_face_editor_create_body_assets.py +0 -0
  124. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_face_editor_create_body_style.py +0 -0
  125. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_gif_generator_create_body.py +0 -0
  126. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_gif_generator_create_body_style.py +0 -0
  127. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_headshot_generator_create_body.py +0 -0
  128. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_headshot_generator_create_body_assets.py +0 -0
  129. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_headshot_generator_create_body_style.py +0 -0
  130. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_image_generator_create_body.py +0 -0
  131. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_image_generator_create_body_style.py +0 -0
  132. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_image_upscaler_create_body.py +0 -0
  133. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_image_upscaler_create_body_assets.py +0 -0
  134. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_image_upscaler_create_body_style.py +0 -0
  135. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_meme_generator_create_body.py +0 -0
  136. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_meme_generator_create_body_style.py +0 -0
  137. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_photo_editor_create_body.py +0 -0
  138. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_photo_editor_create_body_assets.py +0 -0
  139. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_qr_code_generator_create_body.py +0 -0
  140. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_qr_code_generator_create_body_style.py +0 -0
  141. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_talking_photo_create_body.py +0 -0
  142. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_ai_talking_photo_create_body_assets.py +0 -0
  143. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_animation_create_body.py +0 -0
  144. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_animation_create_body_assets.py +0 -0
  145. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_animation_create_body_style.py +0 -0
  146. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_face_swap_create_body.py +0 -0
  147. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_face_swap_create_body_assets.py +0 -0
  148. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_face_swap_photo_create_body.py +0 -0
  149. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_face_swap_photo_create_body_assets.py +0 -0
  150. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_files_upload_urls_create_body.py +0 -0
  151. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_files_upload_urls_create_body_items_item.py +0 -0
  152. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_image_background_remover_create_body.py +0 -0
  153. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_image_background_remover_create_body_assets.py +0 -0
  154. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_image_to_video_create_body.py +0 -0
  155. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_image_to_video_create_body_assets.py +0 -0
  156. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_image_to_video_create_body_style.py +0 -0
  157. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_lip_sync_create_body.py +0 -0
  158. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_lip_sync_create_body_assets.py +0 -0
  159. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_photo_colorizer_create_body.py +0 -0
  160. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_photo_colorizer_create_body_assets.py +0 -0
  161. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_text_to_video_create_body.py +0 -0
  162. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_text_to_video_create_body_style.py +0 -0
  163. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_video_to_video_create_body_assets.py +0 -0
  164. {magic_hour-0.19.0 → magic_hour-0.21.0}/magic_hour/types/params/v1_video_to_video_create_body_style.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: magic_hour
3
- Version: 0.19.0
3
+ Version: 0.21.0
4
4
  Summary: Python SDK for Magic Hour API
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Programming Language :: Python :: 3
@@ -5,4 +5,4 @@ class Environment(enum.Enum):
5
5
  """Pre-defined base URLs for the API"""
6
6
 
7
7
  ENVIRONMENT = "https://api.magichour.ai"
8
- MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.19.0"
8
+ MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.21.0"
@@ -2,7 +2,7 @@
2
2
  ### create <a name="create"></a>
3
3
  AI GIFs
4
4
 
5
- Create an AI GIF. Each GIF costs 5 frames.
5
+ Create an AI GIF. Each GIF costs 25 frames.
6
6
 
7
7
  **API Endpoint**: `POST /v1/ai-gif-generator`
8
8
 
@@ -27,7 +27,7 @@ class AiGifGeneratorClient:
27
27
  """
28
28
  AI GIFs
29
29
 
30
- Create an AI GIF. Each GIF costs 5 frames.
30
+ Create an AI GIF. Each GIF costs 25 frames.
31
31
 
32
32
  POST /v1/ai-gif-generator
33
33
 
@@ -80,7 +80,7 @@ class AsyncAiGifGeneratorClient:
80
80
  """
81
81
  AI GIFs
82
82
 
83
- Create an AI GIF. Each GIF costs 5 frames.
83
+ Create an AI GIF. Each GIF costs 25 frames.
84
84
 
85
85
  POST /v1/ai-gif-generator
86
86
 
@@ -25,6 +25,8 @@ res = client.v1.ai_photo_editor.create(
25
25
  "prompt": "A photo portrait of a person wearing a hat",
26
26
  "prompt_strength": 3.75,
27
27
  "steps": 4,
28
+ "upscale_factor": 2,
29
+ "upscale_fidelity": 0.5,
28
30
  },
29
31
  name="Photo Editor image",
30
32
  )
@@ -47,6 +49,8 @@ res = await client.v1.ai_photo_editor.create(
47
49
  "prompt": "A photo portrait of a person wearing a hat",
48
50
  "prompt_strength": 3.75,
49
51
  "steps": 4,
52
+ "upscale_factor": 2,
53
+ "upscale_fidelity": 0.5,
50
54
  },
51
55
  name="Photo Editor image",
52
56
  )
@@ -65,6 +65,8 @@ class AiPhotoEditorClient:
65
65
  "prompt": "A photo portrait of a person wearing a hat",
66
66
  "prompt_strength": 3.75,
67
67
  "steps": 4,
68
+ "upscale_factor": 2,
69
+ "upscale_fidelity": 0.5,
68
70
  },
69
71
  name="Photo Editor image",
70
72
  )
@@ -144,6 +146,8 @@ class AsyncAiPhotoEditorClient:
144
146
  "prompt": "A photo portrait of a person wearing a hat",
145
147
  "prompt_strength": 3.75,
146
148
  "steps": 4,
149
+ "upscale_factor": 2,
150
+ "upscale_fidelity": 0.5,
147
151
  },
148
152
  name="Photo Editor image",
149
153
  )
@@ -21,17 +21,21 @@ class VideoToVideoClient:
21
21
  *,
22
22
  assets: params.V1VideoToVideoCreateBodyAssets,
23
23
  end_seconds: float,
24
- height: int,
25
24
  start_seconds: float,
26
25
  style: params.V1VideoToVideoCreateBodyStyle,
27
- width: int,
28
26
  fps_resolution: typing.Union[
29
27
  typing.Optional[typing_extensions.Literal["FULL", "HALF"]],
30
28
  type_utils.NotGiven,
31
29
  ] = type_utils.NOT_GIVEN,
30
+ height: typing.Union[
31
+ typing.Optional[int], type_utils.NotGiven
32
+ ] = type_utils.NOT_GIVEN,
32
33
  name: typing.Union[
33
34
  typing.Optional[str], type_utils.NotGiven
34
35
  ] = type_utils.NOT_GIVEN,
36
+ width: typing.Union[
37
+ typing.Optional[int], type_utils.NotGiven
38
+ ] = type_utils.NOT_GIVEN,
35
39
  request_options: typing.Optional[RequestOptions] = None,
36
40
  ) -> models.V1VideoToVideoCreateResponse:
37
41
  """
@@ -48,13 +52,27 @@ class VideoToVideoClient:
48
52
  fps_resolution: Determines whether the resulting video will have the same frame per second as the original video, or half.
49
53
  * `FULL` - the result video will have the same FPS as the input video
50
54
  * `HALF` - the result video will have half the FPS as the input video
55
+ height: Used to determine the dimensions of the output video.
56
+
57
+ * 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.
58
+ * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.
59
+
60
+ Note: if the video's original resolution is less than the maximum, the video will not be resized.
61
+
62
+ See our [pricing page](https://magichour.ai/pricing) for more details.
51
63
  name: The name of video
64
+ width: Used to determine the dimensions of the output video.
65
+
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.
67
+ * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.
68
+
69
+ Note: if the video's original resolution is less than the maximum, the video will not be resized.
70
+
71
+ See our [pricing page](https://magichour.ai/pricing) for more details.
52
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
53
73
  end_seconds: The end time of the input video in seconds
54
- height: The height of the final output video. Must be divisible by 64. The maximum height depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
55
74
  start_seconds: The start time of the input video in seconds
56
75
  style: V1VideoToVideoCreateBodyStyle
57
- width: The width of the final output video. Must be divisible by 64. The maximum width depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
58
76
  request_options: Additional options to customize the HTTP request
59
77
 
60
78
  Returns:
@@ -72,7 +90,6 @@ class VideoToVideoClient:
72
90
  "video_source": "file",
73
91
  },
74
92
  end_seconds=15.0,
75
- height=960,
76
93
  start_seconds=0.0,
77
94
  style={
78
95
  "art_style": "3D Render",
@@ -81,22 +98,23 @@ class VideoToVideoClient:
81
98
  "prompt_type": "append_default",
82
99
  "version": "default",
83
100
  },
84
- width=512,
85
101
  fps_resolution="HALF",
102
+ height=960,
86
103
  name="Video To Video video",
104
+ width=512,
87
105
  )
88
106
  ```
89
107
  """
90
108
  _json = to_encodable(
91
109
  item={
92
110
  "fps_resolution": fps_resolution,
111
+ "height": height,
93
112
  "name": name,
113
+ "width": width,
94
114
  "assets": assets,
95
115
  "end_seconds": end_seconds,
96
- "height": height,
97
116
  "start_seconds": start_seconds,
98
117
  "style": style,
99
- "width": width,
100
118
  },
101
119
  dump_with=params._SerializerV1VideoToVideoCreateBody,
102
120
  )
@@ -119,17 +137,21 @@ class AsyncVideoToVideoClient:
119
137
  *,
120
138
  assets: params.V1VideoToVideoCreateBodyAssets,
121
139
  end_seconds: float,
122
- height: int,
123
140
  start_seconds: float,
124
141
  style: params.V1VideoToVideoCreateBodyStyle,
125
- width: int,
126
142
  fps_resolution: typing.Union[
127
143
  typing.Optional[typing_extensions.Literal["FULL", "HALF"]],
128
144
  type_utils.NotGiven,
129
145
  ] = type_utils.NOT_GIVEN,
146
+ height: typing.Union[
147
+ typing.Optional[int], type_utils.NotGiven
148
+ ] = type_utils.NOT_GIVEN,
130
149
  name: typing.Union[
131
150
  typing.Optional[str], type_utils.NotGiven
132
151
  ] = type_utils.NOT_GIVEN,
152
+ width: typing.Union[
153
+ typing.Optional[int], type_utils.NotGiven
154
+ ] = type_utils.NOT_GIVEN,
133
155
  request_options: typing.Optional[RequestOptions] = None,
134
156
  ) -> models.V1VideoToVideoCreateResponse:
135
157
  """
@@ -146,13 +168,27 @@ class AsyncVideoToVideoClient:
146
168
  fps_resolution: Determines whether the resulting video will have the same frame per second as the original video, or half.
147
169
  * `FULL` - the result video will have the same FPS as the input video
148
170
  * `HALF` - the result video will have half the FPS as the input video
171
+ height: Used to determine the dimensions of the output video.
172
+
173
+ * 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.
174
+ * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.
175
+
176
+ Note: if the video's original resolution is less than the maximum, the video will not be resized.
177
+
178
+ See our [pricing page](https://magichour.ai/pricing) for more details.
149
179
  name: The name of video
180
+ width: Used to determine the dimensions of the output video.
181
+
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.
183
+ * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.
184
+
185
+ Note: if the video's original resolution is less than the maximum, the video will not be resized.
186
+
187
+ See our [pricing page](https://magichour.ai/pricing) for more details.
150
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
151
189
  end_seconds: The end time of the input video in seconds
152
- height: The height of the final output video. Must be divisible by 64. The maximum height depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
153
190
  start_seconds: The start time of the input video in seconds
154
191
  style: V1VideoToVideoCreateBodyStyle
155
- width: The width of the final output video. Must be divisible by 64. The maximum width depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
156
192
  request_options: Additional options to customize the HTTP request
157
193
 
158
194
  Returns:
@@ -170,7 +206,6 @@ class AsyncVideoToVideoClient:
170
206
  "video_source": "file",
171
207
  },
172
208
  end_seconds=15.0,
173
- height=960,
174
209
  start_seconds=0.0,
175
210
  style={
176
211
  "art_style": "3D Render",
@@ -179,22 +214,23 @@ class AsyncVideoToVideoClient:
179
214
  "prompt_type": "append_default",
180
215
  "version": "default",
181
216
  },
182
- width=512,
183
217
  fps_resolution="HALF",
218
+ height=960,
184
219
  name="Video To Video video",
220
+ width=512,
185
221
  )
186
222
  ```
187
223
  """
188
224
  _json = to_encodable(
189
225
  item={
190
226
  "fps_resolution": fps_resolution,
227
+ "height": height,
191
228
  "name": name,
229
+ "width": width,
192
230
  "assets": assets,
193
231
  "end_seconds": end_seconds,
194
- "height": height,
195
232
  "start_seconds": start_seconds,
196
233
  "style": style,
197
- "width": width,
198
234
  },
199
235
  dump_with=params._SerializerV1VideoToVideoCreateBody,
200
236
  )
@@ -38,6 +38,16 @@ class V1AiPhotoEditorCreateBodyStyle(typing_extensions.TypedDict):
38
38
  Number of iterations used to generate the output. Higher values improve quality and increase the strength of the prompt but increase processing time.
39
39
  """
40
40
 
41
+ upscale_factor: typing_extensions.NotRequired[int]
42
+ """
43
+ The multiplier applied to an image's original dimensions during the upscaling process. For example, a scale of 2 doubles the width and height (e.g., from 512x512 to 1024x1024).
44
+ """
45
+
46
+ upscale_fidelity: typing_extensions.NotRequired[float]
47
+ """
48
+ Upscale fidelity refers to the level of quality desired in the generated image. Fidelity value of 1 means more details.
49
+ """
50
+
41
51
 
42
52
  class _SerializerV1AiPhotoEditorCreateBodyStyle(pydantic.BaseModel):
43
53
  """
@@ -65,3 +75,9 @@ class _SerializerV1AiPhotoEditorCreateBodyStyle(pydantic.BaseModel):
65
75
  alias="prompt_strength",
66
76
  )
67
77
  steps: typing.Optional[int] = pydantic.Field(alias="steps", default=None)
78
+ upscale_factor: typing.Optional[int] = pydantic.Field(
79
+ alias="upscale_factor", default=None
80
+ )
81
+ upscale_fidelity: typing.Optional[float] = pydantic.Field(
82
+ alias="upscale_fidelity", default=None
83
+ )
@@ -36,9 +36,16 @@ class V1VideoToVideoCreateBody(typing_extensions.TypedDict):
36
36
  * `HALF` - the result video will have half the FPS as the input video
37
37
  """
38
38
 
39
- height: typing_extensions.Required[int]
39
+ height: typing_extensions.NotRequired[int]
40
40
  """
41
- The height of the final output video. Must be divisible by 64. The maximum height depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
41
+ Used to determine the dimensions of the output video.
42
+
43
+ * 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.
44
+ * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.
45
+
46
+ Note: if the video's original resolution is less than the maximum, the video will not be resized.
47
+
48
+ See our [pricing page](https://magichour.ai/pricing) for more details.
42
49
  """
43
50
 
44
51
  name: typing_extensions.NotRequired[str]
@@ -53,9 +60,16 @@ class V1VideoToVideoCreateBody(typing_extensions.TypedDict):
53
60
 
54
61
  style: typing_extensions.Required[V1VideoToVideoCreateBodyStyle]
55
62
 
56
- width: typing_extensions.Required[int]
63
+ width: typing_extensions.NotRequired[int]
57
64
  """
58
- The width of the final output video. Must be divisible by 64. The maximum width depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
65
+ Used to determine the dimensions of the output video.
66
+
67
+ * 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.
68
+ * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.
69
+
70
+ Note: if the video's original resolution is less than the maximum, the video will not be resized.
71
+
72
+ See our [pricing page](https://magichour.ai/pricing) for more details.
59
73
  """
60
74
 
61
75
 
@@ -78,9 +92,7 @@ class _SerializerV1VideoToVideoCreateBody(pydantic.BaseModel):
78
92
  fps_resolution: typing.Optional[typing_extensions.Literal["FULL", "HALF"]] = (
79
93
  pydantic.Field(alias="fps_resolution", default=None)
80
94
  )
81
- height: int = pydantic.Field(
82
- alias="height",
83
- )
95
+ height: typing.Optional[int] = pydantic.Field(alias="height", default=None)
84
96
  name: typing.Optional[str] = pydantic.Field(alias="name", default=None)
85
97
  start_seconds: float = pydantic.Field(
86
98
  alias="start_seconds",
@@ -88,6 +100,4 @@ class _SerializerV1VideoToVideoCreateBody(pydantic.BaseModel):
88
100
  style: _SerializerV1VideoToVideoCreateBodyStyle = pydantic.Field(
89
101
  alias="style",
90
102
  )
91
- width: int = pydantic.Field(
92
- alias="width",
93
- )
103
+ width: typing.Optional[int] = pydantic.Field(alias="width", default=None)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "magic_hour"
3
- version = "0.19.0"
3
+ version = "0.21.0"
4
4
  description = "Python SDK for Magic Hour API"
5
5
  readme = "README.md"
6
6
  authors = []
File without changes
File without changes
@@ -19,7 +19,6 @@ client = Client(token=getenv("API_TOKEN"))
19
19
  res = client.v1.video_to_video.create(
20
20
  assets={"video_file_path": "api-assets/id/1234.mp4", "video_source": "file"},
21
21
  end_seconds=15.0,
22
- height=960,
23
22
  start_seconds=0.0,
24
23
  style={
25
24
  "art_style": "3D Render",
@@ -28,9 +27,10 @@ res = client.v1.video_to_video.create(
28
27
  "prompt_type": "append_default",
29
28
  "version": "default",
30
29
  },
31
- width=512,
32
30
  fps_resolution="HALF",
31
+ height=960,
33
32
  name="Video To Video video",
33
+ width=512,
34
34
  )
35
35
  ```
36
36
 
@@ -44,7 +44,6 @@ client = AsyncClient(token=getenv("API_TOKEN"))
44
44
  res = await client.v1.video_to_video.create(
45
45
  assets={"video_file_path": "api-assets/id/1234.mp4", "video_source": "file"},
46
46
  end_seconds=15.0,
47
- height=960,
48
47
  start_seconds=0.0,
49
48
  style={
50
49
  "art_style": "3D Render",
@@ -53,8 +52,9 @@ res = await client.v1.video_to_video.create(
53
52
  "prompt_type": "append_default",
54
53
  "version": "default",
55
54
  },
56
- width=512,
57
55
  fps_resolution="HALF",
56
+ height=960,
58
57
  name="Video To Video video",
58
+ width=512,
59
59
  )
60
60
  ```