APIMODELSAPIMODELS

P-Video API (Pruna AI) — fast video generation, returned synchronously

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.

Read this first: different endpoint, and it is synchronous

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.

Pricing tiers

TierParametersPriceA 5-second clip
P-Video 720p Draftresolution 720p · draft true$0.01/s$0.05
P-Video 720p Fullresolution 720p · draft false$0.04/s$0.20
P-Video 1080p Draftresolution 1080p · draft true$0.02/s$0.10
P-Video 1080p Fullresolution 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.

The three modes

ModeHow to trigger itWatch out for
Text-to-videopromptBoth duration and aspect_ratio apply
Image-to-videoprompt + imageWith image supplied, aspect_ratio is ignored upstream — the ratio follows the reference image
Audio-to-videoprompt + audioWith 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.

Make a request

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://api.apimodels.app/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 more affordable and faster, for iterating on a prompt
curl -X POST https://api.apimodels.app/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://api.apimodels.app/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"
  }'

Request parameters

FieldRequiredTypeDescription
promptYesstringText description of the video to generate
durationNonumberDuration in seconds, 1-20, default 5. Ignored when audio is provided
resolutionNostring"720p" (default) or "1080p"
draftNobooleanDraft mode (4x more affordable, faster). Default: false
aspect_ratioNostring"16:9" (default), "9:16", "4:3", "3:4", "3:2", "2:3", "1:1". Ignored when image is provided
imageNostringImage-to-video reference: URL or data: base64 (jpg/png/webp)
audioNostringAudio-to-video (lip-sync): URL, supports flac/mp3/wav
last_frame_imageNostringLast-frame reference image URL
fpsNonumberFrames per second: 24 (default) or 48
seedNonumberInteger random seed for reproducible generation
save_audioNobooleanKeep audio track in output. Default: true
prompt_upsamplingNobooleanEnable prompt upsampling. Default: true
disable_safety_filterNobooleanDisable safety filter. Default: true (no filtering of prompt or input image)

Response

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.

FieldRequiredTypeDescription
code-number200 means success
msg-string"success", or the error reason on failure
data.url-stringURL of the generated video
data.credits-numberAmount charged for this call, in $

Billing and limits

  • The bill is seconds x resolution x mode (draft is a quarter of the price), computed from the duration in your request.
  • Length runs from 1 to 20 seconds; leave it out and you get 5.
  • Iterate in draft until the prompt, framing and ratio are right, then switch draft off for the final render — the same 5 seconds at 720p is $0.05 as a draft and $0.20 in full.
  • A request blocks for about 30-60 seconds; set your client timeout to 120 seconds or more.
  • disable_safety_filter defaults to true, meaning prompts and input images are not filtered by default — pass false explicitly if you want filtering.
  • Result files are kept for 30 days — download or re-host anything you need to keep.

Related

FAQ

How much does the P-Video API cost?

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.

Does the P-Video API need polling?

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.

What is P-Video draft mode and when should I use it?

Pass draft: true and the render is 4x more affordable 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.

Can P-Video do image-to-video and audio-driven video?

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.

What resolutions, clip lengths and frame rates does P-Video support?

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 30 days, so download or re-host anything you need to keep.