| brief | No | The ad brief: brandName, brandOneLiner, valueProps (1-8 strings), cta, intent, format (an id from list_ad_formats), shotCount (2-5), totalDurationSec (6-20), aspect (9:16 | 16:9 | 1:1), language, quality (fast | premium), modelTier (standard | cinematic), garmentImageUrl for the try-on formats. | |
| music | No | Optional music bed. | |
| quality | No | Lip-sync tier. premium costs more per talking shot. Defaults to the brief's quality, else fast. | |
| quote_id | Yes | The quote_id from estimate_ad_cost for these exact fields (kind ad). Required. | |
| canvas_id | No | Optional board id (from list_canvases or create_canvas): the ad is placed on it as a generation card that fills in when the render lands. | |
| avatar_url | Yes | Public https URL of the creator's reference image (a catalogue portrait, a generate_avatar result, or an import_asset URL). | |
| model_tier | No | cinematic renders on Seedance with director-grade camera work and costs more per shot; needs the brief. | |
| project_id | No | Optional studio project (uuid) to file the run under. | |
| storyboard | No | The storyboard returned by write_ad_storyboard, as is or edited. When present it is what renders; the brief is optional alongside it. | |
| persona_mode | No | synthetic lets the studio substitute one consistent generated creator for the avatar; exact-avatar (default) keeps the avatar as given. | |
| needs_avatar_gen | No | True when the avatar still has to be generated (billed as a line). | |
| needs_product_gen | No | True when the product still has to be generated (billed as a line). | |
| product_image_url | Yes | Public https URL of the product image. | |
| avatar_description | No | Optional one-line identity note for the creator (20-500 characters). | |
| product_description | No | Optional one-line product note (10-500 characters). | |