Official Ruby client for the TryItOn virtual try-on API. Add photoreal AI virtual try-on for clothing, accessories, hairstyles, and tattoos to your Ruby or Rails application with a few lines of code.
- Virtual clothing try-on and accessory try-on (eyewear, footwear, headwear, jewelry)
- Hairstyle and tattoo try-on
- Standard library only (no dependencies), with a built-in job polling helper
Full API reference: docs.tryiton.now · Get an API key: tryiton.now/app/developer
gem install tryitonOr add it to your Gemfile:
gem"tryiton"Requires Ruby 2.6 or later.
Submit a garment and a model photo, then wait for the generated result image.
require"tryiton"client=Tryiton::Client.new(api_key: ENV["TRYITON_API_KEY"])# Submit a clothing try-onjob_id=client.try_on_fashion(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)putsurls.first# CDN URL, available for 72 hoursImage inputs accept a public URL or a base64 data URL (data:image/png;base64,...).
try_on_fashion covers clothing and accessory try-on. The most important parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
model_image | String | Yes | URL or base64 data URL of the person. |
garment_image | String | Yes | URL or base64 data URL of the garment or accessory. |
category | String | No | Item type: auto, clothing, eyewear, footwear, headwear, jewelry, accessories, or others. auto detects it for you. |
subcategory | String | No | Required for clothing (tops, bottoms, dresses), jewelry, and accessories. |
Additional options (mode and moderation_level for clothing; num_samples 1–4 and output_formatpng/jpeg for every try-on, including hairstyle and tattoo) 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 — place it with free text...client.try_on_tattoo(body_image: body_url,design_image: design_url,placement: "on the right forearm, small")# ...or pin the exact spot with a region box (normalized 0-1, from the image's top-left)client.try_on_tattoo(body_image: body_url,design_image: design_url,region: {x: 0.32,y: 0.18,w: 0.28,h: 0.34})# Poll a job manually, or check your credit balancestatus=client.get_status(job_id)# { "status" => ..., "output" => [...], "error" => ... }credits=client.get_credits# { "on_demand" => ..., "subscription" => ..., "purchased" => ..., "reserved" => ... }All failures raise Tryiton::Error, which carries the HTTP status code and the API error name.
beginclient.try_on_fashion(...)rescueTryiton::Error=>eputs"#{e.status}#{e.error_name}#{e.message}"# e.g. 429 OutOfCreditsend- 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