Generate Flexible Brand Creative
generate_flexible_brand_creativeGenerate a layered creative document with an AI-generated background and editable text, CTA, and logo layers, at the ad channel's recommended size for the chosen platform and aspect_ratio (a shape the channel does not take is refused). Returns JSON containing canvas dimensions, positions, styling, and a hosted background image URL. The background URL is a standalone asset that the caller can download or use independently; it is also referenced by the returned document. Optional reference_images (at most 12) guide the background without painting their text or logos. The combined result is checked before return, and any warning is included in the document. No ad is automatically created or launched. Copy above the schema and canvas-specific limits is rejected with an error: headline 45 characters and 8 words on 1:1, 4:3, 4:5 and 9:16 canvases, 55 characters and 10 words on 16:9 and 1.91:1, or 35 characters and 6 words on the 6:5 banner; CTA wording that fits on one line of its button; subheadline 90 characters; label 24 characters.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cta | No | Optional call-to-action button text (e.g. 'Learn more', 'Try Metadata in ChatGPT'): any number of words that fits on one line of the button at the format's CTA size, including padding. The format-specific character limit is computed from that size. A longer one is rejected with the limit named, so it can be shortened and resent. | |
| body | No | Optional supporting body copy. Pass ONLY when the user explicitly asked for body copy — extra layers crowd the layout. | |
| label | No | Optional short tag set small above the headline, at most 24 characters: a product name or a category ('Metadata AI', 'Campaign Builder'). Longer is rejected with the limit named. | |
| style | No | How the user said the creative should look (style, medium, mood, colors, people, composition), copied word for word from them, never paraphrased. Every background draft follows it, and when no draft does, the call fails with an error saying so. Omit it when the user described no look. | |
| domain | Yes | Company domain for brand DNA (e.g. 'metadata.io'). No protocol. | |
| layout | No | How the copy is set: column (a left- or right-aligned column at the side) or centered (a centered stack across the top or bottom). In a batch, give the creatives different layouts. The copy goes where the scene leaves calm space for that layout, else where it is calmest. Omit it to let the calmest space decide. | |
| headline | No | Headline copy to place as an editable layer. Image copy, not ad text: at most 45 characters and 8 words on a 1:1, 4:3, 4:5 or 9:16 canvas, 55 characters and 10 words on 16:9 or 1.91:1, 35 characters and 6 words on the 6:5 banner. Longer copy is rejected with the limit named, so it can be shortened and resent. | |
| platform | No | The ad channel the creative is for: it sets the canvas sizes and the default shape. 'display' is Google Ads and Microsoft Advertising image assets; 'general' an image for no single channel, or one image shared by several. Default: 'linkedin'. | |
| characters | No | Names of brand characters (registered with register_brand_character) the creative must show, as the user named them. Their sheets guide every draft and a draft that loses one is not returned. An unknown name is refused with the closest registered one: confirm it with the user, never pick one for them. Omit when the user named no character. | |
| disclaimer | No | Optional fine-print/disclaimer copy. Pass ONLY when the user explicitly asked for a disclaimer. | |
| subheadline | No | Optional subheadline copy, at most 90 characters; pass it only when it adds a fact the headline lacks. | |
| aspect_ratio | No | Canvas shape, one of the shapes 'platform' takes; the creative comes out at that channel's own size for it. Each platform's shapes and sizes: linkedin (default 1:1): 1:1 at 1200x1200, 1.91:1 at 1200x628, 4:5 at 720x900; facebook (default 1:1): 1:1 at 1080x1080, 4:5 at 1440x1800, 9:16 at 1080x1920, 1.91:1 at 1200x628; instagram (default 1:1): 1:1 at 1080x1080, 4:5 at 1440x1800, 9:16 at 1080x1920, 1.91:1 at 1200x628; reddit (default 4:3): 4:3 at 1440x1080, 1:1 at 1080x1080, 4:5 at 1080x1350, 16:9 at 1920x1080; display (default 1.91:1): 1.91:1 at 1200x628, 1:1 at 1200x1200, 4:5 at 960x1200, 9:16 at 1080x1920; general (default 1:1): 1:1 at 1200x1200, 1.91:1 at 1200x628, 4:5 at 1440x1800, 9:16 at 1080x1920, 16:9 at 1920x1080, 4:3 at 1440x1080, 6:5 at 300x250. A shape the platform does not list is refused before anything is generated. Pass this whenever the user names a size or shape: '1:1' square, '1.91:1' landscape (LinkedIn, Meta, Google and Microsoft), '16:9' wide, '4:3' Reddit's landscape, '4:5' portrait, '9:16' full-height story, '6:5' the 300x250 banner of LinkedIn Message and Conversation ads ('general' only). Omit to take the platform's default shape. | |
| include_logo | No | Add a brand logo layer (resolved from the brand kit). Default: true. | |
| instructions | Yes | Natural-language direction for the background scene and overall creative (e.g. 'clean B2B scene for an AI analytics launch'). | |
| background_tone | No | Base tone of the background scene, drawn from the brand palette. In a batch, give each creative a different tone so no two share one. Omit it to anchor the scene on the brand's website background. | |
| headline_accent | No | Optional key phrase of the headline, copied word for word from it, shown in the brand accent color (e.g. 'final say' in 'You keep the final say'). It must be part of the headline, not all of it. When the accent color would not read on the background the phrase is shown in the headline color. | |
| reference_images | No | URLs of the images (PNG, JPG, WebP, GIF, BMP or TIFF) the user gave as references for this creative, at most 12: images they attached and asked a new creative to follow. A creative with brand characters takes fewer, and the call says how many. The background follows their style, medium, mood and composition in place of the brand's own reference ads, and their subject when the instructions ask for it; their text and logos are never painted. An animated GIF or WebP is read from frames across its animation. A URL that cannot be read fails the call, naming it, before anything is generated. Omit when the user gave no reference image. |