Get started
Pictures, clips, sounds and products
Every place a call takes a file takes a link to it: a reference picture, a start frame, a product’s pictures, a presenter, a video to look like, a recording. Products are yours to add and change.
curl -X POST https://vessero.com/api/v1/products \ -H "Authorization: Bearer $VESSERO_API_KEY" \ -H "Idempotency-Key: 47f8f6f5-ea00-4fb1-925f-76aac956a0ec" \ -H "Content-Type: application/json" \ -d '{ "title": "Glow serum", "description": "A vitamin C serum for dull skin, light enough to wear under make-up.", "price": 34, "currency": "USD", "benefits": [ "Brighter skin in two weeks" ], "sellingPoints": [ "15% vitamin C", "Fragrance free" ], "pictures": [ "https://example.com/products/glow-serum.jpg" ] }'
curl -X POST https://vessero.com/api/v1/ugc-ads \ -H "Authorization: Bearer $VESSERO_API_KEY" \ -H "Idempotency-Key: 47f8f6f5-ea00-4fb1-925f-76aac956a0ec" \ -H "Content-Type: application/json" \ -d '{ "prompt": "@Presenter1 holds @Product1 up to the camera in @Image1 and says: “This serum has fifteen percent vitamin C, and it is light enough to wear under make-up.”", "videoModel": "seedance-2.5", "presenters": [ { "kind": "pictures", "pictureKeys": [ "https://example.com/people/zola.jpg" ], "whoIsIn": { "kind": "no-person" }, "name": "Zola" } ], "productId": "5e4d3c2b-1a0f-4e9d-8c7b-6a5f4e3d2c1b", "pictureKeys": [ "https://example.com/sets/sunny-kitchen.jpg" ], "aspect": "9:16", "captionStyle": "word-pop", "confirmCredits": 194, "webhookUrl": "https://example.com/hooks/vessero" }'
A link, or a storage key
Wherever a field takes a file — referenceKeys, firstKey, pictureKeys, productPictureKeys, lookLike.key, a voice’s key, an edit’s source.key, a mask — send either a public https link to the file or a storage key. A link is brought into your Uploads before the call runs, held to the same types, sizes and content check as a file sent to POST /files, and the call goes on with its key.
- Once an hour. The same link in the same slot is brought in once an hour, so a quote and the run that confirms it use one upload.
- A link that cannot be brought in — one that needs a sign-in, a page instead of the file, a file of another kind — refuses the call with
400 refused, naming the field. Nothing is priced or charged. - A file on your disk goes to
POST /filesfirst, as a form; itskeygoes where the file does. - A clip’s or a recording’s length is read from the file when you leave its
durationSecout.
Your products
POST /products adds a product by hand — its name, what it is, its price, benefits, selling points, audience and up to 8 pictures, by link or by key — and PATCH /products/{productId} changes one: words, price, pictures added or taken off, another made the main one. POST /products/import reads one from its shop page instead. A product’s id is the productId a UGC ad, the board and the Creative Director take, with its name, facts and pictures.
Everything an ad is made from
A UGC ad takes what the UGC Ads page takes: presenters (a cast member, or a character you bring as pictures), the product (productId, and more pictures of it), other pictures, a video to look like, and a voice for each presenter. Name each in the words by its tag — @Presenter1, @Product1, @Image1, @Video1 — as on the page.