## Basic tool info Model name: wiro/Emotional Connection Effect Model description: Cinematic emotional and intimate short films from a single portrait photo. 35 scenarios across cozy, romantic and dramatic moments. Model cover: https://cdn.wiro.ai/uploads/models/wiro-emotional-connection-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/emotional-connection-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: cozy+moment-firefly+jar+release options: - value: "cozy+moment-firefly+jar+release" label: Firefly Jar Release Cozy Magical Realism cover: seffect/cozy%2Bmoment-firefly%2Bjar%2Brelease.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "shadow+dance-starlight+self+duet" label: Starlight Shadow Self-Duet Dance cover: seffect/shadow%2Bdance-starlight%2Bself%2Bduet.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "ai+hug-kitten+swarm+heartwarming" label: Heartwarming Kitten Swarm Special Effect cover: seffect/ai%2Bhug-kitten%2Bswarm%2Bheartwarming.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "cozy+moment-tired+peace+cluttered+room" label: Finding Peace in a Cluttered Room cover: seffect/cozy%2Bmoment-tired%2Bpeace%2Bcluttered%2Broom.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "nature+vlog-spring+rapeseed+field" label: Spring Rapeseed Flower Field Vlog cover: seffect/nature%2Bvlog-spring%2Brapeseed%2Bfield.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "nature+vlog-cherry+blossom+spring+city" label: Cherry Blossom Bloom Spring City Poetic cover: seffect/nature%2Bvlog-cherry%2Bblossom%2Bspring%2Bcity.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "craft+macro-watchmaker+pocket+watch+orbit" label: Watchmaker Pocket-Watch 360 Orbit Craft cover: seffect/craft%2Bmacro-watchmaker%2Bpocket%2Bwatch%2Borbit.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "cozy+moment-rain+window+slow+push+in" label: Rain-Streaked Window Contemplative Slow Push-In cover: seffect/cozy%2Bmoment-rain%2Bwindow%2Bslow%2Bpush%2Bin.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "romantic+moment-forest+wedding+tyndall+light" label: Minimalist Forest Wedding Tyndall Light Couple cover: seffect/romantic%2Bmoment-forest%2Bwedding%2Btyndall%2Blight.mp4 inputImageCount: 2 inputImageNote: Upload 1 or 2 human portraits — [Image 1] (required) and [Image 2] (optional) are the two wedding partners. If only 1 photo is uploaded, the model generates a fictional partner with a visible face. - value: "ai+hug-hospital+corridor+father+emotional" label: Hospital Corridor Father Emotional Scene cover: seffect/ai%2Bhug-hospital%2Bcorridor%2Bfather%2Bemotional.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "fantasy+creature-baby+dragon+potter+volcanic+cave" label: Human Potter and Baby Dragon Volcanic Cave Bond cover: seffect/fantasy%2Bcreature-baby%2Bdragon%2Bpotter%2Bvolcanic%2Bcave.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "scifi+exploration-robot+bioluminescent+garden" label: Lone Exploration Robot Discovers Bioluminescent Garden cover: seffect/scifi%2Bexploration-robot%2Bbioluminescent%2Bgarden.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "fantasy+creature-crystal+tiny+dragon+palm" label: Fist-Sized Semi-Transparent Crystal Tiny Dragon in Palm cover: seffect/fantasy%2Bcreature-crystal%2Btiny%2Bdragon%2Bpalm.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "couple+intimacy-cuddling+bed+hotel+room" label: Couple Cuddling Modern Hotel Room Tender cover: seffect/couple%2Bintimacy-cuddling%2Bbed%2Bhotel%2Broom.mp4 inputImageCount: 2 inputImageNote: Upload 1 or 2 human portraits — [Image 1] (required) and [Image 2] (optional) are the two partners. If only 1 photo is uploaded, the model generates a fictional partner with a visible face. - value: "travel+moment-peaceful+lofi+train+ride+sunset" label: Peaceful Lofi Train Ride Hand-Painted Sunset Anime cover: seffect/travel%2Bmoment-peaceful%2Blofi%2Btrain%2Bride%2Bsunset.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "wildlife+bond-underwater+dolphin+rising+surface" label: Underwater Dolphin Bond Rising to Surface cover: seffect/wildlife%2Bbond-underwater%2Bdolphin%2Brising%2Bsurface.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "ai+hug-afterwork+homecoming+embrace" label: After-Work Homecoming Warm Doorway Embrace cover: seffect/ai%2Bhug-afterwork%2Bhomecoming%2Bembrace.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "pet+care-salon+haircut+cozy" label: Pet Salon Haircut Cozy Macro cover: seffect/pet%2Bcare-salon%2Bhaircut%2Bcozy.mp4 inputImageCount: 2 inputImageNote: Upload 1 human portrait + 1 pet portrait — [Image 1] is the human pet-stylist, [Image 2] is the pet being groomed (any species: cat, dog, rabbit, bird, etc.). The scene adapts to the uploaded animal. - value: "nature+vlog-rural+rainy+barn+walk+cozy" label: Rural Rainy Farm Walk Cozy Pastoral cover: seffect/nature%2Bvlog-rural%2Brainy%2Bbarn%2Bwalk%2Bcozy.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "mirror+catharsis-reflection+release" label: Mirror Catharsis Reflection Release Emotional Scene cover: seffect/mirror%2Bcatharsis-reflection%2Brelease.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "travel+moment-open+car+window+wind+cherry+blossom+drive" label: Open Car Window Wind Cherry Blossom Spring Drive cover: seffect/travel%2Bmoment-open%2Bcar%2Bwindow%2Bwind%2Bcherry%2Bblossom%2Bdrive.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "couple+intimacy-acoustic+serenade+bedroom+tear" label: Acoustic Bedroom Serenade Emotional Tear Reaction cover: seffect/couple%2Bintimacy-acoustic%2Bserenade%2Bbedroom%2Btear.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portraits (the singer with the acoustic guitar and the listener receiving the song). - value: "cinematic+portrait-modest+tear+rembrandt" label: Modest Black-White Rembrandt Portrait Tear cover: seffect/cinematic%2Bportrait-modest%2Btear%2Brembrandt.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "romantic+moment-classroom+first+love+eye+contact" label: Classroom First-Love Eye-Contact Awakening cover: seffect/romantic%2Bmoment-classroom%2Bfirst%2Blove%2Beye%2Bcontact.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portraits (two young-adult college students in a quiet classroom). - value: "couple+intimacy-cyberpunk+holo+blossom+romance" label: Cyberpunk Holo-Blossom School Anniversary Reunion cover: seffect/couple%2Bintimacy-cyberpunk%2Bholo%2Bblossom%2Bromance.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portraits (lead and companion). - value: "ancient+romance-heart+gu+poison+king" label: Heart Gu Poison King Ancient Romance Reveal cover: seffect/ancient%2Bromance-heart%2Bgu%2Bpoison%2Bking.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portraits (cold-faced male lead and charming female gu-doctor lead). - value: "ancient+romance-junzhu+wedding+veil+reveal" label: Ancient Junzhu Wedding Veil First-Look Reveal cover: seffect/ancient%2Bromance-junzhu%2Bwedding%2Bveil%2Breveal.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portraits (princess bride and stunning groom). - value: "couple+intimacy-snowy+street+ring+look" label: Snowy Street Low-Angle Ring Look Intimate Couple cover: seffect/couple%2Bintimacy-snowy%2Bstreet%2Bring%2Blook.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo (lead character looking down toward partner-POV camera). - value: "couple+intimacy-painterly+kiss+impressionist" label: Impressionist Painterly Dreamlike Couple Kiss cover: seffect/couple%2Bintimacy-painterly%2Bkiss%2Bimpressionist.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portraits (lead and partner). - value: "couple+intimacy-past+present+rooftop+montage" label: Past-Present Dual-Timeline Rooftop Couple Montage cover: seffect/couple%2Bintimacy-past%2Bpresent%2Brooftop%2Bmontage.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portraits (lead and partner for warm-past and cold-present timeline). - value: "couple+intimacy-red+convertible+night+drive" label: Red Convertible Cool Couple Night Drive cover: seffect/couple%2Bintimacy-red%2Bconvertible%2Bnight%2Bdrive.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portraits (driver and passenger couple). - value: "minidrama+reveal-rainy+breakup+ring+reunion" label: Rainy Night Breakup Ring Reveal Reunion Minidrama cover: seffect/minidrama%2Breveal-rainy%2Bbreakup%2Bring%2Breunion.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portraits (devoted partner and fragile partner). - value: "minidrama+reveal-real+fake+heiress+dna" label: Real vs Fake Heiress DNA Reveal Banquet Minidrama cover: seffect/minidrama%2Breveal-real%2Bfake%2Bheiress%2Bdna.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo (the real heiress). - value: "caregiver+bond-hospital+daydream" label: Hospital Daydream Bond cover: seffect/caregiver%2Bbond-hospital%2Bdaydream.mp4 inputImageCount: 2 inputImageNote: Upload 2 adult human portraits (patient and healthcare professional). - value: "letter+reveal-meadow+memory+echoes" label: Meadow Memory Echo Reverie cover: seffect/letter%2Breveal-meadow%2Bmemory%2Bechoes.mp4 inputImageCount: 1 inputImageNote: Upload 1 adult 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/emotional-connection-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": "cozy+moment-firefly+jar+release", "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.