Dress any product in one API call.
The same engine behind the Piktor app, exposed as a clean REST API. Send a product image, get photoreal on-model renders and clean masks back — in seconds, at catalog scale.
Production imagery, as an endpoint
Everything the app does, callable from your build pipeline, PIM or storefront — no upload UI, no manual art direction.
Programmatic on-model imagery
One POST turns a flat product shot into photoreal on-model renders. Pick the model, pose, light and scene as parameters — not clicks.
Batch at catalog scale
Push thousands of SKUs through /v1/batch in a single request. Same credits, one job to track — built for marketplace-sized volume.
4K exports, clean masks
Every render ships at up to 4K with a pixel-accurate alpha mask — ready to composite or drop straight onto a product page.
Webhooks, not polling
Subscribe to job.succeeded and we POST the finished URLs to your endpoint the moment they are ready. No busy loops.
Your first render in one request
Authenticate with a bearer token, POST a product image with model and scene params, then poll the job or catch the webhook. Here is the whole round-trip.
curl -X POST https://api.piktor.co/v1/generate \
-H "Authorization: Bearer $PIKTOR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_image_url": "https://cdn.yourbrand.com/sku/8842-front.jpg",
"category": "apparel",
"model": { "gender": "female", "body": "medium", "skin_tone": "III" },
"scene": { "preset": "studio-daylight", "background": "seamless-bone" },
"output": { "count": 4, "resolution": "4k", "mask": true }
}'{
"id": "job_9f8c2a1b7d",
"status": "succeeded",
"credits_used": 4,
"images": [
{
"url": "https://cdn.piktor.co/v1/renders/9f8c2a1b7d/01.png",
"width": 3072,
"height": 4096,
"mask_url": "https://cdn.piktor.co/v1/renders/9f8c2a1b7d/01-mask.png"
},
{
"url": "https://cdn.piktor.co/v1/renders/9f8c2a1b7d/02.png",
"width": 3072,
"height": 4096,
"mask_url": "https://cdn.piktor.co/v1/renders/9f8c2a1b7d/02-mask.png"
}
],
"created_at": "2026-07-22T09:41:20Z"
}Illustrative — see the live reference in the app for the full parameter set and every scene preset.
A small surface, on purpose
Four endpoints cover the whole lifecycle — generate, check, batch, discover.
/v1/generateCreate a render job from one product image plus your model and scene params.
/v1/jobs/{id}Poll a job for its status, image URLs and mask URLs.
/v1/batchQueue many SKUs in a single request for catalog-scale runs.
/v1/modelsList the available model presets, body types, skin tones and scenes.
Credit-based, and simple
One image is one credit — that is the whole pricing model.
- 1 image = 1 credit. Extra renders in a request draw from the same balance.
- Failed or rejected renders are never charged.
- Every response returns an X-Credits-Remaining header so you can meter usage.
- Rate limits scale with your plan; Enterprise lifts them entirely.
| Plan | Images | Rate limit |
|---|---|---|
| Free | 10 | 30 req/min |
| Starter | 100 / mo | 60 req/min |
| StudioMost popular | 400 / mo | 120 req/min |
| Enterprise | Unlimited | Custom |
Credits come from your Piktor plan — see the full tiers on the pricing page.
The complete docs live in the app
Every parameter, webhook event, error code and official SDK — versioned and interactive — sits in your dashboard. Grab a key and the reference opens right beside it.
Ship on-model imagery, programmatically.
Create a key in the app and make your first call in minutes. Free tier included — no card.