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-videoBody parameters
modelstringrequiredseedance (Seedance 2.0) or gemini-omni (Gemini Omni Flash).promptstringrequiredDescription 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: 720pSeedance only:
480p, 720p, 1080p, or 4k. Pricing scales with resolution — see below.aspect_ratiostringSeedance:
auto (default), 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. Gemini Omni: 16:9 (default) or 9:16.durationstring | integerVideo length in seconds. Seedance:
"auto" (default, billed as 5s) or an integer 4-15. Gemini Omni: integer 3-10, default 8.generate_audiobooleandefault: trueSeedance only: generate a soundtrack in the same pass.
Response fields
data.idintegerJob ID. Poll
GET /v1/api/job/{id} — when the job is COMPLETED, its image_url field contains the video file URL.data.statusstringNOT_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 resolution | Credits / second |
|---|---|
480p | 3 |
720p | 7 |
1080p | 15 |
4k | 60 |
| Gemini Omni Flash | Credits / second |
|---|---|
| All videos (720p) | 3 |
Example: a 5-second Seedance video at 720p costs 35 credits; the same video at 1080p costs 75 credits.