gensta DOCS
api-platform.gensta.ai/v1 Developer portal

Text to video

POST/v1/generationsmodel: seedance-2.5 · mode: text_to_video
json
{
  "model": "seedance-2.5",
  "mode": "text_to_video",
  "variant": "standard",
  "parameters": {
    "resolution": "720p",
    "duration_seconds": 6,
    "ratio": "16:9",
    "audio": true,
    "watermark": false,
    "output_format": "mp4",
    "return_last_frame": true,
    "priority": 0,
    "execution_expires_after_seconds": 172800,
    "num_outputs": 1
  },
  "input": { "prompt": "A paper kite rises above a windy coast, cinematic tracking shot" }
}

Text and reference modes accept ratios adaptive, 16:9, 4:3, 1:1, 3:4, 9:16, and 21:9. Duration is a whole number from 4 to 30 seconds.

Image to video with first and last frames

json
{
  "model": "seedance-2.5",
  "mode": "image_to_video",
  "variant": "standard",
  "parameters": {
    "resolution": "1080p", "duration_seconds": -1, "ratio": "adaptive",
    "audio": true, "watermark": false, "output_format": "mp4",
    "return_last_frame": false, "priority": 0,
    "execution_expires_after_seconds": 172800, "num_outputs": 1
  },
  "input": {
    "prompt": "Move smoothly from dawn to golden hour",
    "first_frame": { "type": "https_url", "url": "https://cdn.example.com/first.jpg" },
    "last_frame": { "type": "media_asset", "media_asset_id": "7c74c900-8b68-4b0f-a337-32ed3a9a2020" }
  }
}

first_frame is required and last_frame is optional. This mode requires ratio: adaptive. Use duration_seconds: -1 to let the model choose, or provide 4–30 seconds. The prompt is optional.

Reference-to-video (omni)

json
{
  "model": "seedance-2.5",
  "mode": "reference_to_video",
  "variant": "standard",
  "parameters": {
    "resolution": "720p", "duration_seconds": 8, "ratio": "9:16",
    "audio": true, "watermark": false, "output_format": "mp4",
    "return_last_frame": false, "priority": 0,
    "execution_expires_after_seconds": 172800, "num_outputs": 1
  },
  "input": {
    "prompt": "Keep the character identity and follow the motion reference",
    "references": [
      { "media_kind": "image", "locator": { "type": "https_url", "url": "https://cdn.example.com/character.png" } },
      { "media_kind": "video", "locator": { "type": "media_asset", "media_asset_id": "7c74c900-8b68-4b0f-a337-32ed3a9a2020" } },
      { "media_kind": "audio", "locator": { "type": "https_url", "url": "https://cdn.example.com/music.mp3" } }
    ]
  }
}

Pass 1–50 references in total: at most 30 images, 10 videos, and 10 audio files. The prompt is optional. References accept HTTPS URLs or ready media assets; documents and web pages are not supported by Seedance.

Edit a video

json
{
  "model": "seedance-2.5",
  "mode": "video_edit",
  "variant": "standard",
  "parameters": {
    "resolution": "720p", "duration_seconds": -1, "ratio": "adaptive",
    "audio": true, "watermark": false, "output_format": "mp4",
    "return_last_frame": false, "priority": 0,
    "execution_expires_after_seconds": 172800, "num_outputs": 1
  },
  "input": {
    "prompt": "Replace the rainy sky with warm evening light",
    "video": { "locator": { "type": "https_url", "url": "https://cdn.example.com/source.mp4" } },
    "references": [
      { "media_kind": "image", "locator": { "type": "https_url", "url": "https://cdn.example.com/look.jpg" } }
    ]
  }
}

Edit uses model-selected duration (-1) and adaptive ratio. The source must be a 4–30 second video. You may add up to 49 references; source and references together allow 50 assets, including at most 10 videos total, 30 images, and 10 audio files.

Extend a video

json
{
  "model": "seedance-2.5",
  "mode": "video_extend",
  "variant": "standard",
  "parameters": {
    "resolution": "720p", "duration_seconds": -1, "ratio": "adaptive",
    "audio": true, "watermark": false, "output_format": "mp4",
    "return_last_frame": false, "priority": 0,
    "execution_expires_after_seconds": 172800, "num_outputs": 1
  },
  "input": {
    "prompt": "Continue the camera move into the open valley",
    "direction": "forward",
    "video": { "locator": { "type": "media_asset", "media_asset_id": "7c74c900-8b68-4b0f-a337-32ed3a9a2020" } }
  }
}

direction is forward or backward. This mode requires adaptive ratio and accepts -1 or 4–30 output seconds.

Inputs and parameters

InputLimits
ImageJPEG, PNG, or WebP; under 30 MiB; 300–6000 px per side; aspect ratio 0.4–2.5
VideoMP4 or MOV; up to 200 MiB; 2–30 sec (edit source: 4–30 sec); 407,696–8,295,044 total pixels; 24–60 fps
AudioMP3 or WAV; up to 15 MiB; 2–30 sec

For uploaded media_asset inputs, incompatible verified dimensions return HTTP 422 with input_media_dimensions_invalid before generation creation or a balance reservation. error.details contains field, media_asset_id, width, height, reason and applicable limits. A too-wide image can be cropped at the left/right edges or padded above/below; proportional resizing does not change its aspect ratio. Legacy queued requests failing this check return the same code asynchronously and release their reservation.

Across one reference or edit request, all input videos combined may total at most 30 seconds, and all input audio combined may total at most 30 seconds.

Allowed resolutions are 480p, 720p, and 1080p. priority is 0–9. execution_expires_after_seconds is 3600–259200. num_outputs means alternative videos and is currently fixed at 1. Set return_last_frame to true to request a separate image artifact for the final frame.

The authoritative, machine-readable limits for the selected mode are returned by GET /v1/models in operation_constraints.

Asynchronous result and pricing in USD

Create returns HTTP 202. Poll GET /v1/generations/{id} until a terminal status. A successful request returns one MP4 artifact with role: result; when return_last_frame is true, it also returns an image artifact with role: last_frame.

GET /v1/models publishes current Gensta prices in USD as estimates per output second or billable second for the chosen mode and resolution. Requests with video input also bill verified input-video usage. The final successful charge is returned in billing.charged_amount; any unused reserve is released. Failed generations are not charged. The legacy price object remains for compatibility.