## Basic tool info Model name: pruna/p-video-2-pro Model description: Generate 5–15 second videos from a prompt or first and last frame images. Choose Speed or Quality, and export 480p or 768p video at 24 fps with synced audio. Model cover: https://cdn.wiro.ai/uploads/models/pruna-p-video-2-pro-cover.mp4 Model categories: - tool - use-agent - quick-showcase - partner - pruna - nogpu-pipeline - text-to-video - image-to-video Run Task Endpoint (POST): https://api.wiro.ai/v1/Run/pruna/p-video-2-pro Get Task Detail Endpoint (POST): https://api.wiro.ai/v1/Task/Detail ## Model Inputs: - name: inputImage label: First Frame Image help: Optional: First frame for image-to-video. type: combinefileinput default: p-video-2-pro-sampleinput-1.jpeg - name: prompt label: Prompt help: Required: Describe the video to generate, or the motion to apply to the input image if provided type: textarea default: The wind rises and the scarlet gown billows and ripples across the frame, her hair lifts and settles, she turns her head slowly toward the sea and takes one small step forward, camera pushes in gently while drifting slightly upward, golden backlight glowing through the silk, waves rolling and breaking far below, smooth continuous motion, no morphing, ambient wind and soft distant surf - name: duration label: Duration help: Required: Length of the generated video type: select default: 5 options: - value: "5" label: 5 seconds - value: "10" label: 10 seconds - value: "15" label: 15 seconds - name: resolution label: Resolution help: Required: Output resolution. The video is always 24 fps and includes generated audio type: select default: 768p options: - value: "480p" label: 480p - value: "768p" label: 768p - name: mode label: Mode help: Required: Generation recipe. Speed is faster and cheaper, quality gives better results type: select default: quality options: - value: "speed" label: Speed - value: "quality" label: Quality - name: aspectRatio label: Aspect Ratio help: Required for text to video. Ignored when a reference image is provided, the image determines the canvas type: select default: 16:9 options: - value: "16:9" label: 16:9 - value: "9:16" label: 9:16 - value: "4:3" label: 4:3 - value: "3:4" label: 3:4 - value: "3:2" label: 3:2 - value: "2:3" label: 2:3 - value: "1:1" label: 1:1 - name: inputImageLast label: Last Frame Image help: Optional: Reference image for the last frame of the video type: combinefileinput default: - name: promptUpsampler label: Prompt Upsampler help: Optional. Expand the prompt before generation. Independent of the selected mode type: select default: off options: - value: "off" label: Off - value: "turbo" label: Turbo - value: "max" label: Max - name: seed label: Seed help: Optional. Random seed. Set for reproducible generation type: text default: 0 ## Model Parameter Inspires: - prompt: The wind rises and the scarlet gown billows and ripples across the frame, her hair lifts and settles, she turns her head slowly toward the sea and takes one small step forward, camera pushes in gently while drifting slightly upward, golden backlight glowing through the silk, waves rolling and breaking far below, smooth continuous motion, no morphing, ambient wind and soft distant surf - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/p-video-2-pro-sampleinput-1.jpeg - prompt: Milk pours in a steady white ribbon into the espresso and a rosetta pattern forms across the crema, steam curling upward, the pitcher lifting away at the end, camera easing closer to the cup rim while orbiting a few degrees to the right, window light shifting across the porcelain, realistic liquid motion, ambient cafe murmur and the faint hiss of a steam wand - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/p-video-2-pro-sampleinput-2.jpeg - prompt: He finishes the air, grabs the board rail, rotates and drops back into the bowl, wheels touching down with a sharp clack and rolling away across the concrete, dust kicking up behind him, camera tracks him down the transition and tilts to follow, late sun flaring briefly across the lens, handheld documentary energy, ambient wheel rumble echoing in the bowl - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/p-video-2-pro-sampleinput-3.jpeg - prompt: The waterfall thunders down in continuous sheets, mist blows across the ledge and beads on her jacket as she lifts her hood and looks up toward the crest, camera rises slowly and pushes in slightly, spray catching the diffuse light, moss trembling in the wind, realistic continuous motion, ambient roar of falling water - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/p-video-2-pro-sampleinput-4.jpeg ## 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}" | awk '{print $NF}')"; ``` ## Run Command - Make HTTP Post Request ```bash curl -X POST "https://api.wiro.ai/v1/Run/pruna/p-video-2-pro" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "inputImage": "p-video-2-pro-sampleinput-1.jpeg", "prompt": "The wind rises and the scarlet gown billows and ripples across the frame, her hair lifts and settles, she turns her head slowly toward the sea and takes one small step forward, camera pushes in gently while drifting slightly upward, golden backlight glowing through the silk, waves rolling and breaking far below, smooth continuous motion, no morphing, ambient wind and soft distant surf", "duration": "5", "resolution": "768p", "mode": "quality", "aspectRatio": "16:9", "inputImageLast": "", "promptUpsampler": "off", "seed": "0", "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.