ProductAIDocs
Get API Key

API Reference

Generate Video

Generate AI product videos from a text prompt or reference images. Same async job flow as image generation — poll the job or receive a webhook with the video URL.

POST/v1/api/generate-video

Body parameters

modelstringrequired
seedance (Seedance 2.0) or gemini-omni (Gemini Omni Flash).
promptstringrequired
Description of the video. With reference images, bind them in the prompt: Seedance uses @Image1 markers, Gemini Omni uses <IMAGE_REF_0> tags. If you omit the marker, we automatically bind the first image for you.
image_urlstring | string[]
Public URL(s) of reference image(s), max 10MB each, JPEG/PNG/WebP. Seedance: optional — no images means text-to-video, up to 9 images for reference-to-video. Gemini Omni: required (1-9 images, reference-to-video only).
resolutionstringdefault: 720p
Seedance only: 480p, 720p, 1080p, or 4k. Pricing scales with resolution — see below.
aspect_ratiostring
Seedance: auto (default), 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. Gemini Omni: 16:9 (default) or 9:16.
durationstring | integer
Video length in seconds. Seedance: "auto" (default, billed as 5s) or an integer 4-15. Gemini Omni: integer 3-10, default 8.
generate_audiobooleandefault: true
Seedance only: generate a soundtrack in the same pass.

Response fields

data.idinteger
Job ID. Poll GET /v1/api/job/{id} — when the job is COMPLETED, its image_url field contains the video file URL.
data.statusstring
NOT_STARTED, RUNNING, COMPLETED, ERROR.

Video jobs take longer

Video generation typically takes 1-5 minutes depending on resolution and duration. Prefer webhooks over tight polling loops.
Request
curl -X POST "https://api.productai.photo/v1/api/generate-video" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance",
    "image_url": "https://example.com/product.jpg",
    "prompt": "@Image1 slowly rotating on a marble pedestal, studio lighting",
    "resolution": "720p",
    "duration": 5
  }'
Response · 200 OK
{
  "status": "OK",
  "data": {
    "id": 287391,
    "status": "RUNNING",
    "prompt": "@Image1 slowly rotating on a marble pedestal, studio lighting"
  }
}
More examples
{
  "model": "seedance",
  "prompt": "A sleek perfume bottle on a beach at golden hour, waves in the background",
  "resolution": "1080p",
  "duration": 8,
  "aspect_ratio": "16:9"
}

Pricing

Video is billed per second of output. Total price = credits/second × duration (with "auto" billed as 5 seconds up front).

Seedance resolutionCredits / second
480p3
720p7
1080p15
4k60
Gemini Omni FlashCredits / second
All videos (720p)3

Example: a 5-second Seedance video at 720p costs 35 credits; the same video at 1080p costs 75 credits.