Official Node.js and TypeScript client for the TryItOn virtual try-on API. Add photoreal AI virtual try-on for clothing, accessories, hairstyles, and tattoos to your JavaScript or TypeScript application with a few lines of code.
- Virtual clothing try-on and accessory try-on (eyewear, footwear, headwear, jewelry)
- Hairstyle and tattoo try-on
- Fully typed, zero runtime dependencies (uses the native
fetchAPI) - Built-in job polling helper
Full API reference: docs.tryiton.now · Get an API key: tryiton.now/app/developer
npm install tryitonRequires Node.js 18 or later (or any runtime with a global fetch, such as Bun, Deno, or modern browsers). TypeScript types are bundled.
Submit a garment and a model photo, then wait for the generated result image.
import { TryItOn } from "tryiton";
const client = new TryItOn({ apiKey: process.env.TRYITON_API_KEY });
// Submit a clothing try-on
const jobId = await client.tryOnClothes({
modelImage: "https://example.com/model.jpg",
garmentImage: "https://example.com/tshirt.jpg",
category: "clothing",
subcategory: "tops",
});
// Poll until the job completes and return the output image URL(s)
const [resultUrl] = await client.waitForResult(jobId);
console.log(resultUrl); // CDN URL, available for 72 hoursImage inputs accept a public URL or a base64 data URL (data:image/png;base64,...).
tryOnClothes covers clothing and accessory try-on. The most important parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
modelImage |
string | Yes | URL or base64 data URL of the person. |
garmentImage |
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 clothing options (mode, numSamples, outputFormat, seed) are documented in the API reference.
// Hairstyle try-on (see the HAIRCUTS export for all supported values)
await client.tryOnHairstyle({ faceImage, haircut: "BuzzCut", hairColor: "ash blonde" });
// Tattoo try-on
await client.tryOnTattoo({ bodyImage, designImage, placement: "on the right forearm, small" });
// Poll a job manually, or check your credit balance
const status = await client.getStatus(jobId); // { status, output, error }
const credits = await client.getCredits(); // { on_demand, subscription, purchased, reserved }All failures throw TryItOnError, which carries the HTTP status code and the API error name.
import { TryItOn, TryItOnError } from "tryiton";
try {
await client.tryOnClothes({ /* ... */ });
} catch (err) {
if (err instanceof TryItOnError) {
console.error(err.status, err.errorName, err.message); // 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