Generate a video from one image with Vidu Q4. Add an optional motion prompt, then retrieve the completed video through task status queries or a webhook.
Developer API pricing
Provider: SeeAPI
USD estimate: $0.0037 / credit · Estimated equivalent, not an additional charge.
540p: 9 credits/sec (≈ $0.034/sec)
720p: 18 credits/sec (≈ $0.067/sec)
1080p: 22 credits/sec (≈ $0.082/sec)
2k: 36 credits/sec (≈ $0.13/sec)
4k: 72 credits/sec (≈ $0.27/sec)
/v1/generationsUse a unique key for a new generation. Reuse the same key and identical request body only when retrying that request.
vidu-q4-image-001Use vidu-q4 to select Vidu Q4.
vidu-q4vidu-q4vidu-q4Use image-to-video to animate a single image.
image-to-videoimage-to-videoimage-to-videoOptional public Provider ID. Omit it to use the default Provider, seeapi.
seeapiseeapiseeapiObject containing the image and generation settings described below.
Provider parameters
seeapiDefault ProviderAn array containing one image URL. The image establishes the starting visual content. Accepted formats: JPEG, PNG, WebP; maximum 50 MB per file.
["https://client.example.com/input.png"]Optional description of subject motion, camera movement, and the desired scene. Leave it out to generate from the image alone.
A slow camera push-in as the subject turns toward the light, with natural ambient sound.Requested output duration in seconds. Use a whole number; duration affects the generation's credit estimate.
5Output video resolution. Resolution affects the generation's credit estimate.
540p720p1080p2k4k720pWhether to generate audio with the video. Set false to turn off generated audio.
trueOptional absolute HTTPS URL for receiving the terminal generation webhook.
https://client.example.com/webhooks/seeapiThe generation record for this request.
Generation ID. Keep this value to query task status and retrieve the result.
task_xxxModel used for this generation.
vidu-q4Generation capability selected in the request.
image-to-videoPublic Provider selected for this generation.
seeapiseeapi: SeeAPIseeapiCurrent task status. A processing response means the video is not ready yet.
processingprocessingEstimated public credits. Values can include up to three decimal places.
90Consumed public credits, with up to three decimal places.
0Refunded public credits, with up to three decimal places.
0Time when the generation was created.
2026-08-18T10:00:00ZTime when the generation record was last updated.
2026-08-18T10:00:00ZWhether this response is an idempotent replay of an earlier request.
falseThe generation record for this request.
Generation ID. Keep this value to query task status and retrieve the result.
task_xxxModel used for this generation.
vidu-q4Generation capability selected in the request.
image-to-videoPublic Provider selected for this generation.
seeapiseeapi: SeeAPIseeapiCurrent task status. A processing response means the video is not ready yet.
processingprocessingEstimated public credits. Values can include up to three decimal places.
90Consumed public credits, with up to three decimal places.
0Refunded public credits, with up to three decimal places.
0Time when the generation was created.
2026-08-18T10:00:00ZTime when the generation record was last updated.
2026-08-18T10:00:00ZWhether this response is an idempotent replay of an earlier request.
falseInvalid JSON, parameters, Schema, or API Policy
Invalid API Key or authentication failed
Insufficient credits
The current request is not allowed
Model, Endpoint, or task not found
Idempotency conflict or the same request is still being created
Request body is too large
Too many requests
Service temporarily unavailable
After submitting a task, use the unified query endpoint to check progress and retrieve results:
Generation is asynchronous. Keep generation.id, then query task status or receive the terminal webhook before using the video result.
Manage the secret used to verify generation webhook signatures. Callback URLs are supplied when you create each generation.
Callback URL per generation.
const response = await fetch("https://api.seeapi.com/v1/generations", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Idempotency-Key": "vidu-q4-image-001",
"Content-Type": "application/json"
},
body: JSON.stringify({
"model": "vidu-q4",
"endpoint": "image-to-video",
"provider": "seeapi",
"input": {
"input_images": [
"https://client.example.com/input.png"
],
"prompt": "A slow camera push-in as the subject turns toward the light, with natural ambient sound.",
"duration_seconds": 5,
"resolution": "720p",
"generate_audio": true
},
"callback_url": "https://client.example.com/webhooks/seeapi"
})
});
const result = await response.json();{
"generation": {
"id": "task_xxx",
"model": "vidu-q4",
"endpoint": "image-to-video",
"provider": "seeapi",
"status": "processing",
"estimated_credits": 90,
"consumed_credits": 0,
"refunded_credits": 0,
"created_at": "2026-08-18T10:00:00Z",
"updated_at": "2026-08-18T10:00:00Z"
},
"idempotent": false
}