Reference · Video
POST/enhance/quote
Price it: upscale, reframe or edit a picture or a clip
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/enhance, the same body, confirmCredits set to credits and the same Idempotency-Key.
- Key needs
create· Make things and spend credits- Runs it
POST /enhance- Answers
- A quote · free
Request
curl -X POST https://vessero.com/api/v1/enhance/quote \ -H "Authorization: Bearer $VESSERO_API_KEY" \ -H "Idempotency-Key: 47f8f6f5-ea00-4fb1-925f-76aac956a0ec" \ -H "Content-Type: application/json" \ -d '{ "op": "upscale", "source": { "kind": "upload", "key": "text" } }'
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
- opstringrequiredWhat to do: upscale, removeBackground, expand, edit, relight, restyle or erase.
upscaleremoveBackgroundexpandeditrelightrestyleerase - sourceobject · kind upload | media | video | cardrequiredWhat to work on.
- factornumberUpscale a picture: 2 (the default) or 4. A clip is made 1080p instead.
- qualitystringUpscale a clip: standard (Topaz Precision, sharper in seconds; the default) or best (Topaz Starlight, finer detail, a few minutes). Both make it 1080p; a clip that is 1080p already is refused.
standardbest - shapestringExpand: the shape to grow it out to: 1:1, 4:5, 9:16, 16:9.
1:14:59:1616:9 - presetstringRelight or restyle: a preset id from GET /api/v1/models (studio "enhance"). Default: the first.
- promptstringEdit: the change, e.g. "make the jacket red" (needed). Expand, relight, restyle: anything to add (optional). Erase: what to put where the mask is, e.g. "a potted plant" (optional: without it the area is filled to match what is around it).
- maskstringErase: what to take away, as a PNG over the picture — white where to erase and black elsewhere, or opaque where to erase and clear elsewhere — stretched to the picture’s size: a storage key from POST /api/v1/files or POST /api/v1/library/use, or an https link to the file (brought into their Uploads first). Needed for erase.
- secondsnumberAn uploaded clip’s length in seconds, which prices its upscale.
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.