Official Python client for the TryItOn virtual try-on API. Add photoreal AI virtual try-on for clothing, accessories, hairstyles, and tattoos to your Python application with a few lines of code.
- Virtual clothing try-on and accessory try-on (eyewear, footwear, headwear, jewelry)
- Hairstyle and tattoo try-on
- Type-hinted client with a built-in job polling helper
Full API reference: docs.tryiton.now · Get an API key: tryiton.now/app/developer
pip install tryitonRequires Python 3.8 or later.
Submit a garment and a model photo, then wait for the generated result image.
import os
from tryiton import TryItOn
client = TryItOn(api_key=os.environ["TRYITON_API_KEY"])
# Submit a clothing try-on
job_id = client.try_on_clothes(
model_image="https://example.com/model.jpg",
garment_image="https://example.com/tshirt.jpg",
category="clothing",
subcategory="tops",
)
# Poll until the job completes and return the output image URL(s)
urls = client.wait_for_result(job_id)
print(urls[0]) # CDN URL, available for 72 hoursImage inputs accept a public URL or a base64 data URL (data:image/png;base64,...).
try_on_clothes covers clothing and accessory try-on. The most important parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
model_image |
str | Yes | URL or base64 data URL of the person. |
garment_image |
str | Yes | URL or base64 data URL of the garment or accessory. |
category |
str | No | Item type: auto, clothing, eyewear, footwear, headwear, jewelry, accessories, or others. auto detects it for you. |
subcategory |
str | No | Required for clothing (tops, bottoms, dresses), jewelry, and accessories. |
Additional clothing options (mode, num_samples, output_format, seed) are documented in the API reference.
# Hairstyle try-on (see tryiton.HAIRCUTS for all supported values)
client.try_on_hairstyle(face_image=face_url, haircut="BuzzCut", hair_color="ash blonde")
# Tattoo try-on
client.try_on_tattoo(body_image=body_url, design_image=design_url, placement="on the right forearm, small")
# Poll a job manually, or check your credit balance
status = client.get_status(job_id) # Status(status, output, error)
credits = client.get_credits() # Credits(on_demand, subscription, purchased, reserved)All failures raise TryItOnError, which carries the HTTP status code and the API error name.
from tryiton import TryItOn, TryItOnError
try:
client.try_on_clothes(...)
except TryItOnError as err:
print(err.status, err.error_name, str(err)) # e.g. 429, "OutOfCredits"- Output image URLs expire 72 hours after completion. Download any results you want to keep.
- Failed jobs are never charged.
Full documentation, parameter reference, and guides: docs.tryiton.now
MIT