## Basic tool info Model name: pruna/wan-i2v Model description: Pruna's WAN I2V animates one still image into a short MP4 video with prompt-driven motion. Pick 480p or 720p, plus optional last-frame control. Model cover: https://cdn.wiro.ai/uploads/models/pruna-wan-i2v-cover.mp4 Model categories: - tool - use-agent - partner - pruna - fast-inference - image-to-video - nogpu-pipeline Run Task Endpoint (POST): https://api.wiro.ai/v1/Run/pruna/wan-i2v Get Task Detail Endpoint (POST): https://api.wiro.ai/v1/Task/Detail ## Model Inputs: - name: inputImage label: Input Image help: Required: Source image to animate (jpg, jpeg, png, webp). Output aspect ratio matches the input image type: combinefileinput default: pruna-wan-i2v-input-4.jpg - name: prompt label: Prompt help: Required: Description of the desired animation, motion and camera movement type: textarea default: Cinematic, low-angle tracking shot of a vibrant neon green sports car. The camera smoothly glides backwards along the side profile, keeping the intricately designed black rear wheel in sharp focus. The wheel begins to slowly rotate, gripping the textured asphalt. Crisp, dynamic reflections of the surrounding environment and golden sunlight warp and slide across the highly polished green bodywork. In the out-of-focus background, the soft bokeh of trees sways gently in a light breeze, and the blurred figure shifts their weight slightly. High-end automotive commercial aesthetic, photorealistic, smooth and steady motion. - name: resolution label: Resolution help: Required. 480p or 720p. Each video is ~5s type: select default: 480p options: - value: "480p" label: 480p - value: "720p" label: 720p - name: inputImageLast label: Last Image help: Optional ending image for smoother transitions (jpg, jpeg, png, webp) type: combinefileinput default: - name: interpolateOutput label: Interpolate Output help: Enable frame interpolation for smoother motion (output is upsampled to 30 fps) type: select default: false options: - value: "true" label: True - value: "false" label: False - name: goFast label: Go Fast help: Enable fast processing mode. Disable for higher quality at the cost of latency type: select default: true options: - value: "true" label: True - value: "false" label: False - name: sampleShift label: Sample Shift help: Sample shift factor between 1.0 and 20.0. Higher values can produce more motion type: float default: 12 - name: seed label: Seed help: Random seed for reproducibility. Leave zero to randomize the seed type: number default: 0 - name: disableSafetyChecker label: Disable Safety Checker help: When true, skip the safety checker on generated content type: select default: false options: - value: "true" label: True - value: "false" label: False ## Model Parameter Inspires: - prompt: Cinematic, low-angle tracking shot of a vibrant neon green sports car. The camera smoothly glides backwards along the side profile, keeping the intricately designed black rear wheel in sharp focus. The wheel begins to slowly rotate, gripping the textured asphalt. Crisp, dynamic reflections of the surrounding environment and golden sunlight warp and slide across the highly polished green bodywork. In the out-of-focus background, the soft bokeh of trees sways gently in a light breeze, and the blurred figure shifts their weight slightly. High-end automotive commercial aesthetic, photorealistic, smooth and steady motion. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/pruna-wan-i2v-input-4.jpg - prompt: High-angle drone shot gliding slowly forward over the historic Porto hillside. Cars move smoothly along the winding asphalt road, with a few vehicles disappearing into the tunnel while others drive past the crosswalk. Pedestrians are seen walking up and down the steep stone staircases and along the sidewalks. The warm, golden hour sunlight casts long, soft shadows across the terracotta rooftops and white building facades, creating a hazy, cinematic atmosphere. A gentle breeze subtly sways the green ivy covering the stone walls and the leaves of the scattered trees. In the distance, a few seagulls fly lazily across the sky above the large palace on the hill. The movement is fluid and realistic, capturing the vibrant life of the city. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/pruna-wan-i2v-input-1.jpg - prompt: Close-up, highly detailed shot of a vibrant yellow bird with black and white striped wings perched on a curved black wire against a bright, overcast white background. The bird exhibits quick, hyper-realistic micro-movements, abruptly tilting its head to look around and blinking its dark eye. A gentle breeze subtly ruffles the fine yellow feathers on its chest and back. The black wire sways and bounces very gently as the bird shifts its weight. Photorealistic nature documentary style, sharp focus, smooth motion. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/pruna-wan-i2v-input-2.jpg - prompt: Cinematic street-level shot. The rider on the black motorcycle drives smoothly and realistically from right to left across the street in the foreground. The leaves on the two round, green trees rustle gently in a light, natural breeze. In the bright blue sky above the historic, weathered green building, fluffy white clouds slowly drift across the frame. On the far left, the pedestrian subtly moves toward the shop entrance. The bright sunlight casts sharp, consistent shadows. Photorealistic, steady camera, natural everyday city motion. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/pruna-wan-i2v-input-3.jpg ## 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/pruna/wan-i2v" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "inputImage": "pruna-wan-i2v-input-4.jpg", "prompt": "Cinematic, low-angle tracking shot of a vibrant neon green sports car. The camera smoothly glides backwards along the side profile, keeping the intricately designed black rear wheel in sharp focus. The wheel begins to slowly rotate, gripping the textured asphalt. Crisp, dynamic reflections of the surrounding environment and golden sunlight warp and slide across the highly polished green bodywork. In the out-of-focus background, the soft bokeh of trees sways gently in a light breeze, and the blurred figure shifts their weight slightly. High-end automotive commercial aesthetic, photorealistic, smooth and steady motion.", "resolution": "480p", "inputImageLast": "", "interpolateOutput": "false", "goFast": "true", "sampleShift": "12", "seed": 0, "disableSafetyChecker": "false", "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.