Generate a visual
create_visualStart an image generation job. Spends Creative Credits. REQUIRED: call plan_visual first — with the same creative_kind, tier, visual_type and references_count (the length of references) — and send its credits as expected_credit_cost, plus a stable idempotency_key so a retry cannot double-charge. This connection also has a daily spend cap set at consent — if you hit it, wait until UTC midnight or tell the user to reconnect with a higher cap. SETS, as Creative Studio makes them — ONE job, ONE generation's price, cut into separate pictures (output_urls): by default you get 4 versions of your prompt (3 for a thumbnail) to choose from, as the Studio shows; batch changes how many (1-4). options (2-4 directions, each its own prompt and optionally its own words) gives competing alternatives instead. Never call this repeatedly for more choices. CAROUSELS: creative_kind "carousel" with slides (2-8, in swipe order: the first is the cover — headline + optional subhead; the last is the ask — cta + optional headline; the ones between are content frames — title, a frame_type and its fields) and optional preset (portrait 4:5, the default, or square). The whole deck is drawn as ONE picture and cut into its slides, at one flat price; the words on each slide are the words you send. Keep slides SHORT — big type renders cleanly, small dense type does not: a few words per line, list bullets of one short line. One call = one deck; do NOT make a carousel slide by slide. The answer (or get_job, while it runs) carries slides: the slide URLs in order. Look at them: a slide whose words came out wrong is fixed with redo_carousel_slides (one free redo per slide), not by remaking the deck. WORDS ON THE PICTURE: put the exact words to render in exact_copy (headline, offer = the sub-headline or supporting line, cta, brand_name); when you leave it out, the words the prompt quotes for the picture are lifted from it, and a prompt with none renders no text. ART DIRECTION, as the Studio's brief sets it: typography (how the words are set: weight, case, style), layout (where the copy sits), goal, objective, awareness_stage; thumbnail_surface for a thumbnail. REAL PHOTOS, LOGOS, PEOPLE: pass brand Library asset ids (list_brand_assets, or upload_brand_asset for a file at a URL) as references, with reference_roles saying what each is for. BRAND CONTEXT — decide it every time: by default the brand workspace's own business description, colours and logo are written into the brief, so the picture is ABOUT that business. When the piece is about anything else — a topic, an opinion, a how-to, an industry point, or another company — send brand_context: "prompt_only" so only your prompt (and exact_copy) is used, or the output reads as an advert for the workspace. For another company's work, use ITS brand (get_site_brand for its website, or create_brand). Output URLs are public CDN links.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | What the piece is for | |
| tier | No | ||
| batch | No | How many versions of this prompt to choose from, as ONE job at one price. Leave it out for Creative Studio's default: 4 (3 for a thumbnail). Send 1 only when one picture is all that is wanted. Takes of ONE idea, never several ideas: for different ideas use `options`. Not slides. | |
| layout | No | Where the copy sits: classic (bottom band), top-band, side-panel, full-bleed-card, corner-lockup, centered-hero, minimal-caption, split | |
| preset | No | The format, as Creative Studio names it: square, portrait, story, landscape, twitter_header, youtube_banner, linkedin_profile_banner, linkedin_company_banner, thumbnail, pin, link, display_rectangle, display_halfpage, display_leaderboard, display_skyscraper, display_billboard, display_mobile_banner, display_large_leaderboard. Wins over aspect_ratio. A carousel is portrait (default) or square; display_* formats other than display_rectangle and display_halfpage are made only as a set (batch or options). | |
| prompt | Yes | ||
| slides | No | Carousel only, and required for it: the deck, one entry per slide in swipe order | |
| options | No | 2-4 competing directions as ONE job at one price (a set). Use this, not batch, for different concepts or angles: each direction has its own prompt and its own words. The top-level `prompt` is still required: one line saying what the set is | |
| brand_id | Yes | Brand workspace id from list_brands | |
| objective | No | The one outcome it should drive, in a sentence | |
| user_goal | No | Optional: the user's goal behind this call, in one short sentence of plain words (e.g. "add a page so customers can book tables"). No names, emails or other personal details. | |
| brand_mark | No | What branding the piece carries: the business name set as type, the Library logo, or none | |
| exact_copy | No | The exact words to render on the picture | |
| references | No | Brand Library asset ids (list_brand_assets / upload_brand_asset) to use in the picture | |
| typography | No | How the words are set — weight, case, style, e.g. "heavy condensed sans, all caps, tight tracking" | |
| visual_type | No | The same visual_type sent to plan_visual, if any: one of product, environment, graphic, lifestyle, interface, in_scene_text | |
| aspect_ratio | No | One of 1:1, 4:5, 9:16, 16:9, 3:1, 4:1, 189:32, 2:3, 1.91:1; or send `preset` instead | |
| brand_context | No | `brand` (default) writes the workspace's own business, colours and logo into the brief. Send `prompt_only` whenever the piece is NOT about that business (a topic, an opinion, an industry point, another company) — otherwise it reads as an advert for the workspace | |
| creative_kind | Yes | ||
| awareness_stage | No | How much the reader already knows | |
| idempotency_key | Yes | Stable key for this attempt; reuse it after a timeout | |
| reference_roles | No | One per reference, in order: product (show this product), place (put this object in the scene), logo (the brand mark, reproduced exactly), style (borrow the look only), scene (this location), reproduce (keep this creative and its words) | |
| thumbnail_surface | No | Thumbnail only: which video frame it covers | |
| expected_credit_cost | Yes | Credits returned by plan_visual |