## Basic tool info Model name: wiro/Retro Period Aesthetic Effect Model description: Era-shift cinematic short videos from a single portrait. 33 retro and period-aesthetic scenarios across a century of cinema styles. Model cover: https://cdn.wiro.ai/uploads/models/wiro-retro-period-aesthetic-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/retro-period-aesthetic-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: retro+period-recursive+vhs+loop options: - value: "retro+period-recursive+vhs+loop" label: Recursive VHS Loop First-Person POV Horror cover: seffect/retro%2Bperiod-recursive%2Bvhs%2Bloop.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-1980s+vhs+training+montage" label: 1980s VHS Training Montage Retro cover: seffect/retro%2Bperiod-1980s%2Bvhs%2Btraining%2Bmontage.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-1950s+americana+b+movie" label: 1950s Americana B-Movie Giant Insect Retro cover: seffect/retro%2Bperiod-1950s%2Bamericana%2Bb%2Bmovie.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-1920s+harlem+barbershop" label: 1920s Harlem Barbershop Color-Pop Retro cover: seffect/retro%2Bperiod-1920s%2Bharlem%2Bbarbershop.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-1940s+film+noir+detective" label: 1940s Film Noir Detective Retro cover: seffect/retro%2Bperiod-1940s%2Bfilm%2Bnoir%2Bdetective.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-y2k+2000s+aesthetic" label: Y2K 2000s Aesthetic Retro Digital cover: seffect/retro%2Bperiod-y2k%2B2000s%2Baesthetic.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-1990s+japanese+trendy+drama" label: 1990s Japanese Trendy Drama Salaryman Retro cover: seffect/retro%2Bperiod-1990s%2Bjapanese%2Btrendy%2Bdrama.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-wong+kar+wai+90s+hk" label: Wong Kar-wai Style Rainy Phone Booth 90s HK cover: seffect/retro%2Bperiod-wong%2Bkar%2Bwai%2B90s%2Bhk.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-18th+century+paris+whimsy" label: 18th-Century Paris Whimsical Aristocrat Retro cover: seffect/retro%2Bperiod-18th%2Bcentury%2Bparis%2Bwhimsy.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-western+saloon+escalation" label: Live-Action Western Saloon Escalating Tension cover: seffect/retro%2Bperiod-western%2Bsaloon%2Bescalation.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-hong+kong+neon+pursuit" label: Rainy Neon Hong Kong Alley Pursuit Retro cover: seffect/retro%2Bperiod-hong%2Bkong%2Bneon%2Bpursuit.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-ancient+costume+execution+revenge" label: Ancient Costume Execution Ground Revenge Snow cover: seffect/retro%2Bperiod-ancient%2Bcostume%2Bexecution%2Brevenge.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-1980s+bronx+street+comedy" label: 1980s Bronx Street Zombie Comedy Retro Duo cover: seffect/retro%2Bperiod-1980s%2Bbronx%2Bstreet%2Bcomedy.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portrait photos (BOTH REQUIRED): [Image 1] is the stoop lead; [Image 2] is the best-friend co-lead. Both portraits must be provided — this preset is strict multi-reference with no single-image fallback. - value: "retro+period-80s+hk+zombie+temple+hopping" label: 80s Hong Kong Zombie Movie Dilapidated Temple Hopping Style cover: seffect/retro%2Bperiod-80s%2Bhk%2Bzombie%2Btemple%2Bhopping.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-qipao+fashion+evolution+short" label: Qipao Fashion Evolution Late Qing to 1930s Short Film cover: seffect/retro%2Bperiod-qipao%2Bfashion%2Bevolution%2Bshort.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-vintage+road+trip+cliff+mv" label: Vintage Road-Trip Cliffside Cinematic MV cover: seffect/retro%2Bperiod-vintage%2Broad%2Btrip%2Bcliff%2Bmv.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-pirate+tavern+rowdy+revelry" label: Fantasy Pirate Tavern Rowdy Revelry Atmospheric cover: seffect/retro%2Bperiod-pirate%2Btavern%2Browdy%2Brevelry.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-noir+fantasy+wizard+study" label: Noir Fantasy Wizard Study cover: seffect/retro%2Bperiod-noir%2Bfantasy%2Bwizard%2Bstudy.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "era+shift-caveman+emperor+knight+diner+astronaut+bite" label: Rapid Era-Shift Biting Food Through History cover: seffect/era%2Bshift-caveman%2Bemperor%2Bknight%2Bdiner%2Bastronaut%2Bbite.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "stop+motion-wooden+puppet+samsa+tandoor" label: Wooden Puppet Stop-Motion Samsa Tandoor Baking cover: seffect/stop%2Bmotion-wooden%2Bpuppet%2Bsamsa%2Btandoor.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "camcorder+ugc-late+night+pizza+bedroom" label: Late-Night Pizza Handheld Camcorder UGC cover: seffect/camcorder%2Bugc-late%2Bnight%2Bpizza%2Bbedroom.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-1950s+woody+wagon+roadtrip" label: 1950s Woody Wagon Desert Road Trip Retro POV cover: seffect/retro%2Bperiod-1950s%2Bwoody%2Bwagon%2Broadtrip.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-vintage+news+anchor+broadcast" label: Vintage Retro News Anchor Broadcast cover: seffect/retro%2Bperiod-vintage%2Bnews%2Banchor%2Bbroadcast.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-1980s+vampire+talk+show" label: 1980s Retro Talk-Show Vampire Interview cover: seffect/retro%2Bperiod-1980s%2Bvampire%2Btalk%2Bshow.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "pastel+travelogue-symmetrical+landmark+tour" label: Symmetrical Pastel Landmark Tour cover: seffect/pastel%2Btravelogue-symmetrical%2Blandmark%2Btour.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portraits (lead and travel companion). - value: "arcade+game-arcade+fighter+duel" label: Arcade Fighter Live-Action Duel cover: seffect/arcade%2Bgame-arcade%2Bfighter%2Bduel.mp4 inputImageCount: 2 inputImageNote: Upload 2 human portrait photos (BOTH REQUIRED): [Image 1] is fighter one (flame-aura); [Image 2] is fighter two (chain-ball). Both portraits must be provided — this preset is strict multi-reference with no single-image fallback. - value: "retro+period-90s+hk+stock+market+crash" label: 90s Hong Kong Stock Market Crash Drama Retro cover: seffect/retro%2Bperiod-90s%2Bhk%2Bstock%2Bmarket%2Bcrash.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo (1990s stock-exchange speculator). - value: "retro+period-70s+italian+crime+drama" label: 1970s Italian Crime Drama Detective Retro cover: seffect/retro%2Bperiod-70s%2Bitalian%2Bcrime%2Bdrama.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo (hard-nosed 1970s Italian-inspired detective). - value: "retro+period-1970s+robot+cage+combat" label: 1970s Gritty Half-Human Cyborg Cage Combat Retro Duo cover: seffect/retro%2Bperiod-1970s%2Brobot%2Bcage%2Bcombat.mp4 inputImageCount: 2 inputImageNote: Upload 1 or 2 human portrait photos. [Image 1] becomes the human head of the BLACK HERO CYBORG; [Image 2] becomes the human head of the SILVER OPPONENT CYBORG. If only [Image 1] is provided, a fictional silver-cyborg opponent is generated. - value: "retro+period-kpop+retro+mv+cafe" label: K-pop Retro MV Warm Café Aesthetic cover: seffect/retro%2Bperiod-kpop%2Bretro%2Bmv%2Bcafe.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-victorian+london+street+wind+lift" label: Victorian 19th-Century London Street Wind-Lift Moment cover: seffect/retro%2Bperiod-victorian%2Blondon%2Bstreet%2Bwind%2Blift.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-19th+century+london+steam+train" label: 19th Century London Steam Train Skirt Lift cover: seffect/retro%2Bperiod-19th%2Bcentury%2Blondon%2Bsteam%2Btrain.mp4 inputImageCount: 1 inputImageNote: Upload 1 human portrait photo. - value: "retro+period-90s+family+dinner+intro" label: 90s TV Family Dinner Introduction cover: seffect/retro%2Bperiod-90s%2Bfamily%2Bdinner%2Bintro.mp4 inputImageCount: 2 inputImageNote: Upload 2 adult human portraits (the boyfriend and the girlfriend). - 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 ## Model Parameter Inspires: - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/11.png - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/ai-portrait-daily-asian-woman.webp - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/ai-portrait-daily-white-man.webp - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/ai-portrait-daily-white-woman.webp - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/ai-portrait-professional-black-woman.webp ## 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/retro-period-aesthetic-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": "retro+period-recursive+vhs+loop", "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.