Ultra-fast video generation by Pruna AI, returned synchronously: a single request blocks for roughly 30-60 seconds and hands back the video URL — no task to create, no polling loop. It covers 720p and 1080p, clips of 1-20 seconds, seven aspect ratios, and three modes: text-to-video, image-to-video and audio-to-video. Draft mode costs a quarter of full quality and renders faster, which is what you want while a prompt is still being worked out. Billing is per second: 720p draft $0.01/s and full $0.04/s, 1080p draft $0.02/s and full $0.08/s.
P-Video does not use /api/v1/video/generations the way grok / veo / kling do. It has its own dedicated endpoint, POST /api/v1/video/p-video, and it answers synchronously: one request blocks for about 30-60 seconds and returns the video URL. There is no task_id and no state to poll, so the create-then-poll code you use for the other video models will not work here.
Set your client timeout to 120 seconds or more — a client left on a short default timeout will hang up on itself before the video is ready.
| Tier | Parâmetros | Price | A 5-second clip |
|---|---|---|---|
| P-Video 720p Draft | resolution 720p · draft true | $0.01/s | $0.05 |
| P-Video 720p Full | resolution 720p · draft false | $0.04/s | $0.20 |
| P-Video 1080p Draft | resolution 1080p · draft true | $0.02/s | $0.10 |
| P-Video 1080p Full | resolution 1080p · draft false | $0.08/s | $0.40 |
All four tiers share one model string, p-video — you pick a tier with the resolution and draft parameters, at any length from 1 to 20 seconds. The bill is seconds x resolution rate x mode, where draft is a quarter of the price.
| Mode | How to trigger it | Watch out for |
|---|---|---|
| Text-to-video | prompt | Both duration and aspect_ratio apply |
| Image-to-video | prompt + image | With image supplied, aspect_ratio is ignored upstream — the ratio follows the reference image |
| Audio-to-video | prompt + audio | With audio supplied, duration is ignored upstream — the clip length follows the audio |
Audio-to-video has a billing wrinkle worth knowing: upstream renders to the length of the audio, but the charge is computed from the duration you sent. Post a 12-second audio track while leaving duration at its default of 5 and you get a 12-second clip billed as 5 seconds; write a number that is too large and you overpay. Set duration to the real length of the audio and the two agree.
POST /api/v1/video/p-video — synchronous: one request returns the result, there is no second call.
# Synchronous endpoint - one request, blocks ~30-60s, returns video URL directly
curl -X POST https://apimodels.app/api/v1/video/p-video \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A robot dancing in neon-lit Tokyo street, cinematic",
"duration": 5,
"resolution": "720p",
"draft": false,
"aspect_ratio": "16:9"
}'
# Draft mode - 4x cheaper and faster, for iterating on a prompt
curl -X POST https://apimodels.app/api/v1/video/p-video \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A robot dancing in neon-lit Tokyo street, cinematic",
"duration": 5,
"resolution": "720p",
"draft": true
}'
# Image-to-video: aspect_ratio is ignored upstream when image is provided
curl -X POST https://apimodels.app/api/v1/video/p-video \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Camera slowly pushes in, hair moving in the wind",
"image": "https://example.com/ref.jpg",
"duration": 5,
"resolution": "1080p"
}'| Field | Required | Type | Description |
|---|---|---|---|
| prompt | Yes | string | Text description of the video to generate |
| duration | No | number | Duration in seconds, 1-20, default 5. Ignored when audio is provided |
| resolution | No | string | "720p" (default) or "1080p" |
| draft | No | boolean | Draft mode (4x cheaper, faster). Default: false |
| aspect_ratio | No | string | "16:9" (default), "9:16", "4:3", "3:4", "3:2", "2:3", "1:1". Ignored when image is provided |
| image | No | string | Image-to-video reference: URL or data: base64 (jpg/png/webp) |
| audio | No | string | Audio-to-video (lip-sync): URL, supports flac/mp3/wav |
| last_frame_image | No | string | Last-frame reference image URL |
| fps | No | number | Frames per second: 24 (default) or 48 |
| seed | No | number | Integer random seed for reproducible generation |
| save_audio | No | boolean | Keep audio track in output. Default: true |
| prompt_upsampling | No | boolean | Enable prompt upsampling. Default: true |
| disable_safety_filter | No | boolean | Disable safety filter. Default: true (no filtering of prompt or input image) |
On success code is 200 and the video URL is in data.url; on failure code carries the error code and msg carries the reason.
| Field | Required | Type | Description |
|---|---|---|---|
| code | - | number | 200 means success |
| msg | - | string | "success", or the error reason on failure |
| data.url | - | string | URL of the generated video |
| data.credits | - | number | Amount charged for this call, in $ |
Per second of video, in four tiers on apimodels.app: 720p draft $0.01/s and full $0.04/s, 1080p draft $0.02/s and full $0.08/s. A 5-second clip therefore runs $0.05, $0.20, $0.10 or $0.40. The bill is seconds x resolution x mode, computed from the duration you send in the request.
No. P-Video has its own synchronous endpoint, POST /api/v1/video/p-video on apimodels.app — one request blocks for about 30-60 seconds and comes back with the video URL in data.url. There is no task id and no state to poll, so the create-then-poll code used for the other video models does not apply. Set your client timeout to 120 seconds or more.
Pass draft: true and the render is 4x cheaper and faster — 720p drops from $0.04/s to $0.01/s and 1080p from $0.08/s to $0.02/s. Use it while the prompt, framing and aspect ratio are still being worked out, then set draft back to false for the final render. Everything else about the call stays identical, so switching tiers is a one-field change.
Yes — three modes on the same endpoint. Text-to-video needs only prompt. Image-to-video adds image (a URL or a data: base64 jpg/png/webp); when image is present, aspect_ratio is ignored upstream. Audio-to-video adds audio (a flac/mp3/wav URL); when audio is present, duration is ignored upstream and the clip follows the audio length — but the charge is still computed from the duration you sent, so set duration to the real audio length to keep the two in step. A last_frame_image reference is also supported.
720p or 1080p, clips of 1 to 20 seconds (default 5), seven aspect ratios — 16:9 (default), 9:16, 4:3, 3:4, 3:2, 2:3 and 1:1 — and 24 or 48 fps. You can also pass an integer seed for reproducible generation, keep or drop the audio track with save_audio, and toggle prompt upsampling. Result files are hosted for 7 days, so download or re-host anything you need to keep.