SEEAPISEEAPI
Developer CenterDocs
Get API Key
  • Getting Started
  • Authentication
  • List Model Prices
  • Create a Generation
  • Get Task Details
Image Models
Alibaba
Black Forest Labs
ByteDance
Google
Grok
OpenAI
SeeAPI
Video Models
Alibaba
ByteDance
Google
Grok
Kling
Lightricks
MiniMax
PixVerse
Runway
SeeAPI
Music Models
Text Models
www.seeapi.com

One AI API for every leading model. Create images, videos, music, and multimodal AI assets online, or build with one unified API.

Support
  • Pricing
  • [email protected]
Legal
  • Privacy Policy
  • Refund Policy
  • Terms & Conditions

Copyright 2026 © SeeAPI. All rights reserved.

GROWCRAFT PTE. LTD.

·5 RAFFLES PLACE, #06-00, RAFFLES PLACE MRT STATION, SINGAPORE 048618

Text to VideoImage to VideoReference to VideoCreate AudioCreate Character

Gemini Omni Flash 1.1 · Reference to Video

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)

Request

POST/v1/generations
AuthorizationSend your API key in the Authorization header using the Bearer scheme.Authorization: Bearer ****************

Header Params

stringrequired

A new, stable key for each generation request. Reuse it only when retrying the same request body.

  • Reuse the same key and unchanged request body when retrying the same request.
max length: 255
Example:
omni-reference-video-001

Body Params

application/json
stringrequired

The model ID shown in the selected model's API documentation.

Allowed:gemini-omni-flash-1-1
Default:
gemini-omni-flash-1-1
Example:
gemini-omni-flash-1-1
stringrequired

Reference to Video. Use the Endpoint ID shown in this model's API documentation.

Allowed:reference-to-video
Default:
reference-to-video
Example:
reference-to-video
stringoptional

Optional public Provider ID. Omit it to use the Endpoint default Provider (seeapi).

Allowed:seeapi
Default:
seeapi
Example:
seeapi
objectrequired

Reference images, video clips, character IDs, voice IDs, and the prompt for this request.

  • Reference capacity: reference_images count + (2 × video_list count) + character_ids count must not exceed 7 slots per request.
  • Each image uses 1 slot; each video uses 2 slots; each character ID uses 1 slot. Registered audio IDs do not use reference slots.
  • Example: 1 video and 3 character IDs use 5 slots, leaving room for up to 2 reference images.
  • Reference slots limit the amount of input material; they are not billing credits.

Provider parameters

SeeAPIseeapiDefault Provider
array <uri>optional

Public HTTPS URLs of reference images. Each image uses 1 reference slot. Address them as @image1, @image2, and so on in the prompt.

max items: 7
Example:
["https://client.example.com/microphone.png"]
array <object>optional

An array containing at most one object with url, start, and ends. Each video uses 2 reference slots. Times are measured in seconds.

  • Supply at most one publicly accessible HTTPS source video, no longer than 30 seconds and no larger than 100 MB.
  • video_list is an array of clip objects with url, start and ends. The selected clip must not exceed 10 seconds; the API supports fractional seconds.
max items: 1
string <uri>required

Public HTTPS URL of the source video.

Example:
https://client.example.com/stage.mp4
numberrequired

Clip start time in seconds, measured from the start of the source video.

  • Start time in seconds. It must be non-negative and lower than ends.
min: 0
Example:
0
numberrequired

Clip end time in seconds. It must be greater than start and no greater than the actual source duration.

  • The end time must not exceed the actual source duration, and ends - start must not exceed 10 seconds.
Example:
4
arrayoptional

IDs 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.

  • Use the actual data.id values returned by Create Audio. The example ID is a placeholder.
  • Reuse registered audio IDs unchanged and avoid duplicate audio references.
max items: 3
Example:
["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]
arrayoptional

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.

  • Use the actual data.id values returned by Create Character. The example ID is a placeholder.
  • Reuse registered character IDs unchanged and avoid duplicate character references.
max items: 3
Example:
["bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"]
stringrequired

Describe the scene, actions, camera movement, and visual style of the video.

  • Address references as @image1, @video1, @character1 and @audio1. Number each reference type independently from 1.
max length: 20000
Example:
@character1 speaks using @audio1 on the stage from @video1, holding the microphone from @image1. A steady medium shot with natural gestures.
numberoptional

Requested output duration only when no reference video is provided.

  • Omit this field when video_list contains a video. It does not control the output duration in that case; the model determines the duration.
Allowed:46810
Default:
4
stringoptional

Choose landscape or portrait framing for the generated video.

Allowed:16:99:16
Default:
16:9
Example:
16:9
stringoptional

Choose the output resolution. The selected resolution affects the generation price.

Allowed:360p720p1080p4k
Default:
720p
Example:
720p
numberoptional

Optional integer seed to reuse when comparing requests with the same inputs.

min: 0max: 2147483647
Example:
74
string <uri>optional

An absolute HTTPS URL that receives the terminal generation Webhook.

  • Optional terminal webhook URL. Omit it if you poll GET /v1/generations/{task_id} instead.
  • Handle generation.succeeded and generation.failed; verify the timestamp, signing-key UID and HMAC before trusting a callback.
max length: 2048
Example:
https://client.example.com/webhooks/seeapi

Responses

202Generation accepted and processing
Bodyapplication/json
objectrequired
stringrequired

Task 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.

Example:
task_xxx
stringrequired
Example:
gemini-omni-flash-1-1
stringrequired
Example:
reference-to-video
stringrequired
Allowed:seeapi
  • seeapi: SeeAPI
Example:
seeapi
stringrequired
  • Creation returns processing. Poll the task until a terminal status, or use the terminal callback.
  • When the queried task succeeds, read the video URL from generation.result.assets. If it fails, inspect the returned failure information before starting a new request.
Allowed:processing
Example:
processing
numberrequired

Estimated public credits. Values can include up to three decimal places.

Example:
156
numberrequired

Consumed public credits, with up to three decimal places.

Example:
0
numberrequired

Refunded public credits, with up to three decimal places.

Example:
0
string <date-time>required
Example:
2026-08-18T10:00:00Z
string <date-time>required
Example:
2026-08-18T10:00:00Z
booleanrequired

Whether this response is an idempotent replay of an earlier request.

Example:
false
200Idempotent replay of an existing generation request
Bodyapplication/json
objectrequired
stringrequired

Task 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.

Example:
task_xxx
stringrequired
Example:
gemini-omni-flash-1-1
stringrequired
Example:
reference-to-video
stringrequired
Allowed:seeapi
  • seeapi: SeeAPI
Example:
seeapi
stringrequired
  • Creation returns processing. Poll the task until a terminal status, or use the terminal callback.
  • When the queried task succeeds, read the video URL from generation.result.assets. If it fails, inspect the returned failure information before starting a new request.
Allowed:processing
Example:
processing
numberrequired

Estimated public credits. Values can include up to three decimal places.

Example:
156
numberrequired

Consumed public credits, with up to three decimal places.

Example:
0
numberrequired

Refunded public credits, with up to three decimal places.

Example:
0
string <date-time>required
Example:
2026-08-18T10:00:00Z
string <date-time>required
Example:
2026-08-18T10:00:00Z
booleanrequired

Whether this response is an idempotent replay of an earlier request.

Example:
false
400

Invalid JSON, parameters, Schema, or API Policy

401

Invalid API Key or authentication failed

402

Insufficient credits

403

The current request is not allowed

404

Model, Endpoint, or task not found

409

Idempotency conflict or the same request is still being created

413

Request body is too large

429

Too many requests

503

Service temporarily unavailable

Related Resources

Market Overview

Explore all available models

Credits & Billing

View credit balance, plans, and billing activity

Usage

Review API usage and credit consumption

Code Examples
Request
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();
ResponseHTTP 202
{
  "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
}
PreviousGemini Omni Flash 1.1 · Image to VideoNextGrok Imagine Video 1.5 · Image to Video
Request
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();
ResponseHTTP 202
{
  "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
}