Generate a video using reference images, a cropped source video, reusable characters, and registered voices. Supply references in input, address them in your prompt, and retrieve the completed asynchronous generation.
Developer API pricing
Provider: SeeAPI
USD estimate: $0.0037 / credit · Estimated equivalent, not an additional charge.
No video
360p / 720p / 1080p: 156 credits/gen (≈ $0.58/gen, 4s) | 208 credits/gen (≈ $0.78/gen, 6s) | 260 credits/gen (≈ $0.97/gen, 8s) | 311 credits/gen (≈ $1.17/gen, 10s)
4k: 363 credits/gen (≈ $1.36/gen, 4s) | 414 credits/gen (≈ $1.55/gen, 6s) | 467 credits/gen (≈ $1.75/gen, 8s) | 519 credits/gen (≈ $1.94/gen, 10s)
With video
360p / 720p / 1080p: 414 credits/gen (≈ $1.55/gen)
4k: 622 credits/gen (≈ $2.33/gen)
/v1/generationsA new, stable key for each generation request. Reuse it only when retrying the same request body.
omni-reference-video-001The model ID shown in the selected model's API documentation.
gemini-omni-flash-1-1gemini-omni-flash-1-1gemini-omni-flash-1-1Reference to Video. Use the Endpoint ID shown in this model's API documentation.
reference-to-videoreference-to-videoreference-to-videoOptional public Provider ID. Omit it to use the Endpoint default Provider (seeapi).
seeapiseeapiseeapiReference images, video clips, character IDs, voice IDs, and the prompt for this request.
Provider parameters
seeapiDefault ProviderPublic HTTPS URLs of reference images. Each image uses 1 reference slot. Address them as @image1, @image2, and so on in the prompt.
["https://client.example.com/microphone.png"]An array containing at most one object with url, start, and ends. Each video uses 2 reference slots. Times are measured in seconds.
Public HTTPS URL of the source video.
https://client.example.com/stage.mp4Clip start time in seconds, measured from the start of the source video.
0Clip end time in seconds. It must be greater than start and no greater than the actual source duration.
4IDs returned by Create Audio. Registered audio IDs do not use reference slots. Preserve the returned IDs unchanged; address them as @audio1, @audio2, and so on.
["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]IDs returned by Create Character. Each character ID uses 1 reference slot. Preserve the returned IDs unchanged; address them as @character1, @character2, and so on.
["bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"]Describe the scene, actions, camera movement, and visual style of the video.
@character1 speaks using @audio1 on the stage from @video1, holding the microphone from @image1. A steady medium shot with natural gestures.Requested output duration only when no reference video is provided.
468104Choose landscape or portrait framing for the generated video.
16:99:1616:916:9Choose the output resolution. The selected resolution affects the generation price.
360p720p1080p4k720p720pOptional integer seed to reuse when comparing requests with the same inputs.
74An absolute HTTPS URL that receives the terminal generation Webhook.
https://client.example.com/webhooks/seeapiTask ID for this asynchronous generation. Save this value and use it as task_id in GET /v1/generations/{task_id} to retrieve the status and final result.
task_xxxgemini-omni-flash-1-1reference-to-videoseeapiseeapi: SeeAPIseeapiprocessingprocessingEstimated public credits. Values can include up to three decimal places.
156Consumed public credits, with up to three decimal places.
0Refunded public credits, with up to three decimal places.
02026-08-18T10:00:00Z2026-08-18T10:00:00ZWhether this response is an idempotent replay of an earlier request.
falseTask ID for this asynchronous generation. Save this value and use it as task_id in GET /v1/generations/{task_id} to retrieve the status and final result.
task_xxxgemini-omni-flash-1-1reference-to-videoseeapiseeapi: SeeAPIseeapiprocessingprocessingEstimated public credits. Values can include up to three decimal places.
156Consumed public credits, with up to three decimal places.
0Refunded public credits, with up to three decimal places.
02026-08-18T10:00:00Z2026-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
const response = await fetch("https://api.seeapi.com/v1/generations", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Idempotency-Key": "omni-reference-video-001",
"Content-Type": "application/json"
},
body: JSON.stringify({
"model": "gemini-omni-flash-1-1",
"endpoint": "reference-to-video",
"provider": "seeapi",
"input": {
"reference_images": [
"https://client.example.com/microphone.png"
],
"video_list": [
{
"url": "https://client.example.com/stage.mp4",
"start": 0,
"ends": 4
}
],
"audio_ids": [
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
],
"character_ids": [
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
],
"prompt": "@character1 speaks using @audio1 on the stage from @video1, holding the microphone from @image1. A steady medium shot with natural gestures.",
"aspect_ratio": "16:9",
"resolution": "720p",
"seed": 74
},
"callback_url": "https://client.example.com/webhooks/seeapi"
})
});
const result = await response.json();{
"generation": {
"id": "task_xxx",
"model": "gemini-omni-flash-1-1",
"endpoint": "reference-to-video",
"provider": "seeapi",
"status": "processing",
"estimated_credits": 156,
"consumed_credits": 0,
"refunded_credits": 0,
"created_at": "2026-08-18T10:00:00Z",
"updated_at": "2026-08-18T10:00:00Z"
},
"idempotent": false
}