Python SDK for Magic Hour API
Project description
Magic Hour Python SDK
The Magic Hour Python Library provides convenient access to the Magic Hour API. This library offers both synchronous and asynchronous clients powered by httpx.
Documentation
For full documentation of all APIs, please visit https://docs.magichour.ai
If you have any questions, please reach out to us via discord.
Install
pip install magic_hour
Cookbook
For end-to-end examples demonstrating all available Magic Hour APIs, check out our interactive Google Colab cookbook:
- Interactive Notebook: Magic Hour API Cookbook
The cookbook includes:
- Setup instructions
- Examples for all available APIs (image generation, face swap, lip sync, video generation, and more)
- Display helpers for previewing outputs
- Production-ready patterns and best practices
Synchronous Client Usage
from magic_hour import Client
# generate your API Key at https://magichour.ai/developer
client = Client(token="my api key")
response = client.v1.face_swap_photo.generate(
assets={
"face_swap_mode": "all-faces",
"source_file_path": "/path/to/source/image.png",
"target_file_path": "/path/to/target/image.png",
},
name="Face Swap image",
wait_for_completion=True,
download_outputs=True,
download_directory=".",
)
print(f"Project ID: {response.id}")
print(f"Status: {response.status}")
print(f"Downloaded files: {response.downloaded_paths}")
Asynchronous Client Usage
from magic_hour import AsyncClient
# generate your API Key at https://magichour.ai/developer
client = AsyncClient(token="my api key")
response = await client.v1.face_swap_photo.generate(
assets={
"face_swap_mode": "all-faces",
"source_file_path": "/path/to/source/image.png",
"target_file_path": "/path/to/target/image.png",
},
name="Face Swap image",
wait_for_completion=True,
download_outputs=True,
download_directory=".",
)
print(f"Project ID: {response.id}")
print(f"Status: {response.status}")
print(f"Downloaded files: {response.downloaded_paths}")
Client Functions
Most resources that generate media content support two methods:
generate()- A high-level convenience method that handles the entire workflowcreate()- A low-level method that only initiates the generation process
Generate Function
The generate() function provides a complete end-to-end solution:
- Uploads local file to Magic Hour storage
- Calls the API to start generation
- Automatically polls for completion
- Downloads generated files to your local machine
- Returns both API response data and local file paths
Additional Parameters:
wait_for_completion(bool, default True): Whether to wait for the project to complete.download_outputs(bool, default True): Whether to download the generated filesdownload_directory(str, optional): Directory to save downloaded files (defaults to current directory)
# Generate function - handles everything automatically
response = client.v1.ai_image_generator.generate(
style={"prompt": "A beautiful sunset over mountains"},
name="Sunset Image",
wait_for_completion=True, # Wait for status to be complete/error/canceled
download_outputs=True, # Download files automatically
download_directory="./outputs/" # Where to save files
)
# You get both the API response AND downloaded file paths
print(f"Project ID: {response.id}")
print(f"Status: {response.status}")
print(f"Downloaded files: {response.downloaded_paths}")
Create Function
The create() function provides granular control:
- Only calls the API to start the generation process
- Returns immediately with a project ID and amount of credits used
- Requires manual status checking and file downloading
# Create function - only starts the process
create_response = client.v1.ai_image_generator.create(
style={"prompt": "A beautiful sunset over mountains"},
name="Sunset Image"
)
# You get just the project ID and initial response
project_id = create_response.id
print(f"Started project: {project_id}")
# You must handle the rest:
# 1. Poll for completion. We provide a helper function to handle polling for you
result = client.v1.image_projects.check_status(
wait_for_completion=True,
download_outputs=False,
)
# 2. Download files using the download URLs
download_urls = result.downloads
# download the files using your preferred way
Choosing Between Which Function to use
Use generate() when:
- You want a simple, one-call solution
- You're building a straightforward application
- You don't need custom polling or download logic
Use create() when:
- You need custom status checking logic
- You're integrating with existing job processing systems
- You want to separate generation initiation from completion handling
- You need fine-grained control over the entire workflow
Module Documentation and Snippets
v1.ai_clothes_changer
v1.ai_face_editor
v1.ai_gif_generator
v1.ai_headshot_generator
v1.ai_image_editor
v1.ai_image_generator
v1.ai_image_upscaler
v1.ai_meme_generator
v1.ai_qr_code_generator
v1.ai_talking_photo
v1.ai_voice_cloner
- create - AI Voice Cloner
v1.ai_voice_generator
v1.animation
v1.audio_projects
- check-result - Check results
- delete - Delete audio
- get - Get audio details
v1.auto_subtitle_generator
v1.face_detection
- create - Face Detection
- generate - Face Detection Generate Workflow
- get - Get face detection details
v1.face_swap
v1.face_swap_photo
v1.files
- upload-file - Upload File
v1.files.upload_urls
- create - Generate asset upload urls
v1.image_background_remover
v1.image_projects
- check-result - Check results
- delete - Delete image
- get - Get image details
v1.image_to_video
v1.lip_sync
v1.photo_colorizer
v1.text_to_video
v1.video_projects
- check-result - Check results
- delete - Delete video
- get - Get video details
v1.video_to_video
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file magic_hour-0.53.0.tar.gz.
File metadata
- Download URL: magic_hour-0.53.0.tar.gz
- Upload date:
- Size: 112.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.8.18 Linux/6.14.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b04bdb8f7ebaf05c1e39ef5c669dabf38cac12292e6c6f57a17f131c9cb1855
|
|
| MD5 |
687f013428b8e66b9d5277c081c2a28a
|
|
| BLAKE2b-256 |
94adaafd403a1b366e1d41c387e22ab728065cb96520da1543f40c3389e95025
|
File details
Details for the file magic_hour-0.53.0-py3-none-any.whl.
File metadata
- Download URL: magic_hour-0.53.0-py3-none-any.whl
- Upload date:
- Size: 251.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.8.18 Linux/6.14.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a2efec70559295f7a5182d698c154ce1c12a5a33826a08cfd3535ee844bba7e
|
|
| MD5 |
5a8aa5ea9a3468d58a0e4a052e4b6f41
|
|
| BLAKE2b-256 |
dff9781159530b562356513a7fca096ffad859979cc219b3f3e4b3423c09c333
|