create_campaign
Create a wiamotion product video campaign from 1-4 product photos. Produces finished 1080x1920 video(s) + thumbnail(s) + multi-language metadata (never a raw/unfinished clip) and deducts credits from the caller's account. Package tiers: "trial" (1 video, watermarked, 25cr, 3-language metadata), "starter" (1 video, 50cr, 254-language metadata), "launch" (3 videos — hook/how-to/brand mood — 254-language metadata, 125cr), "story" (everything in launch plus one 60-90s cinematic brand short on a premium engine, 400cr). DIRECT YOUR OWN CINEMATOGRAPHY: write distinct scene prompts (English, one short cinematic camera direction each) — this is what makes the result good, the server will not invent creative direction for you. Videos are subtitle-free by default (globally reusable); on-screen text (hook_text / endcard_text) is OPT-IN — omit both unless you specifically want burned-in copy for one language. For "starter"/"trial" use scenes[] (2-4 scenes, one video). For "launch"/"story" use hook_scenes[]/howto_scenes[]/brand_scenes[] (2-4 scenes each, one set per video role) — omit any of these to fall back to a generic template for that video. For "story" additionally use story_scenes[] (8-12 scenes) for the brand short — think in classic beats: hook, development, climax, resolution into the endcard. The server always appends a standard anti-distortion guard to every scene prompt server-side (keeps the product/printed text exactly as in the reference photo, no warping) — do not add your own "no distortion" wording, just describe the shot. Prefer image_urls over images_base64 when the photos are already hosted somewhere — base64 request bodies are capped at 8MB total (~1MB/photo) and get rejected past that. "creator" (200 credits, 2026-09-25) = a realistic on-screen presenter holds the product and speaks YOUR script with lip-sync (~12s, up to 15s): pass persona (who appears), setting (where), language, script (what they say — hook first, then proof), optional gender (voice) and direction (gestures/beats). scenes/hook_text/bgm are ignored for creator. Returns a job_id — poll it with check_campaign.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"product_name": "<product_name>"
},
"name": "create_campaign"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| gender | No | "creator" only — voice gender (default f). | |
| scenes | No | "starter"/"trial" only — 2-4 distinct scenes cut together for the single video (no looping/padding). Omit to fall back to a generic 2-scene hero+detail template. | |
| script | No | "creator" only — the spoken line, about 12 seconds (ja/zh ≤90 chars, ko ≤120, en/ar/hi ≤200, others ≤260). | |
| package | No | Package tier — see tool description for what each builds and costs. | starter |
| persona | No | "creator" only — who appears on screen: age, look, outfit, mood. | |
| setting | No | "creator" only — where it is filmed: place, light, camera. | |
| bgm_mood | No | Background music mood, applied to every video in the campaign. Omit for a deterministic per-job default. | |
| language | No | "creator" only — spoken language of the script. | |
| direction | No | "creator" only — optional gestures, camera moves and beats. | |
| hook_text | No | OPTIONAL on-screen hook headline, ≤30 chars. Text overlays are opt-in — OMIT for clean, no-caption output that is reusable in any language/market (the default). Provide only when you deliberately want burned-in text (locks the video to that one language). | |
| image_urls | No | 1-4 publicly fetchable URLs — either direct product photo files (jpg/png), or product detail-page URLs (e.g. a Coupang/Amazon listing) with an og:image/twitter:image meta tag, which the server will fetch the photo from automatically. Preferred over images_base64. | |
| brand_chain | No | "launch"/"story" only. When true, each brand_scenes[] shot after the first is generated from the LAST FRAME of the previous shot instead of the original product photo — use this when your scenes describe a continuous transformation (e.g. a hand finishing a drawing, then holding the finished result) that must stay visually consistent across shots. Costs the same credits as a normal launch/story campaign — no extra charge. Omit (default false) for independent shots, each anchored to the original product photo. | |
| description | No | Short product description | |
| hook_scenes | No | "launch"/"story" only — 2-4 scenes for the hook video. Omit to fall back to a generic hero+detail template. | |
| brand_scenes | No | "launch"/"story" only — 2-4 scenes for the brand-mood video. Omit to fall back to a generic atmospheric-lifestyle template. | |
| endcard_text | No | OPTIONAL text on the closing brand card, ≤30 chars. Omit (default) for a clean logo-only endcard with no copy — globally reusable. Provide only to burn in a caption for one specific language. | |
| howto_scenes | No | "launch"/"story" only — 2-4 scenes for the how-to/demo video. Omit to fall back to a generic hands-on-demo template. | |
| product_name | Yes | Product name | |
| story_scenes | No | "story" only — 8-12 scenes for the 60-90s cinematic brand short (hook → development → climax → resolution). Omit to fall back to a generic dome-style 8-scene template. | |
| images_base64 | No | 1-4 base64-encoded product photos, alternative to image_urls. Total request body capped at 8MB — use image_urls for larger photos. | |
| accept_text_risk | No | Set true ONLY after the user explicitly agrees to proceed despite a source_text_risk rejection (the uploaded image contains heavy printed marketing copy, which AI video generation will garble; garbled text is then not refund-eligible). On a 422 source_text_risk error, explain the risk to the user and ask before retrying with this flag. |