## Basic tool info Model name: wiro/Dance Performance Effect Model description: Stage your portrait as a stylized dance or musical performance video. 25 scenarios across global cultures and stage styles. Model cover: https://cdn.wiro.ai/uploads/models/wiro-dance-performance-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/dance-performance-effect Get Task Detail Endpoint (POST): https://api.wiro.ai/v1/Task/Detail ## Model Inputs: - name: inputImage label: Input Image help: Required: 1–2 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: dance+performance-k+hip+hop+neon+rooftop options: - value: "dance+performance-k+hip+hop+neon+rooftop" label: K-Hip Hop Neon Rooftop Stage Performance cover: seffect/dance%2Bperformance-k%2Bhip%2Bhop%2Bneon%2Brooftop.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-hanfu+traditional+hall" label: Hanfu Traditional Chinese Dance Hall cover: seffect/dance%2Bperformance-hanfu%2Btraditional%2Bhall.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-conductor+orchestra+baton" label: Solo Baton Performance Empty Stage cover: seffect/dance%2Bperformance-conductor%2Borchestra%2Bbaton.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-long+exposure+motion+trail" label: Long Exposure Motion-Trail Dance Studio cover: seffect/dance%2Bperformance-long%2Bexposure%2Bmotion%2Btrail.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-street+circle+phone+cam" label: Street Dance Circle Phone-Cam Hype Crowd cover: seffect/dance%2Bperformance-street%2Bcircle%2Bphone%2Bcam.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-stylized+3d+magician+stage" label: Stylized 3D Animation Magician Stage Performance cover: seffect/dance%2Bperformance-stylized%2B3d%2Bmagician%2Bstage.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-cyberpunk+livestream+mc" label: Cyberpunk Livestream MC Vertical Slow-Roll cover: seffect/dance%2Bperformance-cyberpunk%2Blivestream%2Bmc.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-flamenco+slackline+cliffs" label: Flamenco Dancer and Guitarist on Slackline Between Cliffs cover: seffect/dance%2Bperformance-flamenco%2Bslackline%2Bcliffs.mp4 inputImageCount: 2 inputImageNote: Upload 1 or 2 human portraits — [Image 1] (required) is the flamenco dancer; [Image 2] (optional) is the classical guitarist. If only 1 photo is uploaded, the model generates a fictional guitarist with a visible face. - value: "dance+performance-concert+lead+singer+climax" label: Big-Stage Emotional Silent Performance cover: seffect/dance%2Bperformance-concert%2Blead%2Bsinger%2Bclimax.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-pianist+hall+butterfly+light" label: Cinematic Pianist Concert Hall Butterfly Lighting cover: seffect/dance%2Bperformance-pianist%2Bhall%2Bbutterfly%2Blight.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-street+three+person+urban+square" label: High-Energy Three-Person Street Dance Urban Square cover: seffect/dance%2Bperformance-street%2Bthree%2Bperson%2Burban%2Bsquare.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-tai+chi+sword+mountain+clouds" label: Wuxia Tai Chi Sword Forms Mountain Peak Above Clouds cover: seffect/dance%2Bperformance-tai%2Bchi%2Bsword%2Bmountain%2Bclouds.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-watercolor+ink+sword+performance" label: Watercolor Ink Sword Dance-Performance Aesthetic cover: seffect/dance%2Bperformance-watercolor%2Bink%2Bsword%2Bperformance.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-porcelain+punk+zen+martial" label: Porcelain-Punk Eastern Zen Martial-Arts Dance Two Figures cover: seffect/dance%2Bperformance-porcelain%2Bpunk%2Bzen%2Bmartial.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-barista+rube+goldberg+cafe" label: Barista Rube Goldberg Cafe Chain-Reaction Dance cover: seffect/dance%2Bperformance-barista%2Brube%2Bgoldberg%2Bcafe.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-chinese+opera+traditional" label: Traditional Chinese Opera Stage Performance cover: seffect/dance%2Bperformance-chinese%2Bopera%2Btraditional.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-portrait+beat+sync+dynamic" label: Dynamic Portrait Beat-Synchronized Performance Montage cover: seffect/dance%2Bperformance-portrait%2Bbeat%2Bsync%2Bdynamic.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portraits — [Image 1] and [Image 2] are co-leads in a dynamic beat-synchronized editorial montage (alternating solo portraits and shared two-shots). - value: "dance+performance-kimono+reluctant+mv+annoyed" label: Reluctant Kimono Dance MV cover: seffect/dance%2Bperformance-kimono%2Breluctant%2Bmv%2Bannoyed.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-hanfu+dark+water+golden+sparks" label: Hanfu Dance on Dark Water with Golden Sparks cover: seffect/dance%2Bperformance-hanfu%2Bdark%2Bwater%2Bgolden%2Bsparks.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-laundromat+rave+phone+crowd" label: Laundromat Rave Phone-Cam Crowd cover: seffect/dance%2Bperformance-laundromat%2Brave%2Bphone%2Bcrowd.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-peach+blossom+sword+dance" label: Peach Blossom Sword Dance Peak cover: seffect/dance%2Bperformance-peach%2Bblossom%2Bsword%2Bdance.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-silk+ribbon+apsara+island" label: Silk Ribbon Apsara Floating Island cover: seffect/dance%2Bperformance-silk%2Bribbon%2Bapsara%2Bisland.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-kung+fu+cooking" label: Kung Fu Cooking Performance cover: seffect/dance%2Bperformance-kung%2Bfu%2Bcooking.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "dance+performance-silver+rapper+mv" label: Silver Hair Elder Neon Night Portrait cover: seffect/dance%2Bperformance-silver%2Brapper%2Bmv.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo (senior performer works best). - value: "artist+flow-studio+sunlit+immersed" label: Artist Studio Sunlit Flow-State Painting cover: seffect/artist%2Bflow-studio%2Bsunlit%2Bimmersed.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - 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/dance-performance-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": "dance+performance-k+hip+hop+neon+rooftop", "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.