PopNowAPI Docs
Main content

Veo 3.1 API reference

The Veo 3.1 API for final renders: text to video, image to video with a first and last frame, and clip extension. Clips of 4 to 8 seconds at 720p with sound, billed per clip at 10% under Google's price.

Call Veo 3.1 from your own code with one PopNow API key. Below are the exact model IDs to send, every input field the model accepts, what each request costs in USD, and a request you can paste into a terminal.

At a glance

Made by
Google
Output
Video
From
$1.44 USD per request

Prices are in USD, charged to your separate API wallet. A task reserves the maximum possible charge when accepted and settles actual usage on completion; any remainder is released. Failed tasks are not charged. Call POST /api/v1/jobs/quote for an exact quote before running.

Create Video

google/veo-3.1/text-to-video

Price

OptionUSD
4$1.44 per request
6$2.16 per request
8$2.88 per request

Parameters

FieldTypeDefaultAllowedWhat it does
promptRequiredstring—up to 4,000 charactersDescribe the subject, the action, the camera and the sound.
aspect_ratioOptionalstring16:916:9, 9:16Output aspect ratio: 16:9 (1280x720) or 9:16 (720x1280).
duration_secondsOptionalinteger84, 6, 8Clip length: 4, 6 or 8 seconds. Billed per clip by length.

Example request

This request runs as it is; any field you leave out uses its default. Put your key in POPNOW_API_KEY first.

POST /api/v1/jobs/createTask
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "model": "google/veo-3.1/text-to-video",
  "input": {
    "prompt": "A paper boat drifts down a rain-soaked street at dusk, neon signs reflecting in the water, slow tracking shot at ground level",
    "duration_seconds": 8
  }
}'

The response carries a taskId straight away. Read the result with GET /api/v1/jobs/recordInfo, or add callBackUrl to be notified.

GET /api/v1/jobs/recordInfo
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Image to Video

google/veo-3.1/image-to-video

Price

OptionUSD
4$1.44 per request
6$2.16 per request
8$2.88 per request

Parameters

FieldTypeDefaultAllowedWhat it does
promptRequiredstring—up to 4,000 charactersDescribe the motion, the camera and the sound.
image_urlRequiredstring (uri)——Opening frame of the clip.
last_image_urlOptionalstring (uri)——Optional closing frame; the clip moves from the first frame to this one.
aspect_ratioOptionalstringautoauto, 16:9, 9:16auto follows the first frame; 16:9 or 9:16 crops to that shape.
duration_secondsOptionalinteger84, 6, 8Clip length: 4, 6 or 8 seconds. Billed per clip by length.

Example request

This request runs as it is; any field you leave out uses its default. Put your key in POPNOW_API_KEY first.

The example uses PopNow sample files in image_url. Replace them with your own public HTTPS links, uploads or saved assets.

POST /api/v1/jobs/createTask
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "model": "google/veo-3.1/image-to-video",
  "input": {
    "prompt": "He lands softly on the rooftop, laughs and turns toward the camera while the balloons sway in the evening breeze; slow push-in",
    "image_url": "https://media.popnow.ai/influencer/examples/marco.webp",
    "duration_seconds": 8
  }
}'

The response carries a taskId straight away. Read the result with GET /api/v1/jobs/recordInfo, or add callBackUrl to be notified.

GET /api/v1/jobs/recordInfo
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Extend Video

google/veo-3.1/video-extend

Price

OptionUSD
4$1.44 per request
6$2.16 per request
8$2.88 per request

Parameters

FieldTypeDefaultAllowedWhat it does
promptRequiredstring—up to 4,000 charactersDescribe what happens next: the action, the camera and the sound.
video_urlRequiredstring (uri)——The clip to continue, up to 60 seconds. Its last frame opens the new segment; you get back one file with both joined.
last_image_urlOptionalstring (uri)——Optional closing frame for the new segment.
duration_secondsOptionalinteger84, 6, 8Length of the new segment: 4, 6 or 8 seconds. Billed per segment by length; the source clip is not billed.

Example request

This request runs as it is; any field you leave out uses its default. Put your key in POPNOW_API_KEY first.

The example uses PopNow sample files in video_url. Replace them with your own public HTTPS links, uploads or saved assets.

POST /api/v1/jobs/createTask
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "model": "google/veo-3.1/video-extend",
  "input": {
    "prompt": "The flowers keep opening while the camera slowly pulls back to reveal a sunlit meadow",
    "video_url": "https://media.popnow.ai/effects/flower-bloom-1abd6efb.mp4",
    "duration_seconds": 8
  }
}'

The response carries a taskId straight away. Read the result with GET /api/v1/jobs/recordInfo, or add callBackUrl to be notified.

GET /api/v1/jobs/recordInfo
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Next steps

On this page