Virtual Try-On — Tattoo
Preview how a tattoo design would look as real ink on a person's skin.
Ink a design onto skin. Submit a close-up photo of bare skin (body_image) and
the tattoo design on its own (design_image); the API returns a job id you poll
on the Job Status endpoint until the result is
ready.
POST
https://tryiton.now/api/v1/tryon/tattoo
All image fields accept either a public URL or a base64 data URL
(data:image/png;base64,...).
Request
Use an official SDK (recommended) or call the endpoint directly.
import { TryItOn } from "tryiton";
const client = new TryItOn({ apiKey: process.env.TRYITON_API_KEY });
const jobId = await client.tryOnTattoo({
bodyImage: "https://example.com/forearm.jpg",
designImage: "https://example.com/design.png",
placement: "on the right forearm, small",
});
const [resultUrl] = await client.waitForResult(jobId);import os
from tryiton import TryItOn
client = TryItOn(api_key=os.environ["TRYITON_API_KEY"])
job_id = client.try_on_tattoo(
body_image="https://example.com/forearm.jpg",
design_image="https://example.com/design.png",
placement="on the right forearm, small",
)
urls = client.wait_for_result(job_id)curl -X POST https://tryiton.now/api/v1/tryon/tattoo \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"body_image": "https://example.com/forearm.jpg",
"design_image": "https://example.com/design.png",
"placement": "on the right forearm, small"
}'Body Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
body_image | string | — | Required. URL or base64 data URL — a close-up of bare skin (arm, leg, shoulder, back). |
design_image | string | — | Required. URL or base64 data URL of the tattoo design on its own. |
placement | string | (auto) | Optional free-text placement/size, e.g. "on the right forearm, small". Max 140 characters. Omitted: placed naturally on the most visible skin, palm-sized. |
For the most faithful result, use a design on a plain background and a body photo where the target skin area is clearly visible and evenly lit.
Response
A successful submission returns a jobId. Poll
/api/v1/status/{jobId} until status is
completed.
201 Created
{
"ok": true,
"jobId": "64b7f1a9d9a3b8e5c7f9a123"
}Credits: 1 credit per try-on. Failed jobs are never charged.