Skip to content
Get your keyGet a key

Reference · Video

POST/captions/quote

Price it: burn captions into 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/captions, 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/captions/quote \
  -H "Authorization: Bearer $VESSERO_API_KEY" \
  -H "Idempotency-Key: 47f8f6f5-ea00-4fb1-925f-76aac956a0ec" \
  -H "Content-Type: application/json" \
  -d '{
    "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

  • sourceobject · kind upload | video | media | cardrequiredThe clip to caption.
  • stylestringThe caption style: word-pop (Word Pop), impact-slam (Impact Slam), clean-subtitle (Clean Subtitle), editorial-minimal (Editorial), luxury-serif (Luxury Serif), glass-tech (Glass Tech), marker-energy (Marker Energy), retro-collage (Retro Collage). Default: word-pop.word-popimpact-slamclean-subtitleeditorial-minimalluxury-serifglass-techmarker-energyretro-collage
  • colourstringThe lit word's colour: style, yellow, lime, cyan, pink, orange; "style" keeps the style's own (the default). Clean Subtitle and Luxury Serif keep theirs.styleyellowlimecyanpinkorange
  • sizestring | numberHow big: S, M (the style's own, the default), L or XL, or a per cent of the style's own, 60–160.
  • positionstring | numberWhere the captions sit: top, middle or bottom (the default) keep to the area the apps leave clear; lowest is the very bottom, below it, where TikTok, Reels and Shorts may lay their own caption over the words. Or the block’s centre as a share of the frame’s height, 0–1.
  • shadowstringThe shadow under the words: default, none, light, medium or strong.defaultnonelightmediumstrong
  • linesobject[] · up to 600The lines to caption, when the person fixed what was heard: every line, in order, each at the times the quote gave it (a fixed word keeps its timing). Leave it out to caption the lines as heard.
    • startnumberrequiredWhen the line starts, in seconds.
    • endnumberrequiredWhen it ends, in seconds.
    • textstringrequiredIts words, with any misheard word fixed.

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.