## Basic tool info Model name: pruna/p-video Model description: Generate videos from text prompts or images using P-Video AI. Supports various resolutions and customization options. Model cover: https://cdn.wiro.ai/uploads/models/pruna-p-video-cover.mp4 Model categories: - tool - use-agent - quick-showcase - partner - pruna - fast-inference - text-to-video - image-to-video - nogpu-pipeline Run Task Endpoint (POST): https://api.wiro.ai/v1/Run/pruna/p-video Get Task Detail Endpoint (POST): https://api.wiro.ai/v1/Task/Detail ## Model Inputs: - name: prompt label: Prompt help: type: textarea default: A snowboarder wearing a yellow 'INSTRUCTOR' vest over an orange jacket, tan pants, a helmet, and reflective orange goggles glides smoothly down a bright, snow-covered mountain slope towards the left. In the background, a ski lift system with metal towers, moving chairs, and enclosed gondolas operates under a clear, vibrant blue sky. To the right, another snowboarder is visible further back on the slope. Execute a dynamic, smooth tracking shot following the instructor as they carve through the snow. The lighting is bright and natural daylight, casting crisp shadows on the textured white snow. Action sports photography style, photorealistic, with a crisp and energetic atmosphere. - name: inputImage label: Input Image help: type: combinefileinput default: pruna-p-video-input-1.jpg - name: ratio label: Ratio help: If input image is provided this will not take effect type: select default: 16:9 options: - value: "1:1" label: 1:1 - value: "3:2" label: 3:2 - value: "2:3" label: 2:3 - value: "4:3" label: 4:3 - value: "3:4" label: 3:4 - value: "16:9" label: 16:9 - value: "9:16" label: 9:16 - name: duration label: Duration help: Required. Video length (1-10s). Ignored when audio is provided type: number default: 5 - name: resolution label: Resolution help: Required. type: select default: 720p options: - value: "720p" label: 720p - value: "1080p" label: 1080p - name: fps label: Fps help: type: select default: 24 options: - value: "24" label: 24 - value: "48" label: 48 - name: inputAudio label: Input Audio help: Optional: Audio (flac, mp3, wav) to condition video type: combinefileinput default: - name: seed label: Seed help: Random seed. Leave zero to randomize the seed type: text default: 0 - name: saveAudio label: Save Audio help: Save the video with audio. This does not effect if audio file is provided. type: select default: false options: - value: "true" label: True - value: "false" label: False - name: draft label: Draft Mode help: If set to true generates a lower-quality preview type: select default: false options: - value: "true" label: True - value: "false" label: False - name: promptUpsampling label: Prompt Upsampling help: Automatically enhance your prompt type: select default: true options: - value: "true" label: True - value: "false" label: False ## Model Parameter Inspires: - prompt: An ancient, majestic stag with enormous, moss-covered antlers that pulse faintly with ethereal green magic. It is grazing peacefully on the forest floor, then suddenly lifts its head to look directly into the lens, its ears twitching gently in the breeze. They are deep within an ancient redwood forest surrounded by floating bioluminescent spores and thick morning fog. Execute a slow camera push-in, starting from a wide shot of the forest and ending in a medium close-up of the stag\'s face. The lighting features soft, dappled golden hour sunlight piercing through the dense canopy to create glowing god rays in the mist. National Geographic documentary style mixed with high-fantasy aesthetics, photorealistic, shallow depth of field. - inputImage: - prompt: An older, charismatic jazz saxophonist wearing a sharp 1920s pinstripe suit and a tilted fedora, with glistening beads of sweat on his forehead. He is passionately playing a polished brass saxophone, his eyes closed in deep concentration as he sways slightly to the rhythm. The scene takes place on a small wooden stage in a crowded, smoky underground jazz club lined with heavy red velvet curtains. Execute a slow, smooth camera pan from left to right, subtly orbiting the musician to reveal the blurred, clapping audience in the background. The lighting is low-key and moody, with a single, hazy amber spotlight cutting through the thick room smoke. Vintage cinematic film style, distinct film grain, muted warm color palette, nostalgic aesthetic. - inputImage: - prompt: A focused female architect in her early thirties, wearing a crisp white button-down shirt and tortoiseshell glasses. She is carefully drafting precise lines on a large, sprawling blueprint using a metal ruler and a mechanical pencil, then gently blowing away a speck of eraser dust. The scene takes place in a modern, minimalist architecture studio featuring large floor-to-ceiling windows, minimalist wooden desks, and scattered rolls of drafting paper. Execute a slow, perfectly steady slider shot moving horizontally from right to left across the drafting table, keeping her face and the blueprint in sharp focus. The lighting consists of soft, diffused natural daylight pouring in from an overcast sky outside, creating smooth, even shadows across the desk. Corporate documentary style, crisp and clean aesthetic, photorealistic, 35mm lens, shallow depth of field. - inputImage: - prompt: A sleek, dark sedan driving smoothly across the frame from right to left in the foreground. In the background, yellow taxis and other cars drive towards the camera with their headlights shining. The scene is set on a busy city street at dusk, featuring modern high-rise buildings, glowing neon signs, warm street lamps, and a subway entrance. Execute a slow, steady camera pan tracking the dark sedan. The lighting is moody and atmospheric twilight, with warm glowing street lamps and bright neon signs contrasting against the deep shadows of the buildings. Cinematic, moody urban aesthetic, photorealistic. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/pruna-p-video-input-2.jpg - prompt: A snowboarder wearing a yellow 'INSTRUCTOR' vest over an orange jacket, tan pants, a helmet, and reflective orange goggles glides smoothly down a bright, snow-covered mountain slope towards the left. In the background, a ski lift system with metal towers, moving chairs, and enclosed gondolas operates under a clear, vibrant blue sky. To the right, another snowboarder is visible further back on the slope. Execute a dynamic, smooth tracking shot following the instructor as they carve through the snow. The lighting is bright and natural daylight, casting crisp shadows on the textured white snow. Action sports photography style, photorealistic, with a crisp and energetic atmosphere. - inputImage: https://cdn.wiro.ai/uploads/sampleinputs/pruna-p-video-input-1.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/p-video" -H "Content-Type: multipart/form-data" -H "x-api-key: ${YOUR_API_KEY}" -H "x-nonce: ${NONCE}" -H "x-signature: ${SIGNATURE}" -d '{ "prompt": "A snowboarder wearing a yellow 'INSTRUCTOR' vest over an orange jacket, tan pants, a helmet, and reflective orange goggles glides smoothly down a bright, snow-covered mountain slope towards the left. In the background, a ski lift system with metal towers, moving chairs, and enclosed gondolas operates under a clear, vibrant blue sky. To the right, another snowboarder is visible further back on the slope. Execute a dynamic, smooth tracking shot following the instructor as they carve through the snow. The lighting is bright and natural daylight, casting crisp shadows on the textured white snow. Action sports photography style, photorealistic, with a crisp and energetic atmosphere.", "inputImage": "pruna-p-video-input-1.jpg", "ratio": "16:9", "duration": 5, "resolution": "720p", "fps": "24", "inputAudio": "", "seed": "0", "saveAudio": "false", "draft": "false", "promptUpsampling": "true", "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.