AI product photography API: splash, drip and pour shots
Six Sume catalog Formats make splash, drip, pour, squeeze, and texture stills of beauty products; for anything else, edit a packshot via /v1/images.

For AI product photography over the Sume API, call one of six catalog image Formats, such as sume-serum-drip or sume-toner-pour, at POST /v1/formats/sume/{slug}/runs with your packshot in attachments. All six are written for beauty and skincare products; for anything else, edit the packshot yourself with POST /v1/images and input_references.
Facts come from the Format catalog, Format API, Structured output, and Image API docs pages, each Format's published description, and the OpenAPI document behind the Sume API reference, read on 2026-09-27.
Which Format makes which shot?
Each description ends “Not for: animated or motion deliverables”, so each Format returns a still. Phrases such as “accurate packaging” state what a Format aims for, not a guarantee, so check every image against the real product. The catalog's other image Formats cover product sets (sume-editorial-product-set), model portraits (sume-model-product-portrait), and magazine covers (sume-magazine-cover-campaign).
| Format | The shot, in its description's words | Use it for |
|---|---|---|
sume-water-splash-hero | “a dramatic water splash, suspended droplets, fresh lighting, and premium package focus” | “hydrating skincare, cleanser, toner, and freshness-led product campaigns” |
sume-sunscreen-splash | “bright daylight, clean white formula, refreshing frozen water motion, and accurate SPF packaging” | “sun-care launches, summer campaigns, outdoor skincare ads, and freshness-led product stills” |
sume-cream-squeeze | “a tactile ribbon of product emerging from accurate cosmetic packaging” | “moisturizer, cleanser, mask, balm, and sensorial skincare stills” |
sume-serum-drip | “a macro pipette, one controlled droplet, translucent formula, and accurate bottle packaging” | “serum launches, ingredient-focused skincare ads, and tactile product stills” |
sume-toner-pour | “clear liquid, elegant glass or bottle handling, clean splash detail, and accurate packaging” | “toner, essence, micellar water, and lightweight skincare campaigns” |
sume-formula-texture-hero | “macro cream, gel, oil, foam, or serum forms around an accurate beauty package” | “ingredient stories, texture-led skincare campaigns, and sensorial ecommerce stills” |
How do I call a product-shot Format?
Send the packshot as an input_image attachment with a public HTTPS image_url, from a key with formats:write. To get the image back as a named field, bind an output_schema; the rules are in Sume Format structured output. The docs' example binds hero_image as a SumeMediaFile# next to text fields such as alt_text, and primary_output_key: "hero_image" makes that image the run's primary_output_url.
- Every declared property must be listed in
required, so a field the Format may leave empty is a nullable union, likealt_textbelow. The docs' rule is to require only what the Format actually makes. - The run answers
202and takes minutes. Poll it, or setcommunication.webhook_urlfor one signedformat.run.terminalPOST. - Result media are durable
media.sume.comURLs, public to anyone holding them.
curl -sS -X POST "https://api.sume.com/v1/formats/sume/sume-serum-drip/runs" \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: serum-30ml-drip-v1" \
-d '{
"instruction": "Serum-drip hero image of the attached bottle.",
"attachments": [
{ "type": "input_image", "image_url": "https://example.com/serum-packshot.png" }
],
"output_schema": {
"name": "acme/serum-hero/v1",
"strict": true,
"schema": {
"type": "object",
"additionalProperties": false,
"required": ["hero_image", "alt_text"],
"properties": {
"hero_image": { "$ref": "SumeMediaFile#" },
"alt_text": { "type": ["string", "null"] }
}
}
},
"primary_output_key": "hero_image"
}'How do I make a product shot without a Format?
For any other product, send the packshot to POST /v1/images in input_references as a public HTTPS URL, on a model whose input_references descriptor on GET /v1/images/models is not {"min": 0, "max": 0}, and prefer aspect_ratio: "auto" to keep the packshot's shape. Per-model reference limits, sizes, and response fields are in Image generation API with reference images.
How do I cut out or upscale the finished shot?
Two job-backed media tools take a public HTTPS image_url and return Sume-hosted artifacts. RMBG 1.0's schema says to prefer a Sume media URL, such as the Format run's primary_output_url. Poll GET /v1/jobs/:id/status, then read GET /v1/jobs/:id/result. The details are in Remove background API and AI image upscaler API.
| Tool | Endpoint | Output and options | Price |
|---|---|---|---|
| RMBG 1.0 | POST /v1/rmbg-1.0/remove | PNG artifacts with alpha: the background comes back transparent | $0.0225 per image, plus a 5.5% agent fee by default |
| Image Upscale 1.0 | POST /v1/image-upscale-1.0/upscale | upscale_factor 1–4 (default 2); output_format png (default), jpg, or webp | $0.20 per image, plus a 5.5% agent fee by default |
What does a product shot cost, and what are the limits?
A Format run's generation is metered at the API pricing rates and capped by generation_spend_cap_usd: up to $500, null runs at $500, 0 is rejected, and omitting it inherits the Format's cap. The run's full cost, the agent's own LLM turn included, is usage.debited_usd_micros. On the direct path, image billing is all-or-nothing: a completed image is billed in full and a failed one is not billed.
- Attachments: JPEG, PNG, WebP, GIF, or AVIF, up to 30 MB each, and up to 30 images and 500 MB per run.
- No model choice inside a Format run: the run's
modelfield picks only the orchestrating LLM, and the Format's tools choose the image models.
Sources
Related posts
More in Use cases
- 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.
- Product logo warping in image-to-video: frames vs references
In Sume's image-to-video API, a packshot in frame_images sets the first frame; input_references only guide. Check the label in extracted stills.
- Logo animation API: from brand mark to ident or end card
Animate a logo with the Sume API: call sume-logo-motion-design with the mark attached, or animate it as a first frame, then add it as an end card.
Written by Sume