AI model holding your product: photos and video via API
Pose an AI model with your product via the Sume API: sume-model-product-portrait for stills, sume-beauty-studio for video, or image edits you control.

To make a photo or a video of an AI model holding your product with the Sume API, run a catalog Format at POST /v1/formats/sume/{slug}/runs with the packshot attached and the pose requested in instruction: sume-model-product-portrait makes a still and sume-beauty-studio makes a video. To control each step, make the still on POST /v1/images from product and model reference images, then animate it on POST /v1/videos as the first frame.
The facts below come from Sume's Format catalog, Format API, Image API, and Video generation docs, read on 2026-09-27. A presenter who speaks about the product is a different route, covered in AI avatar video with your product and background.
Which Format makes the still, and which makes the video?
Both descriptions are about beauty: they name skincare and cosmetics. The last clause gives the output: “Not for: animated or motion deliverables” marks the still, and “Not for: static campaign deliverables” marks the video. The quoted wording is each Format's stated aim, not a guarantee about any one result.
| Slug | Output | Stated aim | Use when the brief is for |
|---|---|---|---|
sume-model-product-portrait | Image | “intimate beauty framing, natural skin, accurate packaging, and editorial composure” | “skincare endorsements, cosmetic portrait campaigns, and model-led product stills” |
sume-beauty-studio | Video | “a model, cosmetic product, soft editorial lighting, and polished tabletop or vanity styling” | “skincare launches, makeup campaigns, beauty product reels, and clean studio brand films” |
Can the model hold the product?
Neither description says how the product is posed. Name the pose in instruction, for example “the model holds the jar at chin height”. The instruction is composed after the Format body and wins where they disagree, but it is still a request, so review what comes back.
Attach the packshot as an input_image with a public HTTPS URL. You can attach a photo of a specific person too, but the portrait description does not say it takes a supplied person, as the sume-virtual-fitting description does (“on a supplied person”). Only send photos of people who agreed to it.
curl -sS -X POST "https://api.sume.com/v1/formats/sume/sume-model-product-portrait/runs" \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: serum-portrait-v1" \
-d '{
"instruction": "The model holds the serum bottle at chin height.",
"attachments": [
{ "type": "input_image", "image_url": "https://example.com/serum.png" }
],
"generation_spend_cap_usd": 10
}'How do I make the still myself?
Send the packshot and a model photo to POST /v1/images as input_references. ChatGPT Image 2.5 (openai/gpt-image-2.5) takes up to 16 image references. Other models publish their own input_references range on GET /v1/images/models, and a model whose maximum is 0 is text-to-image only. Reference URLs must be public HTTPS.
data[].urlin the response is Sume-hosted and signed. Host the still you pick at your own public HTTPS URL before you reuse it as a video frame.
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": "Beauty portrait: the model holds the serum bottle at chin height, soft window light",
"input_references": [
{ "type": "image_url", "image_url": { "url": "https://example.com/serum.png" } },
{ "type": "image_url", "image_url": { "url": "https://example.com/model.jpg" } }
]
}'How do I turn the portrait into a video?
Run sume-beauty-studio with the same packshot, or send your chosen still to POST /v1/videos in frame_images with frame_type: "first_frame", which sets the clip's first frame, and describe the motion in prompt. Check the model's supported_durations and supported_aspect_ratios on GET /v1/videos/models first. How first frames and references differ for packaging is covered in Product logo warping in image-to-video.
Video models do not lip-sync to generated TTS or to a later voice-over, so a model who speaks belongs on the avatar route linked above.
What does each path cost?
A Format run's generation is metered at the API pricing rates and capped by generation_spend_cap_usd, up to $500 per run. Image generation is all-or-nothing: a completed generation is billed in full, and a failed or canceled one is not billed. Each image model's pricing line on GET /v1/images/models/{model_id}/endpoints already includes Sume's margin. A video job is reserved on submit at the provider's list price × 1.25, plus a 5.5% agent fee by default.
What are the limits?
The inputs on each path are bounded:
| Input | Limit |
|---|---|
Format run attachments | Up to 30 images: JPEG, PNG, WebP, GIF, or AVIF, 30 MB each and 500 MB per run. |
Format run instruction | Up to 8,000 characters; about the first 4,000 reach the run as prompt text. |
ChatGPT Image 2.5 input_references | Up to 16 images. |
POST /v1/images n | 1–10 images per call; per-model ceilings are lower. |
POST /v1/images wait | Blocks up to 30 seconds and answers 200; a longer generation answers 202 with a job to poll. |
Sources
Related posts
More in Use cases
- AI product commercial video generator API: Formats or DIY
Make a product commercial with the Sume API: run sume-product-commercial or sume-cinematic-studio-commercial, or generate the clip on /v1/videos.
- AI product demo video generator API: show one real action
Make a product demo video with Sume: run the sume-product-usage-demo Format with a packshot and one action, or animate stills and join on Timeline.
- Before-and-after video generator API: build the reveal
Build a before-and-after video with the Sume API: the sume-before-after Format, a first-and-last-frame clip, or a Timeline wipe between two stills.
- Faceless video API: voiceover, B-roll, music, and captions
Build a faceless video with the Sume API: TTS narration as the spine, generated B-roll, a Sume-hosted music bed, and captions timed from TTS words.
Written by Sume