LastShoot
Use cases / Jewellery & accessories

Small products,
worn for real.

Put earrings, bags and eyewear on a model from a single product shot, then upscale so the stones and stitching hold up close.

POST/edit/image/v1POST/creator/instamodel/image/v1POST/upscale/image/v1
Emerald drop earrings product photo
Product photo
AI model wearing the emerald drop earrings
Worn shot
POST/edit/image/v1
Step 01

Worn shots: earrings

Generate the model with instamodel, then pass the model and the product together as input_image and say how it is worn. Shape, colour and setting come from your photo.

POST/edit/image/v1POST/creator/instamodel/image/v1
$POST/edit/image/v1
{
  "input_image": [
    "https://cdn.brand.com/models/beauty-01.png",
    "https://cdn.brand.com/sku/pink-drop-earrings.png"
  ],
  "prompt": "she is wearing the earrings from image 2",
  "output_format": "webp"
}
Pink stone drop earrings product photo
input_image[1]
AI model wearing the pink drop earrings
Worn shot
POST/edit/image/v1
Step 02

Worn shots: eyewear

Frames sit on the face at the right scale and angle, and the lens tint and colour match the product shot.

POST/edit/image/v1
$POST/edit/image/v1
{
  "input_image": [
    "https://cdn.brand.com/models/beauty-01.png",
    "https://cdn.brand.com/sku/pink-cat-eye-sunglasses.png"
  ],
  "prompt": "she is wearing the sunglasses from image 2",
  "output_format": "webp"
}
Pink cat-eye sunglasses product photo
input_image[1]
AI model wearing the pink cat-eye sunglasses
Worn shot
POST/edit/image/v1
Step 03

Held shots: bags and clutches

The same call places a bag in the model's hand, at a natural scale, with the product's hardware and texture intact.

POST/edit/image/v1
$POST/edit/image/v1
{
  "input_image": [
    "https://cdn.brand.com/models/model-017.png",
    "https://cdn.brand.com/sku/crystal-clutch.png"
  ],
  "prompt": "she is holding the clutch from image 2 at chest height",
  "output_format": "webp"
}
Crystal evening clutch product photo
input_image[1]
AI model holding the crystal evening clutch
Held shot
POST/edit/image/v1
Step 04

Detail that holds up close

Run the final image through upscale to sharpen skin, hair and fine texture before it goes on a zoomable product page.

POST/upscale/image/v1
$POST/upscale/image/v1
{
  "input_image": "https://cdn.brand.com/renders/look-04.png",
  "width": 2048,
  "height": 2048,
  "output_format": "webp"
}
Generated portrait before upscaling, close crop
Before
Same portrait after upscaling, close crop
After upscale
POST/upscale/image/v1
The code

One key. Async jobs.

Every call takes an X-API-Key header and returns a job_id. Poll the status endpoint, or pass a callback_url and get a webhook when the job completes or fails.

Read the docs
worn.sh
1# 1. Put the earrings on the model
2curl https://api.lastshoot.com/edit/image/v1 \
3 -H "X-API-Key: $LASTSHOOT_API_KEY" \
4 -H "Content-Type: application/json" \
5 -d '{
6 "input_image": [
7 "https://cdn.brand.com/models/model-017.png",
8 "https://cdn.brand.com/sku/emerald-drop-earrings.png"
9 ],
10 "prompt": "she is wearing the earrings from image 2",
11 "output_format": "png",
12 "callback_url": "https://hooks.brand.com/lastshoot"
13 }'
14
15# 2. Then upscale the result for zoom
16curl https://api.lastshoot.com/upscale/image/v1 \
17 -H "X-API-Key: $LASTSHOOT_API_KEY" \
18 -H "Content-Type: application/json" \
19 -d '{
20 "input_image": "<result_url from step 1>",
21 "width": 2048,
22 "height": 2048,
23 "output_format": "webp"
24 }'

Try it on your own catalogue.

Bring a few product photos. We will run them through these endpoints with you.