Reference · Creative Board
Add cards, and the wires between them
Add cards to one of their boards — with wires between them, or to cards already there. A Creative Board is cards on a canvas joined by wires — notes, pictures, clips, voiceovers, music, assistants and finish cards, with their products, brand kits and cast members — each wire feeding one card into the next (a picture into a clip as its first frame, a note into a picture as its prompt). GET /api/v1/boards/guide has every kind of card, its settings and what it takes in. Each card is made as the board’s own + menu makes it: its words, model and settings set as its controls set them, in the shape of what it makes. They go in a tidy row (or a titled group, with group) just right of everything on the board, or beside the card named in near — never on top of a card. A product, brand or cast card is filled from its row as the board fills one. The answer gives each card’s id by its key, and for a card that runs what its next run costs or why it cannot run yet. Free: nothing runs and nothing is charged. A repeat with the same Idempotency-Key gets the first answer back instead of more cards.
- Key needs
create· Make things and spend credits- Spends
- Nothing
- Answers
- Data
curl -X POST https://vessero.com/api/v1/boards/0b6f3c1e-2d4a-4b5c-8d9e-0f1a2b3c4d5e/cards \ -H "Authorization: Bearer $VESSERO_API_KEY" \ -H "Idempotency-Key: 47f8f6f5-ea00-4fb1-925f-76aac956a0ec" \ -H "Content-Type: application/json" \ -d '{ "cards": [ { "key": "text", "kind": "note" } ] }'
Path
- boardIdstringrequired—
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
- cardsobject[] · up to 50requiredThe cards: each a key of yours, its kind, its words and the settings its kind takes (GET /api/v1/boards/guide lists them).
- keystringrequiredYour name for the card in this call ("hero"): wires name it, and the answer gives its id by it.
- kindstringrequiredThe kind of card: note, picture, clip, voiceover, music, assistant, finish, group, product, brand, cast.
notepictureclipvoiceovermusicassistantfinishgroupproductbrandcast - namestringThe card’s name, shown above it. A group’s name is its title.
- wordsstringThe card’s words: a note’s text, a picture’s, clip’s or music’s prompt, a voiceover’s script, an assistant’s instructions.
- modelstringA model id for a picture, clip, voiceover, music or assistant card; left out, the board’s default. GET /api/v1/boards/guide lists the ids each takes.
- modelModestringThe way a clip’s model runs, on one that runs more than one way, as its card’s Mode pill picks it (GET /api/v1/boards/guide): Kling 4.0’s keyframes — the pictures wired in as reference are frames between its first-frame and last-frame, in wire order — or omni, references. Unset, the way its wires call for: pictures or clips wired in as reference run on omni.
- aspectRatiostringA picture’s or clip’s shape, one its model makes ("9:16"), or a finish card’s: source, 9:16, 4:5, 1:1, 16:9 ("source" follows its first clip). The card takes the shape.
- durationSecintegerA clip’s length in seconds, one its model makes; or an instrumental track’s: 15, 30, 60, 90.
- resolutionstringA picture’s or clip’s resolution, one its model offers ("2K", "720p").
- audiobooleanA clip with sound or without, on a model that has the choice.
- musicbooleanA clip’s Music switch, on a model that has one (Seedance), while sound is on: false, no background music of the model’s own — only the voices and sounds the prompt asks for; true, the model decides. Unset, the card’s default: off for voices alone or a quoted line from a still, else on. It does not change the price.
- draftbooleanA clip made as a draft, on a model with the switch (Seedance 2.5): at 480p and the 480p price, a quick look. The take worth keeping is made sharp at 1080p — the same take — with POST /api/v1/boards/{boardId}/cards/{cardId}/run’s upgradeDraft, within 7 days of it. False, made at the resolution set.
- loopbooleanA clip that loops, on a model that makes one (Grok Imagine 1.5): its start image is its end too. Only with a start image wired and no end image. It does not change the price.
- cutsbooleanCuts, on a model with the switch (PixVerse v6): the model cuts between a few shots in one clip, from words or a start image — never between a start and an end image. It does not change the price.
- camerastringA clip’s camera move, added to its prompt as direction; it does not change the price.
dolly-indolly-outcrash-zoomorbit-360crane-upwhip-panfpv-divehandheldbullet-timesnorricamdrone-reveallocked-off - clipUsestringWhat a clip card does with the finished clip wired into it as its clip: follow (the default: a new clip with its motion, camera and timing), extend (carries it on), edit (changes it as the words say), motion (the character in the picture wired in as its first-frame moves the way it moves), lipsync (its mouth matched to the voiceover wired in as audio) or upscale (made 1080p, at the quality in upscaleQuality). Extend, edit and motion run on a model that does the job (GET /api/v1/boards/guide); a lip sync and an upscale have no model, length or shape to pick.
followextendeditmotionlipsyncupscale - lipsyncScenestringA lip sync’s scene: lite (one person facing camera, the default) or basic (a busier one, with cuts).
litebasic - upscaleQualitystringAn upscale’s quality: standard (Topaz Precision, sharper in seconds; the default) or best (Topaz Starlight, finer detail, a few minutes). Both make the clip 1080p; one that is 1080p already is refused. Prices: GET /api/v1/models (studio "enhance").
standardbest - clipTrimobject | nullThe part of the finished clip wired into a clip card that goes in, at least 1 second long; null for all of it. Set once that one clip is wired in.
- motionFacingstringMotion control: the character faces as the clip’s person does (clip, the default) or as the picture does (picture), on a model with the choice.
clippicture - motionBackgroundstringMotion control: the clip’s background (clip, the default) or the picture’s (picture), on a model with the choice.
clippicture - keepSoundbooleanAn edit keeps the clip’s own sound (true, the default) or makes new (false), on a model with the choice.
- presetIdstring | nullThe style an edit runs in, on a model with a list of them (GET /api/v1/boards/guide); null for none, where its model needs none.
- castModestringHow a cast member wired into a clip is kept: as a whole character, their views and voice as references (character, the default, on a model that takes them), or the start picture wired in kept exact (frame).
characterframe - dialogueAsWrittenbooleanA clip whose words say who speaks each quoted line, two people talking: true keeps them as written, each voice matched to its speaker by the words.
- opstringMakes a picture card work on the picture wired into it as its reference, as the board’s Edit & Enhance does: upscale, removeBackground, expand, edit (as its words say), relight or restyle. Set when the card is added; such a card takes its words and opParams, and no model.
upscaleremoveBackgroundexpandeditrelightrestyle - opParamsobjectAn Edit & Enhance card’s options: {factor} for an upscale, {shape} for an expand, {preset} for a relight or restyle.
- styleIdstring | nullA picture’s style, on a model with a list of them (GET /api/v1/boards/guide); null for its default.
- styleStrengthnumber | nullHow strongly a picture’s style is applied, 0–1, on a model that takes it, once a style is picked; null for auto.
- seedinteger | nullA seed, on a model that takes one: a picture’s 1–1,000,000, a clip’s 1–2,147,483,647 (PixVerse v6). The same seed and settings make the same picture, and help make the same clip. null for a new one each run.
- polishPromptbooleanA picture on a model that can rewrite its prompt into a fuller one before it runs: true to have it.
- linkstring · https | nullA public web page a new clip is made from, by its https:// link, on a model that reads one (Wan 3.0, Wan 3.0 Prime): one that opens without signing in. Never with a start or end frame wired. null takes it out.
- voiceIdstringThe voice a voiceover is read in, from GET /api/v1/voices.
- stylestringA music card’s style: genre, instruments, mood ("lo-fi, warm keys").
- songTitlestringA music card’s song title.
- instrumentalbooleanA music card: true (the default) for an instrumental, false for vocals.
- tierstringA finish card’s tier: captions only, the ad pack, or kinetic type.
captionsad-packkinetic - captionStylestringA finish card’s captions, as its Captions panel offers them, the way POST /api/v1/ugc-ads takes them: none (No captions), auto (Auto), 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). none makes a cut with no captions on the captions and ad-pack tiers: it needs no words, and an ad pack keeps its overlays. Kinetic type is its words. auto follows its look.
noneautoword-popimpact-slamclean-subtitleeditorial-minimalluxury-serifglass-techmarker-energyretro-collage - captionSizeintegerA finish card’s caption size, in per cent of the style's own, as its Captions panel's Size slider sets it: S 60, M 100, L 130, XL 160, or any whole number between. Default 100. Captions and ad-pack tiers.
- captionPositionstring | numberWhere a finish card’s captions sit, as its Captions panel sets it: "top" (under the AI label when it is on), "middle", "bottom" (the default, where captions always sat), or the caption block’s centre as a share of the frame’s height, 0–1, kept inside what its platform leaves clear. Captions and ad-pack tiers.
- lookstringA finish card’s look for its overlays (ad pack and kinetic).
brand-kitugc-nativedtc-cleansale-blastbeauty-softapp-glassproof-stack - platformstringWhere a finish card’s cut goes: its captions keep out of that app’s buttons.
tiktokreelsshortsstoriesmeta-feedyoutube - overlaysstring[] · up to 6A finish card’s overlays (ad pack and kinetic); [] for none.
- aiLabelbooleanA finish card’s "AI-generated" label on every frame, top left, as POST /api/v1/ugc-ads takes it: true puts it on; false leaves it off, even with a cast member upstream, and the person says it was made with AI where they post it. Left unset, it is on whenever a cast member is upstream.
- ctastringA finish card’s end-card call to action ("Shop now").
- disclaimerstringA finish card’s small print, on screen for the whole cut.
- winnerbooleanA finish card starred as the cut to ship (true), or the star taken off (false), as its Mark as winner does: once its cut is made, or on a card marked already.
- colorstring | nullA note’s or a group’s tint; null for none.
- listbooleanA note kept as a list: a prompt per line, each run as a card of its own by the picture or clip it feeds. A list is named List unless named.
- productIdstringA product card’s product, from GET /api/v1/products.
- brandIdstringA brand card’s brand kit.
- actorIdstringA cast card’s cast member, one of theirs or of the starter cast, from GET /api/v1/cast.
- posestringWhich of a cast member’s pictures their card sends, one they have; hero when left out. custom, with shotId, for a shot of their own.
herofullthree-quarterprofilebackfaceholdingcustom - shotIdstringWith pose custom: which shot of their own the card sends.
- takesintegerHow many takes one run of the card makes, 1–4: each extra take lands on a copy beneath it and is charged as one.
- wiresobject[] · up to 200Wires between the new cards, or to cards already on the board.
- fromstringrequiredThe card the wire leaves: a key from cards, or the id of a card on the board.
- tostringrequiredThe card it feeds: a key, or a card id.
- rolestringWhat the wire carries, e.g. first-frame or reference for a picture into a clip; left out, the usual one for the pair.
referencefirst-framelast-framepromptaudioclipvoice
- groupobjectPut the new cards in a titled group, as the board’s stages are.
- titlestringrequiredThe group’s title.
- colorstringIts tint.
ambercyancoralvioletmint
- nearstringA card on the board to put the new ones beside, on its right; left out, they go right of everything.
Answers
- 200okWhat it did, as data.
- 400invalid_requestA field is missing or not accepted: see details.
- 404not_foundNot found on this account.
- 403feature_unavailableThe studio this needs is switched off for the account right now.