Skip to content
Get your keyGet a key

Reference · Images

POST/images/quote

Price it: make pictures from words and reference pictures

The price for exactly this body, the balance beside it and any notes. Nothing runs and nothing is charged. Run it with POST /api/v1/images, the same body, confirmCredits set to credits and the same Idempotency-Key.

Key needs
create · Make things and spend credits
Answers
A quote · free
Request
curl -X POST https://vessero.com/api/v1/images/quote \
  -H "Authorization: Bearer $VESSERO_API_KEY" \
  -H "Idempotency-Key: 47f8f6f5-ea00-4fb1-925f-76aac956a0ec" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "The shirt in the picture on a wooden hanger by a window, soft morning light",
    "model": "nano-banana-pro",
    "resolution": "4K",
    "referenceKeys": [
      "https://example.com/products/linen-shirt.jpg"
    ]
  }'
Response200 OK
{
  "object": "quote",
  "credits": 12,
  "balance": 840,
  "lines": [
    "1 image × 12 (Nano Banana Pro · 4K)"
  ],
  "notes": [],
  "requestId": "47f8f6f5-ea00-4fb1-925f-76aac956a0ec",
  "run": {
    "method": "POST",
    "path": "/api/v1/images",
    "confirmCredits": 12,
    "idempotencyKey": "47f8f6f5-ea00-4fb1-925f-76aac956a0ec"
  }
}

Header

  • Idempotency-KeystringYour id for this request: 8–64 letters, digits, - or _. A repeat within 10 minutes gets the first answer back and never runs twice. Use the same one for the quote and the run.

Body

  • promptstringrequiredWhat the picture shows, e.g. "A linen shirt on a wooden hanger by a window, soft morning light".
  • modelstringA picture model id from GET /api/v1/models (studio "images"), e.g. "nano-banana-pro". Default: the Images page’s own.
  • aspectRatiostringA shape the model lists (its aspectRatios), e.g. "16:9". Default: the model’s own.
  • resolutionstringA size the model lists (its resolutions), e.g. "2K" — or, where its resolutionsAre says "Speed", a speed: Midjourney’s "Fast" or "Turbo". Default: the model’s own.
  • referenceKeysstring[] · up to 16Pictures to work from, up to the model’s maxPictures. A model that needs a picture (needsPicture) makes nothing without one.
  • negativePromptstringWhat to leave out of the picture, for a model that takes it (takesNegativePrompt).
  • styleIdstringA style, on a model with a list of them (styles in GET /api/v1/models, studio "images": Soul): one of its styles.choices ids. Default: none, the model’s own look. Never moves the price.
  • styleStrengthnumberHow strongly the style is applied, 0–1, on a model that takes it (styles.strength), with a styleId. Default: auto.
  • seedintegerA seed, 1–1,000,000, on a model that takes one (seed "optional"): the same seed and settings make the same picture again. Default: a new one each run.
  • polishPromptboolean"Polish my words", on a model that has it (polish "optional"): the model rewrites the prompt into a fuller one before it runs; polishWithPicture says what it does with a picture in. Default: off.

Answers

  • 200quoteThe price for exactly this body, your balance and any notes. Nothing ran.
  • 400invalid_requestA field is missing or not accepted: see details.
  • 403feature_unavailableThe studio this needs is switched off for the account right now.
  • 429rate_limitedToo many calls this minute: see Retry-After.