## Basic tool info Model name: wiro/Product Effect Model description: Cinematic product, food and fashion short videos from one photo. 28 scenarios with motion design, slow-mo physics and stylized lighting. Model cover: https://cdn.wiro.ai/uploads/models/wiro-product-effect-cover.mp4 Model categories: - tool - use-agent - wiroEntertainment - fast-inference - image-to-video - wiro-app - beautykit - partner - nogpu-pipeline Run Task Endpoint (POST): https://api.wiro.ai/v1/Run/wiro/product-effect Get Task Detail Endpoint (POST): https://api.wiro.ai/v1/Task/Detail ## Model Inputs: - name: inputImage label: Input Image help: Required: 1–3 images depending on selected effect — see scenario note type: combinefileinput default: ai-portrait-daily-asian-woman.webp - name: effectType label: Effect Type help: Required type: selectwithcover default: material+morph-luxury+watch+golden+sand options: - value: "material+morph-luxury+watch+golden+sand" label: Luxury Watch Assembly from Golden Sand Particles cover: seffect/material%2Bmorph-luxury%2Bwatch%2Bgolden%2Bsand.mp4 inputImageCount: 1 inputImageNote: Upload 1 product or object photo. - value: "cakeify-salmon+underwater+fantasy" label: Salmon Rose to Underwater Fantasy World Cakeify cover: seffect/cakeify-salmon%2Bunderwater%2Bfantasy.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "material+morph-wedding+disaster+30shot" label: Wedding Disaster Comedy 30-Shot Breakdown cover: seffect/material%2Bmorph-wedding%2Bdisaster%2B30shot.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "material+morph-spider+reaction+tactical" label: Over-the-Top Spider Reaction Tactical Comedy cover: seffect/material%2Bmorph-spider%2Breaction%2Btactical.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "material+morph-food+fight+chaotic+slow+motion" label: Chaotic Food Fight Slow-Motion Splatter cover: seffect/material%2Bmorph-food%2Bfight%2Bchaotic%2Bslow%2Bmotion.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "material+morph-pancake+strawberry+commercial" label: Ultra-Realistic Strawberry Pancake Commercial cover: seffect/material%2Bmorph-pancake%2Bstrawberry%2Bcommercial.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "material+morph-fashion+lookbook+top+down" label: Fashion Lookbook Top-Down Multi-Outfit Change cover: seffect/material%2Bmorph-fashion%2Blookbook%2Btop%2Bdown.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "material+morph-luxury+skincare+commercial+orbit" label: Luxury Skincare Commercial 360-Degree Precision Orbit cover: seffect/material%2Bmorph-luxury%2Bskincare%2Bcommercial%2Borbit.mp4 inputImageCount: 1 inputImageNote: Upload 1 product or object photo. - value: "material+morph-luxury+handbag+multi+angle+showcase" label: Luxury Handbag Multi-Angle Atmospheric Commercial cover: seffect/material%2Bmorph-luxury%2Bhandbag%2Bmulti%2Bangle%2Bshowcase.mp4 inputImageCount: 3 inputImageNote: Upload 3 product reference images of the handbag (body/front view, side profile, and surface-material close-up). - value: "material+morph-motion+design+geometry+build" label: Abstract Geometry Motion Design To Logo Reveal cover: seffect/material%2Bmorph-motion%2Bdesign%2Bgeometry%2Bbuild.mp4 inputImageCount: 1 inputImageNote: Upload 1 logo or brand-asset photo. - value: "material+morph-citrus+soda+zero+gravity+burst" label: Citrus Soda Zero-Gravity Burst Reveal cover: seffect/material%2Bmorph-citrus%2Bsoda%2Bzero%2Bgravity%2Bburst.mp4 inputImageCount: 1 inputImageNote: Upload 1 product or object photo. - value: "material+morph-crate+unfold+futuristic+showroom" label: Luminous Crate Unfolds Into Futuristic EV Showroom cover: seffect/material%2Bmorph-crate%2Bunfold%2Bfuturistic%2Bshowroom.mp4 inputImageCount: 1 inputImageNote: Upload 1 product or object photo. - value: "material+morph-hypercar+holographic+self+assembly" label: White Hypercar Holographic Self-Assembly cover: seffect/material%2Bmorph-hypercar%2Bholographic%2Bself%2Bassembly.mp4 inputImageCount: 1 inputImageNote: Upload 1 product or object photo. - value: "chef+cinematic-sour+fish+soup+prep" label: Hero Chef Sour Fish Soup Cinematic Preparation cover: seffect/chef%2Bcinematic-sour%2Bfish%2Bsoup%2Bprep.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "mukbang+vertical-spicy+hotpot+apartment" label: Spicy Hotpot Mukbang Vertical Apartment UGC cover: seffect/mukbang%2Bvertical-spicy%2Bhotpot%2Bapartment.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "chocolate+absurd-witch+cauldron+surprise+ingredients" label: Witch Cauldron Absurd Surprise-Ingredient Chocolate cover: seffect/chocolate%2Babsurd-witch%2Bcauldron%2Bsurprise%2Bingredients.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "wok+plating-kung+pao+chicken+arc+toss" label: Kung Pao Chicken Wok-Arc Plating Showcase cover: seffect/wok%2Bplating-kung%2Bpao%2Bchicken%2Barc%2Btoss.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "material+morph-vertical+takeoff+supercar" label: Vertical Takeoff Supercar Cyberpunk Commercial cover: seffect/material%2Bmorph-vertical%2Btakeoff%2Bsupercar.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "material+morph-chai+glass+racing+pod+stall" label: Chai Glass Racing Pod Stall Morph cover: seffect/material%2Bmorph-chai%2Bglass%2Bracing%2Bpod%2Bstall.mp4 inputImageCount: 2 inputImageNote: Upload 1 human portrait and 1 product (small chai glass) reference photo. - value: "material+morph-smartphone+shatter+reform" label: Smartphone Shatter Reform Slow-Mo cover: seffect/material%2Bmorph-smartphone%2Bshatter%2Breform.mp4 inputImageCount: 1 inputImageNote: Upload 1 product (smartphone) reference photo. - value: "product+showcase-luxury+perfume+floating+petals" label: Luxury Perfume Commercial With Floating Petals cover: seffect/product%2Bshowcase-luxury%2Bperfume%2Bfloating%2Bpetals.mp4 inputImageCount: 2 inputImageNote: Upload 2 references — [Image 1] is a human portrait of the perfume presenter, [Image 2] is a photo of the luxury perfume bottle. Both references are required. - value: "product+showcase-foldable+smartphone+fast+cuts" label: Iridescent Foldable Smartphone Fast-Cut Ad cover: seffect/product%2Bshowcase-foldable%2Bsmartphone%2Bfast%2Bcuts.mp4 inputImageCount: 1 inputImageNote: Upload 1 photo of a foldable smartphone (unfolded or folded view). - value: "product+showcase-cola+bottle+macro+pour" label: Classic Cola Bottle Macro Pour Commercial cover: seffect/product%2Bshowcase-cola%2Bbottle%2Bmacro%2Bpour.mp4 inputImageCount: 1 inputImageNote: Upload 1 photo of a cola or dark soda bottle (glass bottle preferred for the macro pour shots). - value: "product+showcase-mascara+beauty+close+up" label: Mascara Luxury Beauty Close-Up cover: seffect/product%2Bshowcase-mascara%2Bbeauty%2Bclose%2Bup.mp4 inputImageCount: 2 inputImageNote: Upload 1 human portrait (the beauty model) and 1 mascara tube photo. - value: "lifestyle+commercial-hypercar+pit+lane+motorsport" label: Hypercar Pit Lane Motorsport Documentary cover: seffect/lifestyle%2Bcommercial-hypercar%2Bpit%2Blane%2Bmotorsport.mp4 inputImageCount: 1 inputImageNote: Upload 1 product or object photo. - value: "lifestyle+commercial-rural+healing+farm+to+table" label: Modern Rural Aesthetics Farm-to-Table Healing cover: seffect/lifestyle%2Bcommercial-rural%2Bhealing%2Bfarm%2Bto%2Btable.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "lifestyle+commercial-lab+drink+to+festival" label: Lab Frosted Drink To Festival Jump Commercial cover: seffect/lifestyle%2Bcommercial-lab%2Bdrink%2Bto%2Bfestival.mp4 inputImageCount: 2 inputImageNote: Upload 1 human portrait and 1 product photo. - value: "chef+cinematic-barista+latte+pour" label: Barista Rosetta Pour Close-Up cover: seffect/chef%2Bcinematic-barista%2Blatte%2Bpour.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo (the barista). - name: videoMode label: Video Mode help: Required. Default Standard type: select default: std options: - value: "std" label: Standard - value: "pro" label: Pro - name: ratio label: ratio help: Required. Default 9:16 type: select default: 9:16 options: - value: "9:16" label: 9:16 - value: "16:9" label: 16:9 - value: "1:1" label: 1:1 - name: duration label: Duration help: Required. Default 5s type: select default: 5 options: - value: "5" label: 5s - value: "10" label: 10s - value: "15" label: 15s ## Integration Header Prepare ```bash # Sign up Wiro dashboard and create project export YOUR_API_KEY="{{useSelectedProjectAPIKey}}"; export YOUR_API_SECRET="XXXXXXXXX"; # unix time or any random integer value export NONCE=$(date +%s); # hmac-SHA256 (YOUR_API_SECRET+Nonce) with YOUR_API_KEY export SIGNATURE="$(echo -n "${YOUR_API_SECRET}${NONCE}" | openssl dgst -sha256 -hmac "${YOUR_API_KEY}")"; ``` ## Run Command - Make HTTP Post Request ```bash curl -X POST "https://api.wiro.ai/v1/Run/wiro/product-effect" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "inputImage": "ai-portrait-daily-asian-woman.webp", "effectType": "material+morph-luxury+watch+golden+sand", "videoMode": "std", "ratio": "9:16", "duration": "5", "callbackUrl": "You can provide a callback URL; Wiro will send a POST request to it when the task is completed." }'; ``` ## Run Command - Response ```json { "errors": [], "taskid": "2221", "socketaccesstoken": "eDcCm5yyUfIvMFspTwww49OUfgXkQt", "result": true } ``` ## Get Task Detail - Make HTTP Post Request with Task ID ```bash curl -X POST "https://api.wiro.ai/v1/Task/Detail" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "taskid": "2221" }'; ``` ## Get Task Detail - Make HTTP Post Request with Socket Access Token ```bash curl -X POST "https://api.wiro.ai/v1/Task/Detail" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "tasktoken": "eDcCm5yyUfIvMFspTwww49OUfgXkQt" }'; ``` ## Get Task Detail - Response ```json { "total": "1", "errors": [], "tasklist": [ { "id": "2221", "uuid": "15bce51f-442f-4f44-a71d-13c6374a62bd", "socketaccesstoken": "eDcCm5yyUfIvMFspTwww49OUfgXkQt", "parameters": {}, "debugoutput": "", "debugerror": "", "starttime": "1734513809", "endtime": "1734513813", "elapsedseconds": "6.0000", "status": "task_postprocess_end", "createtime": "1734513807", "canceltime": "0", "assigntime": "1734513807", "accepttime": "1734513807", "preprocessstarttime": "1734513807", "preprocessendtime": "1734513807", "postprocessstarttime": "1734513813", "postprocessendtime": "1734513814", "outputs": [ { "id": "6bc392c93856dfce3a7d1b4261e15af3", "name": "0.png", "contenttype": "image/png", "parentid": "6c1833f39da71e6175bf292b18779baf", "uuid": "15bce51f-442f-4f44-a71d-13c6374a62bd", "size": "202472", "addedtime": "1734513812", "modifiedtime": "1734513812", "accesskey": "dFKlMApaSgMeHKsJyaDeKrefcHahUK", "url": "https://cdn1.wiro.ai/6a6af820-c5050aee-40bd7b83-a2e186c6-7f61f7da-3894e49c-fc0eeb66-9b500fe2/0.png" } ], "size": "202472" } ], "result": true } ``` ## Kill Task - Make HTTP Post Request with Task ID ```bash curl -X POST "https://api.wiro.ai/v1/Task/Kill" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "taskid": "534574" }'; ``` ## Kill Task - Make HTTP Post Request with Socket Access Token ```bash curl -X POST "https://api.wiro.ai/v1/Task/Kill" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "socketaccesstoken": "ZpYote30on42O4jjHXNiKmrWAZqbRE" }'; ``` ## Kill Task - Response ```json { "errors": [], "tasklist": [ { "id": "534574", "uuid": "15bce51f-442f-4f44-a71d-13c6374a62bd", "name": "", "socketaccesstoken": "ZpYote30on42O4jjHXNiKmrWAZqbRE", "parameters": { "inputImage": "https://api.wiro.ai/v1/File/mCmUXgZLG1FNjjjwmbtPFr2LVJA112/inputImage-6060136.png" }, "debugoutput": "", "debugerror": "", "starttime": "1734513809", "endtime": "1734513813", "elapsedseconds": "6.0000", "status": "task_cancel", "cps": "0.000585000000", "totalcost": "0.003510000000", "guestid": null, "projectid": "699", "modelid": "598", "description": "", "basemodelid": "0", "runtype": "model", "modelfolderid": "", "modelfileid": "", "callbackurl": "", "marketplaceid": null, "createtime": "1734513807", "canceltime": "0", "assigntime": "1734513807", "accepttime": "1734513807", "preprocessstarttime": "1734513807", "preprocessendtime": "1734513807", "postprocessstarttime": "1734513813", "postprocessendtime": "1734513814", "pexit": "0", "categories": "["tool","image-to-image","quick-showcase","compare-landscape"]", "outputs": [ { "id": "6bc392c93856dfce3a7d1b4261e15af3", "name": "0.png", "contenttype": "image/png", "parentid": "6c1833f39da71e6175bf292b18779baf", "uuid": "15bce51f-442f-4f44-a71d-13c6374a62bd", "size": "202472", "addedtime": "1734513812", "modifiedtime": "1734513812", "accesskey": "dFKlMApaSgMeHKsJyaDeKrefcHahUK", "foldercount": "0", "filecount": "0", "ispublic": 0, "expiretime": null, "url": "https://cdn1.wiro.ai/6a6af820-c5050aee-40bd7b83-a2e186c6-7f61f7da-3894e49c-fc0eeb66-9b500fe2/0.png" } ], "size": "202472" } ], "result": true } ``` ## Cancel Task - Make HTTP Post Request (For tasks on queue) ```bash curl -X POST "https://api.wiro.ai/v1/Task/Cancel" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "taskid": "634574" }'; ``` ## Cancel Task - Response ```json { "errors": [], "tasklist": [ { "id": "634574", "uuid": "15bce51f-442f-4f44-a71d-13c6374a62bd", "name": "", "socketaccesstoken": "ZpYote30on42O4jjHXNiKmrWAZqbRE", "parameters": { "inputImage": "https://api.wiro.ai/v1/File/mCmUXgZLG1FNjjjwmbtPFr2LVJA112/inputImage-6060136.png" }, "debugoutput": "", "debugerror": "", "starttime": "1734513809", "endtime": "1734513813", "elapsedseconds": "6.0000", "status": "task_cancel", "cps": "0.000585000000", "totalcost": "0.003510000000", "guestid": null, "projectid": "699", "modelid": "598", "description": "", "basemodelid": "0", "runtype": "model", "modelfolderid": "", "modelfileid": "", "callbackurl": "", "marketplaceid": null, "createtime": "1734513807", "canceltime": "0", "assigntime": "1734513807", "accepttime": "1734513807", "preprocessstarttime": "1734513807", "preprocessendtime": "1734513807", "postprocessstarttime": "1734513813", "postprocessendtime": "1734513814", "pexit": "0", "categories": "["tool","image-to-image","quick-showcase","compare-landscape"]", "outputs": [ { "id": "6bc392c93856dfce3a7d1b4261e15af3", "name": "0.png", "contenttype": "image/png", "parentid": "6c1833f39da71e6175bf292b18779baf", "uuid": "15bce51f-442f-4f44-a71d-13c6374a62bd", "size": "202472", "addedtime": "1734513812", "modifiedtime": "1734513812", "accesskey": "dFKlMApaSgMeHKsJyaDeKrefcHahUK", "foldercount": "0", "filecount": "0", "ispublic": 0, "expiretime": null, "url": "https://cdn1.wiro.ai/6a6af820-c5050aee-40bd7b83-a2e186c6-7f61f7da-3894e49c-fc0eeb66-9b500fe2/0.png" } ], "size": "202472" } ], "result": true } ``` ## Task Status Information This section defines the possible task status values returned by the API when polling for task completion. ### Completed Task Statuses (Polling can stop) These indicate that the task has reached a terminal state — either success or failure. Once any of these is received, polling should stop. - task_postprocess_end : Task completed successfully and post-processing is done. - task_cancel : Task was cancelled by the user or system. ### Running Task Statuses (Continue polling) These statuses indicate that the task is still in progress. Polling should continue if one of these is returned. - task_queue : Task is waiting in the queue. - task_accept : Task has been accepted for processing. - task_assign : Task is being assigned to a worker. - task_preprocess_start : Preprocessing is starting. - task_preprocess_end : Preprocessing is complete. - task_start : Task execution has started. - task_output : Output is being generated.