## Basic tool info Model name: pruna/p-video-2 Model description: Generate short videos from text, a start image, or an audio track. Export 720p or 1080p MP4 with 24 or 48 fps and optional last-frame control. Model cover: https://cdn.wiro.ai/uploads/models/pruna-p-video-2-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 Get Task Detail Endpoint (POST): https://api.wiro.ai/v1/Task/Detail ## Model Inputs: - name: inputImage label: Input Image help: Optional: First frame for image-to-video. type: combinefileinput default: pruna-p-video-2-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 silk dress and her hair lift and ripple in a steady breeze as she slowly turns her head toward the camera and lets a faint smile form, camera pushes in gently and drifts a few degrees to the left, warm golden light flickering across the fabric, smooth continuous motion, no cuts, no morphing - name: duration label: Duration help: Required: Length of the generated video. An input audio longer than this is trimmed to this length type: select default: 5 options: - value: "5" label: 5 seconds - value: "10" label: 10 seconds - value: "15" label: 15 seconds - value: "20" label: 20 seconds - name: resolution label: Resolution help: Required: Output resolution type: select default: 720p options: - value: "720p" label: 720p - value: "1080p" label: 1080p - name: aspectRatio label: Aspect Ratio help: Required for text to video. Ignored when an input image is provided 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: lastFrameImage label: Last Frame Image help: Optional: Reference image for the last frame of the video type: combinefileinput default: - name: inputAudio label: Input Audio help: Optional: Audio to condition the generation. Audio longer than the selected duration is trimmed to it, shorter audio produces a shorter video type: combinefileinput default: - name: fps label: FPS help: Optional: Frames per second of the generated video type: select default: 24 options: - value: "24" label: 24 - value: "48" label: 48 - name: draft label: Draft help: Optional. Draft mode: faster, lower quality preview instead of full quality type: select default: false options: - value: "true" label: True - value: "false" label: False - name: promptUpsampling label: Prompt Upsampling help: Optional. Enhance the prompt before generation type: select default: true options: - value: "true" label: True - value: "false" label: False - name: saveAudio label: Save Audio help: Optional. Save the video with audio type: select default: true options: - value: "true" label: True - value: "false" label: False - name: disableSafetyFilter label: Disable Safety Filter help: Optional. Disable the safety filter for prompts and input images type: select default: true options: - value: "true" label: True - value: "false" label: False - name: seed label: Seed help: Optional. Random seed. Set for reproducible generation type: text default: 0 ## Model Parameter Inspires: - prompt: The silk dress and her hair lift and ripple in a steady breeze as she slowly turns her head toward the camera and lets a faint smile form, camera pushes in gently and drifts a few degrees to the left, warm golden light flickering across the fabric, smooth continuous motion, no cuts, no morphing - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/pruna-p-video-2-sampleinput-1.jpeg - prompt: The camera slowly orbits around the bottle while a thin curl of mist drifts across the slate and one water droplet slides down the glass, reflections and gold highlights shifting as the angle changes, everything else perfectly still, smooth continuous motion, loop-friendly, no morphing - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/pruna-p-video-2-sampleinput-2.jpeg - prompt: Steam rises and curls upward from the broth as chopsticks lift a tangle of noodles into frame, broth dripping back into the bowl, camera drifts slowly downward and closer to the surface, warm light glinting on the egg yolk, smooth continuous motion, no cuts - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/pruna-p-video-2-sampleinput-3.jpeg - prompt: The climber reaches up with one hand and settles into a higher hold, a small puff of chalk dust drifting off the rock as the rope sways slowly beneath, camera pulls back and tilts down to reveal the drop below, harsh sunlight steady on the granite, smooth continuous motion, no cuts, no morphing - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/pruna-p-video-2-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}")"; ``` ## Run Command - Make HTTP Post Request ```bash curl -X POST "https://api.wiro.ai/v1/Run/pruna/p-video-2" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "inputImage": "pruna-p-video-2-sampleinput-1.jpeg", "prompt": "The silk dress and her hair lift and ripple in a steady breeze as she slowly turns her head toward the camera and lets a faint smile form, camera pushes in gently and drifts a few degrees to the left, warm golden light flickering across the fabric, smooth continuous motion, no cuts, no morphing", "duration": "5", "resolution": "720p", "aspectRatio": "16:9", "lastFrameImage": "", "inputAudio": "", "fps": "24", "draft": "false", "promptUpsampling": "true", "saveAudio": "true", "disableSafetyFilter": "true", "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.