Skip to main content
Cherry Shot Shoots turn your product images into polished, studio-quality photos — no physical set required. You choose the visual style, quality tier, and whether you want the product shown alone or styled on an AI model. The API handles the rest asynchronously: you create the shoot, then poll until the images are ready.

How a shoot works

Shoots are asynchronous. When you call POST /v1/shoots, Cherry Shot immediately reserves the required credits and returns a shoot object with status: pending. The shoot then moves through a short pipeline before your images are delivered:
Poll GET /v1/shoots/{id} until status is completed, then read the images array for the finished URLs.

Create a shoot

POST /v1/shoots
string[]
required
An array of 1–8 public http(s) URLs pointing to your product images. The first URL is treated as the hero image and receives the most prominent placement. All URLs must be publicly accessible at request time.
string
required
The visual treatment applied to your shoot. Must be one of:
string
default:"product_only"
Controls whether the product is shot alone or placed on an AI model.
  • product_only — the product is the sole subject.
  • with_model — the product is worn or held by an AI model. Requires model_url.
string
Required when mode is with_model. Provide a public image URL of the model you want to use. Browse available presets via GET /v1/models.
integer
default:"4"
The number of output images to generate. Accepted values: 1, 4, or 6.
6 shots is only available for the classic and minimal styles. For all other styles, a request for 6 is automatically clamped to 4 and the response will include shots_adjusted: true.
string
default:"standard"
Output resolution and credit cost per image:
string
default:"1:1"
The output aspect ratio. Common values include 1:1, 4:5, 9:16, and 16:9. Use 4:5 or 9:16 for portrait-oriented social placements, and 16:9 for widescreen or banner use.
string
An optional background color hint (e.g. "#F5F0EB" or "ivory"). Supported for studio-style shoots such as classic and minimal. Has no effect on styles that use complex scene environments.
string
Optional. Reserved for future push-delivery support. For now, poll GET /v1/shoots/{id} to check status.

Example request

Response (pending)

Credits are reserved at creation time. If the shoot later fails, credits are refunded to your balance automatically.

Poll a shoot

GET /v1/shoots/{id} Call this endpoint repeatedly to track progress. The status field moves through the following stages:
Poll every 3–5 seconds. A full set of 4 images typically completes in well under a minute.

Response (completed)

Each entry in images includes a full-resolution url and a thumbnail_url suitable for previews. Individual images can have a status of fulfilled or failed — a shoot can complete even if one or more individual shots fail, and credits for any failed shots are returned.