A Python SDK for Decart's models.
uv add decartpip install decartFor complete documentation, guides, and examples, visit: https://docs.platform.decart.ai/sdks/python
import asyncio
import os
from decart import DecartClient, models
async def main():
async with DecartClient(api_key=os.getenv("DECART_API_KEY")) as client:
# Edit an image
result = await client.process({
"model": models.image("lucy-pro-i2i"),
"prompt": "Apply a painterly oil-on-canvas look while preserving the composition",
"data": open("input.png", "rb"),
})
with open("output.png", "wb") as f:
f.write(result)
asyncio.run(main())For video editing jobs, use the queue API to submit jobs and poll for results:
async with DecartClient(api_key=os.getenv("DECART_API_KEY")) as client:
# Submit and poll automatically
result = await client.queue.submit_and_poll({
"model": models.video("lucy-pro-v2v"),
"prompt": "Restyle this footage with anime shading and vibrant neon highlights",
"data": open("input.mp4", "rb"),
"on_status_change": lambda job: print(f"Status: {job.status}"),
})
if result.status == "completed":
with open("output.mp4", "wb") as f:
f.write(result.data)
else:
print(f"Job failed: {result.error}")Or manage the polling manually:
async with DecartClient(api_key=os.getenv("DECART_API_KEY")) as client:
# Submit the job
job = await client.queue.submit({
"model": models.video("lucy-pro-v2v"),
"prompt": "Add cinematic teal-and-orange grading and gentle film grain",
"data": open("input.mp4", "rb"),
})
print(f"Job ID: {job.job_id}")
# Poll for status
status = await client.queue.status(job.job_id)
print(f"Status: {status.status}")
# Get result when completed
if status.status == "completed":
data = await client.queue.result(job.job_id)
with open("output.mp4", "wb") as f:
f.write(data)# Clone the repository
git clone https://github.com/decartai/decart-python
cd decart-python
# Install UV
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install all dependencies (including dev dependencies)
uv sync --all-extras
# Run tests
uv run pytest
# Run linting
uv run ruff check decart/ tests/ examples/
# Format code
uv run black decart/ tests/ examples/
# Type check
uv run mypy decart/# Install dependencies
uv sync --all-extras
# Run tests with coverage
uv run pytest --cov=decart --cov-report=html
# Run examples
uv run python examples/process_video.py
uv run python examples/realtime_synthetic.py
# Update dependencies
uv lock --upgradeThe SDK includes an interactive test UI built with Gradio for quickly testing all SDK features without writing code.
# Install Gradio
pip install gradio
# Run the test UI
python test_ui.pyThen open http://localhost:7860 in your browser.
The UI provides tabs for:
- Image Editing - Image-to-image edits
- Video Editing - Video-to-video edits
- Video Restyle - Restyle videos using text prompts or reference images
- Tokens - Create short-lived client tokens
Enter your API key at the top of the interface to start testing.
The package is automatically published to PyPI when you create a GitHub release.
Use the release script to automate the entire process:
python release.pyThe script will:
- Display the current version
- Prompt for the new version
- Update
pyproject.toml - Commit and push changes
- Create a GitHub release with release notes
The GitHub Actions workflow will automatically build, test, and publish to PyPI.
MIT