magic_hour 0.30.0__tar.gz → 0.31.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 (190) hide show
  1. {magic_hour-0.30.0 → magic_hour-0.31.0}/PKG-INFO +1 -1
  2. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/environment.py +1 -1
  3. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/face_detection/client.py +2 -0
  4. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/face_swap/README.md +16 -2
  5. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/face_swap/client.py +16 -2
  6. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/face_swap_photo/README.md +1 -1
  7. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/face_swap_photo/client.py +2 -2
  8. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/image_to_video/README.md +1 -1
  9. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/image_to_video/client.py +2 -2
  10. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/lip_sync/README.md +1 -1
  11. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/lip_sync/client.py +2 -2
  12. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/text_to_video/README.md +1 -1
  13. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/text_to_video/client.py +2 -2
  14. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/video_to_video/README.md +1 -1
  15. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/video_to_video/client.py +2 -2
  16. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/__init__.py +6 -0
  17. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_face_swap_create_body_assets.py +30 -1
  18. magic_hour-0.31.0/magic_hour/types/params/v1_face_swap_create_body_assets_face_mappings_item.py +39 -0
  19. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_face_swap_photo_create_body_assets.py +2 -2
  20. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_face_swap_photo_create_body_assets_face_mappings_item.py +1 -1
  21. {magic_hour-0.30.0 → magic_hour-0.31.0}/pyproject.toml +1 -1
  22. {magic_hour-0.30.0 → magic_hour-0.31.0}/LICENSE +0 -0
  23. {magic_hour-0.30.0 → magic_hour-0.31.0}/README.md +0 -0
  24. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/__init__.py +0 -0
  25. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/client.py +0 -0
  26. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/core/__init__.py +0 -0
  27. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/core/api_error.py +0 -0
  28. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/core/auth.py +0 -0
  29. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/core/base_client.py +0 -0
  30. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/core/binary_response.py +0 -0
  31. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/core/query.py +0 -0
  32. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/core/request.py +0 -0
  33. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/core/response.py +0 -0
  34. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/core/type_utils.py +0 -0
  35. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/core/utils.py +0 -0
  36. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/__init__.py +0 -0
  37. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_clothes_changer/README.md +0 -0
  38. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_clothes_changer/__init__.py +0 -0
  39. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_clothes_changer/client.py +0 -0
  40. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_face_editor/README.md +0 -0
  41. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_face_editor/__init__.py +0 -0
  42. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_face_editor/client.py +0 -0
  43. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_gif_generator/README.md +0 -0
  44. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_gif_generator/__init__.py +0 -0
  45. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_gif_generator/client.py +0 -0
  46. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_headshot_generator/README.md +0 -0
  47. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_headshot_generator/__init__.py +0 -0
  48. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_headshot_generator/client.py +0 -0
  49. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_image_editor/README.md +0 -0
  50. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_image_editor/__init__.py +0 -0
  51. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_image_editor/client.py +0 -0
  52. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_image_generator/README.md +0 -0
  53. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_image_generator/__init__.py +0 -0
  54. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_image_generator/client.py +0 -0
  55. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_image_upscaler/README.md +0 -0
  56. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_image_upscaler/__init__.py +0 -0
  57. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_image_upscaler/client.py +0 -0
  58. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_meme_generator/README.md +0 -0
  59. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_meme_generator/__init__.py +0 -0
  60. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_meme_generator/client.py +0 -0
  61. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_photo_editor/README.md +0 -0
  62. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_photo_editor/__init__.py +0 -0
  63. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_photo_editor/client.py +0 -0
  64. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_qr_code_generator/README.md +0 -0
  65. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_qr_code_generator/__init__.py +0 -0
  66. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_qr_code_generator/client.py +0 -0
  67. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_talking_photo/README.md +0 -0
  68. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_talking_photo/__init__.py +0 -0
  69. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/ai_talking_photo/client.py +0 -0
  70. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/animation/README.md +0 -0
  71. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/animation/__init__.py +0 -0
  72. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/animation/client.py +0 -0
  73. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/auto_subtitle_generator/README.md +0 -0
  74. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/auto_subtitle_generator/__init__.py +0 -0
  75. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/auto_subtitle_generator/client.py +0 -0
  76. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/client.py +0 -0
  77. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/face_detection/README.md +0 -0
  78. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/face_detection/__init__.py +0 -0
  79. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/face_swap/__init__.py +0 -0
  80. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/face_swap_photo/__init__.py +0 -0
  81. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/files/__init__.py +0 -0
  82. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/files/client.py +0 -0
  83. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/files/upload_urls/README.md +0 -0
  84. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/files/upload_urls/__init__.py +0 -0
  85. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/files/upload_urls/client.py +0 -0
  86. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/image_background_remover/README.md +0 -0
  87. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/image_background_remover/__init__.py +0 -0
  88. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/image_background_remover/client.py +0 -0
  89. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/image_projects/README.md +0 -0
  90. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/image_projects/__init__.py +0 -0
  91. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/image_projects/client.py +0 -0
  92. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/image_to_video/__init__.py +0 -0
  93. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/lip_sync/__init__.py +0 -0
  94. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/photo_colorizer/README.md +0 -0
  95. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/photo_colorizer/__init__.py +0 -0
  96. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/photo_colorizer/client.py +0 -0
  97. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/text_to_video/__init__.py +0 -0
  98. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/video_projects/README.md +0 -0
  99. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/video_projects/__init__.py +0 -0
  100. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/video_projects/client.py +0 -0
  101. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/resources/v1/video_to_video/__init__.py +0 -0
  102. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/__init__.py +0 -0
  103. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_ai_clothes_changer_create_response.py +0 -0
  104. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_ai_face_editor_create_response.py +0 -0
  105. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_ai_gif_generator_create_response.py +0 -0
  106. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_ai_headshot_generator_create_response.py +0 -0
  107. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_ai_image_editor_create_response.py +0 -0
  108. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_ai_image_generator_create_response.py +0 -0
  109. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_ai_image_upscaler_create_response.py +0 -0
  110. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_ai_meme_generator_create_response.py +0 -0
  111. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_ai_photo_editor_create_response.py +0 -0
  112. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_ai_qr_code_generator_create_response.py +0 -0
  113. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_ai_talking_photo_create_response.py +0 -0
  114. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_animation_create_response.py +0 -0
  115. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_auto_subtitle_generator_create_response.py +0 -0
  116. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_face_detection_create_response.py +0 -0
  117. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_face_detection_get_response.py +0 -0
  118. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_face_detection_get_response_faces_item.py +0 -0
  119. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_face_swap_create_response.py +0 -0
  120. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_face_swap_photo_create_response.py +0 -0
  121. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_files_upload_urls_create_response.py +0 -0
  122. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_files_upload_urls_create_response_items_item.py +0 -0
  123. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_image_background_remover_create_response.py +0 -0
  124. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_image_projects_get_response.py +0 -0
  125. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_image_projects_get_response_downloads_item.py +0 -0
  126. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_image_projects_get_response_error.py +0 -0
  127. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_image_to_video_create_response.py +0 -0
  128. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_lip_sync_create_response.py +0 -0
  129. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_photo_colorizer_create_response.py +0 -0
  130. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_text_to_video_create_response.py +0 -0
  131. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_video_projects_get_response.py +0 -0
  132. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_video_projects_get_response_download.py +0 -0
  133. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_video_projects_get_response_downloads_item.py +0 -0
  134. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_video_projects_get_response_error.py +0 -0
  135. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/models/v1_video_to_video_create_response.py +0 -0
  136. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_clothes_changer_create_body.py +0 -0
  137. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_clothes_changer_create_body_assets.py +0 -0
  138. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_face_editor_create_body.py +0 -0
  139. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_face_editor_create_body_assets.py +0 -0
  140. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_face_editor_create_body_style.py +0 -0
  141. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_gif_generator_create_body.py +0 -0
  142. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_gif_generator_create_body_style.py +0 -0
  143. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_headshot_generator_create_body.py +0 -0
  144. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_headshot_generator_create_body_assets.py +0 -0
  145. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_headshot_generator_create_body_style.py +0 -0
  146. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_image_editor_create_body.py +0 -0
  147. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_image_editor_create_body_assets.py +0 -0
  148. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_image_editor_create_body_style.py +0 -0
  149. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_image_generator_create_body.py +0 -0
  150. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_image_generator_create_body_style.py +0 -0
  151. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_image_upscaler_create_body.py +0 -0
  152. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_image_upscaler_create_body_assets.py +0 -0
  153. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_image_upscaler_create_body_style.py +0 -0
  154. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_meme_generator_create_body.py +0 -0
  155. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_meme_generator_create_body_style.py +0 -0
  156. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_photo_editor_create_body.py +0 -0
  157. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_photo_editor_create_body_assets.py +0 -0
  158. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_photo_editor_create_body_style.py +0 -0
  159. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_qr_code_generator_create_body.py +0 -0
  160. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_qr_code_generator_create_body_style.py +0 -0
  161. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_talking_photo_create_body.py +0 -0
  162. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_talking_photo_create_body_assets.py +0 -0
  163. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_ai_talking_photo_create_body_style.py +0 -0
  164. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_animation_create_body.py +0 -0
  165. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_animation_create_body_assets.py +0 -0
  166. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_animation_create_body_style.py +0 -0
  167. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_auto_subtitle_generator_create_body.py +0 -0
  168. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_auto_subtitle_generator_create_body_assets.py +0 -0
  169. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_auto_subtitle_generator_create_body_style.py +0 -0
  170. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_auto_subtitle_generator_create_body_style_custom_config.py +0 -0
  171. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_face_detection_create_body.py +0 -0
  172. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_face_detection_create_body_assets.py +0 -0
  173. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_face_swap_create_body.py +0 -0
  174. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_face_swap_photo_create_body.py +0 -0
  175. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_files_upload_urls_create_body.py +0 -0
  176. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_files_upload_urls_create_body_items_item.py +0 -0
  177. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_image_background_remover_create_body.py +0 -0
  178. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_image_background_remover_create_body_assets.py +0 -0
  179. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_image_to_video_create_body.py +0 -0
  180. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_image_to_video_create_body_assets.py +0 -0
  181. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_image_to_video_create_body_style.py +0 -0
  182. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_lip_sync_create_body.py +0 -0
  183. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_lip_sync_create_body_assets.py +0 -0
  184. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_photo_colorizer_create_body.py +0 -0
  185. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_photo_colorizer_create_body_assets.py +0 -0
  186. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_text_to_video_create_body.py +0 -0
  187. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_text_to_video_create_body_style.py +0 -0
  188. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_video_to_video_create_body.py +0 -0
  189. {magic_hour-0.30.0 → magic_hour-0.31.0}/magic_hour/types/params/v1_video_to_video_create_body_assets.py +0 -0
  190. {magic_hour-0.30.0 → magic_hour-0.31.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.30.0
3
+ Version: 0.31.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
@@ -6,7 +6,7 @@ class Environment(enum.Enum):
6
6
  """Pre-defined base URLs for the API"""
7
7
 
8
8
  ENVIRONMENT = "https://api.magichour.ai"
9
- MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.30.0"
9
+ MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.31.0"
10
10
 
11
11
 
12
12
  def _get_base_url(
@@ -44,6 +44,7 @@ class FaceDetectionClient:
44
44
  return self._base_client.request(
45
45
  method="GET",
46
46
  path=f"/v1/face-detection/{id}",
47
+ auth_names=["bearerAuth"],
47
48
  cast_to=models.V1FaceDetectionGetResponse,
48
49
  request_options=request_options or default_request_options(),
49
50
  )
@@ -134,6 +135,7 @@ class AsyncFaceDetectionClient:
134
135
  return await self._base_client.request(
135
136
  method="GET",
136
137
  path=f"/v1/face-detection/{id}",
138
+ auth_names=["bearerAuth"],
137
139
  cast_to=models.V1FaceDetectionGetResponse,
138
140
  request_options=request_options or default_request_options(),
139
141
  )
@@ -3,7 +3,7 @@
3
3
 
4
4
  Create a Face Swap video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
5
5
 
6
- Get more information about this mode at our [product page](/products/face-swap).
6
+ Get more information about this mode at our [product page](https://magichour.ai/products/face-swap).
7
7
 
8
8
 
9
9
  **API Endpoint**: `POST /v1/face-swap`
@@ -12,7 +12,7 @@ Get more information about this mode at our [product page](/products/face-swap).
12
12
 
13
13
  | Parameter | Required | Description | Example |
14
14
  |-----------|:--------:|-------------|--------|
15
- | `assets` | ✓ | Provide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used | `{"image_file_path": "image/id/1234.png", "video_file_path": "api-assets/id/1234.mp4", "video_source": "file"}` |
15
+ | `assets` | ✓ | Provide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used | `{"face_mappings": [{"new_face": "api-assets/id/1234.png", "original_face": "api-assets/id/0-0.png"}], "face_swap_mode": "all-faces", "image_file_path": "image/id/1234.png", "video_file_path": "api-assets/id/1234.mp4", "video_source": "file"}` |
16
16
  | `end_seconds` | ✓ | The end time of the input video in seconds | `15.0` |
17
17
  | `start_seconds` | ✓ | The start time of the input video in seconds | `0.0` |
18
18
  | `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` |
@@ -28,6 +28,13 @@ from os import getenv
28
28
  client = Client(token=getenv("API_TOKEN"))
29
29
  res = client.v1.face_swap.create(
30
30
  assets={
31
+ "face_mappings": [
32
+ {
33
+ "new_face": "api-assets/id/1234.png",
34
+ "original_face": "api-assets/id/0-0.png",
35
+ }
36
+ ],
37
+ "face_swap_mode": "all-faces",
31
38
  "image_file_path": "image/id/1234.png",
32
39
  "video_file_path": "api-assets/id/1234.mp4",
33
40
  "video_source": "file",
@@ -50,6 +57,13 @@ from os import getenv
50
57
  client = AsyncClient(token=getenv("API_TOKEN"))
51
58
  res = await client.v1.face_swap.create(
52
59
  assets={
60
+ "face_mappings": [
61
+ {
62
+ "new_face": "api-assets/id/1234.png",
63
+ "original_face": "api-assets/id/0-0.png",
64
+ }
65
+ ],
66
+ "face_swap_mode": "all-faces",
53
67
  "image_file_path": "image/id/1234.png",
54
68
  "video_file_path": "api-assets/id/1234.mp4",
55
69
  "video_source": "file",
@@ -37,7 +37,7 @@ class FaceSwapClient:
37
37
 
38
38
  Create a Face Swap video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
39
39
 
40
- Get more information about this mode at our [product page](/products/face-swap).
40
+ Get more information about this mode at our [product page](https://magichour.ai/products/face-swap).
41
41
 
42
42
 
43
43
  POST /v1/face-swap
@@ -76,6 +76,13 @@ class FaceSwapClient:
76
76
  ```py
77
77
  client.v1.face_swap.create(
78
78
  assets={
79
+ "face_mappings": [
80
+ {
81
+ "new_face": "api-assets/id/1234.png",
82
+ "original_face": "api-assets/id/0-0.png",
83
+ }
84
+ ],
85
+ "face_swap_mode": "all-faces",
79
86
  "image_file_path": "image/id/1234.png",
80
87
  "video_file_path": "api-assets/id/1234.mp4",
81
88
  "video_source": "file",
@@ -135,7 +142,7 @@ class AsyncFaceSwapClient:
135
142
 
136
143
  Create a Face Swap video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
137
144
 
138
- Get more information about this mode at our [product page](/products/face-swap).
145
+ Get more information about this mode at our [product page](https://magichour.ai/products/face-swap).
139
146
 
140
147
 
141
148
  POST /v1/face-swap
@@ -174,6 +181,13 @@ class AsyncFaceSwapClient:
174
181
  ```py
175
182
  await client.v1.face_swap.create(
176
183
  assets={
184
+ "face_mappings": [
185
+ {
186
+ "new_face": "api-assets/id/1234.png",
187
+ "original_face": "api-assets/id/0-0.png",
188
+ }
189
+ ],
190
+ "face_swap_mode": "all-faces",
177
191
  "image_file_path": "image/id/1234.png",
178
192
  "video_file_path": "api-assets/id/1234.mp4",
179
193
  "video_source": "file",
@@ -1,7 +1,7 @@
1
1
 
2
2
  ### Face Swap Photo <a name="create"></a>
3
3
 
4
- Create a face swap photo. Each photo costs 5 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](/pricing) page for more details
4
+ Create a face swap photo. Each photo costs 5 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](https://magichour.ai/pricing) page for more details
5
5
 
6
6
  **API Endpoint**: `POST /v1/face-swap-photo`
7
7
 
@@ -27,7 +27,7 @@ class FaceSwapPhotoClient:
27
27
  """
28
28
  Face Swap Photo
29
29
 
30
- Create a face swap photo. Each photo costs 5 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](/pricing) page for more details
30
+ Create a face swap photo. Each photo costs 5 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](https://magichour.ai/pricing) page for more details
31
31
 
32
32
  POST /v1/face-swap-photo
33
33
 
@@ -91,7 +91,7 @@ class AsyncFaceSwapPhotoClient:
91
91
  """
92
92
  Face Swap Photo
93
93
 
94
- Create a face swap photo. Each photo costs 5 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](/pricing) page for more details
94
+ Create a face swap photo. Each photo costs 5 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](https://magichour.ai/pricing) page for more details
95
95
 
96
96
  POST /v1/face-swap-photo
97
97
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  Create a Image To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
5
5
 
6
- Get more information about this mode at our [product page](/products/image-to-video).
6
+ Get more information about this mode at our [product page](https://magichour.ai/products/image-to-video).
7
7
 
8
8
 
9
9
  **API Endpoint**: `POST /v1/image-to-video`
@@ -44,7 +44,7 @@ class ImageToVideoClient:
44
44
 
45
45
  Create a Image To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
46
46
 
47
- Get more information about this mode at our [product page](/products/image-to-video).
47
+ Get more information about this mode at our [product page](https://magichour.ai/products/image-to-video).
48
48
 
49
49
 
50
50
  POST /v1/image-to-video
@@ -140,7 +140,7 @@ class AsyncImageToVideoClient:
140
140
 
141
141
  Create a Image To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
142
142
 
143
- Get more information about this mode at our [product page](/products/image-to-video).
143
+ Get more information about this mode at our [product page](https://magichour.ai/products/image-to-video).
144
144
 
145
145
 
146
146
  POST /v1/image-to-video
@@ -3,7 +3,7 @@
3
3
 
4
4
  Create a Lip Sync video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
5
5
 
6
- Get more information about this mode at our [product page](/products/lip-sync).
6
+ Get more information about this mode at our [product page](https://magichour.ai/products/lip-sync).
7
7
 
8
8
 
9
9
  **API Endpoint**: `POST /v1/lip-sync`
@@ -40,7 +40,7 @@ class LipSyncClient:
40
40
 
41
41
  Create a Lip Sync video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
42
42
 
43
- Get more information about this mode at our [product page](/products/lip-sync).
43
+ Get more information about this mode at our [product page](https://magichour.ai/products/lip-sync).
44
44
 
45
45
 
46
46
  POST /v1/lip-sync
@@ -144,7 +144,7 @@ class AsyncLipSyncClient:
144
144
 
145
145
  Create a Lip Sync video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
146
146
 
147
- Get more information about this mode at our [product page](/products/lip-sync).
147
+ Get more information about this mode at our [product page](https://magichour.ai/products/lip-sync).
148
148
 
149
149
 
150
150
  POST /v1/lip-sync
@@ -3,7 +3,7 @@
3
3
 
4
4
  Create a Text To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
5
5
 
6
- Get more information about this mode at our [product page](/products/text-to-video).
6
+ Get more information about this mode at our [product page](https://magichour.ai/products/text-to-video).
7
7
 
8
8
 
9
9
  **API Endpoint**: `POST /v1/text-to-video`
@@ -36,7 +36,7 @@ class TextToVideoClient:
36
36
 
37
37
  Create a Text To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
38
38
 
39
- Get more information about this mode at our [product page](/products/text-to-video).
39
+ Get more information about this mode at our [product page](https://magichour.ai/products/text-to-video).
40
40
 
41
41
 
42
42
  POST /v1/text-to-video
@@ -115,7 +115,7 @@ class AsyncTextToVideoClient:
115
115
 
116
116
  Create a Text To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
117
117
 
118
- Get more information about this mode at our [product page](/products/text-to-video).
118
+ Get more information about this mode at our [product page](https://magichour.ai/products/text-to-video).
119
119
 
120
120
 
121
121
  POST /v1/text-to-video
@@ -3,7 +3,7 @@
3
3
 
4
4
  Create a Video To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
5
5
 
6
- Get more information about this mode at our [product page](/products/video-to-video).
6
+ Get more information about this mode at our [product page](https://magichour.ai/products/video-to-video).
7
7
 
8
8
 
9
9
  **API Endpoint**: `POST /v1/video-to-video`
@@ -43,7 +43,7 @@ class VideoToVideoClient:
43
43
 
44
44
  Create a Video To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
45
45
 
46
- Get more information about this mode at our [product page](/products/video-to-video).
46
+ Get more information about this mode at our [product page](https://magichour.ai/products/video-to-video).
47
47
 
48
48
 
49
49
  POST /v1/video-to-video
@@ -159,7 +159,7 @@ class AsyncVideoToVideoClient:
159
159
 
160
160
  Create a Video To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
161
161
 
162
- Get more information about this mode at our [product page](/products/video-to-video).
162
+ Get more information about this mode at our [product page](https://magichour.ai/products/video-to-video).
163
163
 
164
164
 
165
165
  POST /v1/video-to-video
@@ -154,6 +154,10 @@ from .v1_face_swap_create_body_assets import (
154
154
  V1FaceSwapCreateBodyAssets,
155
155
  _SerializerV1FaceSwapCreateBodyAssets,
156
156
  )
157
+ from .v1_face_swap_create_body_assets_face_mappings_item import (
158
+ V1FaceSwapCreateBodyAssetsFaceMappingsItem,
159
+ _SerializerV1FaceSwapCreateBodyAssetsFaceMappingsItem,
160
+ )
157
161
  from .v1_face_swap_photo_create_body import (
158
162
  V1FaceSwapPhotoCreateBody,
159
163
  _SerializerV1FaceSwapPhotoCreateBody,
@@ -269,6 +273,7 @@ __all__ = [
269
273
  "V1FaceDetectionCreateBodyAssets",
270
274
  "V1FaceSwapCreateBody",
271
275
  "V1FaceSwapCreateBodyAssets",
276
+ "V1FaceSwapCreateBodyAssetsFaceMappingsItem",
272
277
  "V1FaceSwapPhotoCreateBody",
273
278
  "V1FaceSwapPhotoCreateBodyAssets",
274
279
  "V1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem",
@@ -327,6 +332,7 @@ __all__ = [
327
332
  "_SerializerV1FaceDetectionCreateBodyAssets",
328
333
  "_SerializerV1FaceSwapCreateBody",
329
334
  "_SerializerV1FaceSwapCreateBodyAssets",
335
+ "_SerializerV1FaceSwapCreateBodyAssetsFaceMappingsItem",
330
336
  "_SerializerV1FaceSwapPhotoCreateBody",
331
337
  "_SerializerV1FaceSwapPhotoCreateBodyAssets",
332
338
  "_SerializerV1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem",
@@ -2,15 +2,38 @@ import pydantic
2
2
  import typing
3
3
  import typing_extensions
4
4
 
5
+ from .v1_face_swap_create_body_assets_face_mappings_item import (
6
+ V1FaceSwapCreateBodyAssetsFaceMappingsItem,
7
+ _SerializerV1FaceSwapCreateBodyAssetsFaceMappingsItem,
8
+ )
9
+
5
10
 
6
11
  class V1FaceSwapCreateBodyAssets(typing_extensions.TypedDict):
7
12
  """
8
13
  Provide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
9
14
  """
10
15
 
16
+ face_mappings: typing_extensions.NotRequired[
17
+ typing.List[V1FaceSwapCreateBodyAssetsFaceMappingsItem]
18
+ ]
19
+ """
20
+ This is the array of face mappings used for multiple face swap. The value is required if `face_swap_mode` is `individual-faces`.
21
+ """
22
+
23
+ face_swap_mode: typing_extensions.NotRequired[
24
+ typing_extensions.Literal["all-faces", "individual-faces"]
25
+ ]
26
+ """
27
+ The mode of face swap.
28
+ * `all-faces` - Swap all faces in the target image or video. `source_file_path` is required.
29
+ * `individual-faces` - Swap individual faces in the target image or video. `source_faces` is required.
30
+ """
31
+
11
32
  image_file_path: typing_extensions.Required[str]
12
33
  """
13
- The path of the input image. This value can be either the `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
34
+ The path of the input image with the face to be swapped. The value is required if `face_swap_mode` is `all-faces`.
35
+
36
+ This value can be either the `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
14
37
  """
15
38
 
16
39
  video_file_path: typing_extensions.NotRequired[str]
@@ -38,6 +61,12 @@ class _SerializerV1FaceSwapCreateBodyAssets(pydantic.BaseModel):
38
61
  populate_by_name=True,
39
62
  )
40
63
 
64
+ face_mappings: typing.Optional[
65
+ typing.List[_SerializerV1FaceSwapCreateBodyAssetsFaceMappingsItem]
66
+ ] = pydantic.Field(alias="face_mappings", default=None)
67
+ face_swap_mode: typing.Optional[
68
+ typing_extensions.Literal["all-faces", "individual-faces"]
69
+ ] = pydantic.Field(alias="face_swap_mode", default=None)
41
70
  image_file_path: str = pydantic.Field(
42
71
  alias="image_file_path",
43
72
  )
@@ -0,0 +1,39 @@
1
+ import pydantic
2
+ import typing_extensions
3
+
4
+
5
+ class V1FaceSwapCreateBodyAssetsFaceMappingsItem(typing_extensions.TypedDict):
6
+ """
7
+ V1FaceSwapCreateBodyAssetsFaceMappingsItem
8
+ """
9
+
10
+ new_face: typing_extensions.Required[str]
11
+ """
12
+ The face image that will be used to replace the face in the `original_face`. This value can be either the `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
13
+ """
14
+
15
+ original_face: typing_extensions.Required[str]
16
+ """
17
+ The face detected from the image in `target_file_path`. The file name is in the format of `<face_frame>-<face_index>.png`. This value is corresponds to the response in the [face detection API](https://docs.magichour.ai/api-reference/files/get-face-detection-details).
18
+
19
+ * The face_frame is the frame number of the face in the target image. For images, the frame number is always 0.
20
+ * The face_index is the index of the face in the target image, starting from 0 going left to right.
21
+ """
22
+
23
+
24
+ class _SerializerV1FaceSwapCreateBodyAssetsFaceMappingsItem(pydantic.BaseModel):
25
+ """
26
+ Serializer for V1FaceSwapCreateBodyAssetsFaceMappingsItem handling case conversions
27
+ and file omissions as dictated by the API
28
+ """
29
+
30
+ model_config = pydantic.ConfigDict(
31
+ populate_by_name=True,
32
+ )
33
+
34
+ new_face: str = pydantic.Field(
35
+ alias="new_face",
36
+ )
37
+ original_face: str = pydantic.Field(
38
+ alias="original_face",
39
+ )
@@ -25,8 +25,8 @@ class V1FaceSwapPhotoCreateBodyAssets(typing_extensions.TypedDict):
25
25
  ]
26
26
  """
27
27
  The mode of face swap.
28
- * `all-faces` - Swap all faces in the target image. `source_file_path` is required.
29
- * `individual-faces` - Swap individual faces in the target image. `source_faces` is required.
28
+ * `all-faces` - Swap all faces in the target image or video. `source_file_path` is required.
29
+ * `individual-faces` - Swap individual faces in the target image or video. `source_faces` is required.
30
30
  """
31
31
 
32
32
  source_file_path: typing_extensions.NotRequired[str]
@@ -14,7 +14,7 @@ class V1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem(typing_extensions.TypedDic
14
14
 
15
15
  original_face: typing_extensions.Required[str]
16
16
  """
17
- The face detected from the image in `target_file_path`. The file name is in the format of `<face_frame>-<face_index>.png`. This value is corresponds to the response in the face detection API [COMING SOON].
17
+ The face detected from the image in `target_file_path`. The file name is in the format of `<face_frame>-<face_index>.png`. This value is corresponds to the response in the [face detection API](https://docs.magichour.ai/api-reference/files/get-face-detection-details).
18
18
 
19
19
  * The face_frame is the frame number of the face in the target image. For images, the frame number is always 0.
20
20
  * The face_index is the index of the face in the target image, starting from 0 going left to right.
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "magic_hour"
3
- version = "0.30.0"
3
+ version = "0.31.0"
4
4
  description = "Python SDK for Magic Hour API"
5
5
  readme = "README.md"
6
6
  authors = []
File without changes
File without changes