| url | No | Product page URL. Must match the quote when quoteId is set. | |
| brief | No | Product brief. Must match the quote when quoteId is set. | |
| voice | No | Narration voice id from list_audio_lab_voices. | |
| script | No | Talking-head script used for this generate. | |
| actorId | No | Catalog creator id from list_talking_short_actors. | |
| angleId | No | Angle id from research_talking_short. | |
| quoteId | No | Quote id from quote_talking_short. Optional; generate quotes first when omitted. | |
| hookBlanks | No | Fill [bracket] keys from the Opening hooks seed. Example: { "the annoying thing": "soggy leftovers" }. Does not change the quote. | |
| hookIntent | No | Optional Opening hooks intent. Browse with list_hook_bank. Ignored when seeding if hookTemplateId is set. | |
| aspectRatio | No | Frame size. Talking Shorts is 9:16 vertical. | |
| captionMode | No | Off, Current karaoke (default), or Phrase overlays. phrase is MCP-ungated for any caller. The Phrase chip is operator-email only in the Talking Shorts workspace. hook remains accepted and burns Current karaoke (Talking Shorts has no hook_kinetic). English only. Does not change the quote amount. | current |
| faceImageUrl | No | Optional public face still URL when not using a catalog actorId. | |
| hookTemplateId | No | Optional Opening hooks template (catalog id hook_bank). The workspace picker is hidden. Seeds topic or Talking Shorts brief when that field is empty. Fill [brackets] via hookBlanks or by editing the seeded text. This is a script opening, not a caption look (captionStyle). Does not change the quote, consume, or refund. | |
| idempotencyKey | No | Optional key to retry an ambiguous Talking Short submit with the same inputs. | |
| captionsEnabled | No | Legacy on/off. Prefer captionStyle. false selects Off captions. | |
| durationSeconds | No | Clip length in seconds. 15, 20, or 25. | |
| ugcFinishEnabled | No | Phone-cam finish on the exported MP4. Defaults on. Does not change the quote. | |