AI mockup generator API: put your design on a product

Make product mockups with an image API: send your design and a blank product photo as references, say where the design goes, and check each result.

5 min readSume
All posts

An AI mockup generator puts your design on a product, such as a t-shirt, a mug, or a box, without a photoshoot or a PSD template. With an image API, send the artwork, plus a photo of the blank product if you have one, as reference images, describe the product and where the design sits, and ask for a few versions to compare.

With Sume, that is one POST /v1/images call with several input_references. The details below come from the Image API docs and the catalog that GET /v1/images/models serves, read on 2026-09-27.

How do I make a mockup from my design?

Send the design and the blank product as two references. Each reference entry carries only an image URL, with no field that marks it as the design or the product, so the prompt has to say which is which by describing what each one shows.

  • Set aspect_ratio yourself. "auto" matches the output to the reference, and the docs do not say which reference it follows when you send two.
  • No photo of the blank product? Send the design alone and describe the product in words.
  • Every reference must be a public HTTPS URL. Localhost, private-network, and non-HTTPS URLs are rejected before submission.
curl -X POST "https://api.sume.com/v1/images" \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-image-2.5",
    "prompt": "Print the round fox logo from the artwork image on the plain white ceramic mug from the product photo, centered on the side facing the camera. Keep the shapes and colors of the logo identical. Soft studio light.",
    "aspect_ratio": "1:1",
    "n": 4,
    "input_references": [
      { "type": "image_url", "image_url": { "url": "https://example.com/fox-logo.png" } },
      { "type": "image_url", "image_url": { "url": "https://example.com/blank-mug.jpg" } }
    ]
  }'

What should a mockup prompt say?

Describe the product the way a photographer's brief would, and repeat the constraint every time:

  • The product and its material: "a heather-gray cotton t-shirt", "a matte black water bottle", "a kraft paper box".
  • Placement and size: "centered on the chest, about a third of the shirt's width".
  • How the design is applied: screen print, embroidery, engraving, or a printed label.
  • The setting: "flat lay on a wooden table", "on a hanger against a white wall", "held in one hand".
  • The constraint: "Keep the artwork's shapes, text, and colors identical."

How many references and mockups can one request take?

It depends on the model, and GET /v1/images/models publishes each model's ranges before you call. For the models that edit from references:

From Image API, the catalog GET /v1/images/models serves, and current Sume API code, read 2026-09-27.
FieldWhat it holdsLimit
input_referencesYour design, and the blank product if you have oneUp to 16 on ChatGPT Image 2.5; up to 10 on ChatGPT Image 2, Nano Banana 2 and Pro, and Seedream 4.5
nHow many mockups come back1–4 on ChatGPT Image and Nano Banana; one image on Seedream 4.5 when you send a reference
aspect_ratioThe frameA value from the model's list; auto only on models that list it
promptProduct, placement, setting, constraintRequired

What are the limits?

  • The model generates a new picture, so lines, lettering, and colors in the artwork can shift. Treat a mockup as a preview, not a print proof.
  • Each completed image is billed at the model's catalog rate, plus a 5.5% agent fee by default, so four mockups cost four images; a failed generation is not billed.
  • Image API result URLs are Sume-hosted and signed. Download the mockups you keep.
  • For a larger file of a finished mockup, AI image upscaler API covers upscaling it.
  • For several products in one shot, see combine multiple product photos into one image; to animate a logo, see logo animation.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume