Skip to main content
POST

Workflow

Video generation is asynchronous. Here’s the typical flow:
  1. Submit a video generation request using this endpoint
  2. Save the id from the response
  3. Poll the Get Video endpoint every 15–30 seconds until status is completed
  4. Download the video from the url field
Video generation typically takes 1–5 minutes depending on the model, duration, and resolution. A paid plan is required.

Input types

The model value must exactly match one of the titles in the model enum, and each mode is a separate model variant — the title’s suffix tells you which image inputs it accepts:
  • Text-to-video — Provide only a prompt (no image fields). Use the base title, e.g. Seedance 2.0, Veo 3.1.
  • Image-to-video (first frame) — Provide prompt + image (a start-frame URL). Use a title ending in “Image”, e.g. Seedance 2.0 Image, Veo 3.1 Fast Image, Kling 3.0 Pro Image.
  • First & last frame — Provide prompt + image (first) + tailImage (last). Use a “First-Last Frame” title (e.g. Veo 3.1 First-Last Frame), or Seedance 2.0 Image, which also accepts a tailImage end frame.
  • Reference-to-video (multiple references) — Provide prompt + referenceImages (an array of { "url": ... }, up to 9) to keep characters/objects/style consistent. Use a title ending in “Reference”, e.g. Seedance 2.0 Reference, Kling O1 Reference, Kling O3 Reference.
For Seedance 2.0 these are distinct models: Seedance 2.0 (text), Seedance 2.0 Image (first frame, optional last frame), and Seedance 2.0 Reference (up to 9 reference images). A single request cannot combine a start frame and reference images — pick the variant that matches your input.
Image URLs for image, tailImage, and referenceImages[].url do not need to be hosted on Easy-Peasy, but they must be downloadable server-side by our video provider. Some hosts (e.g. Wikimedia, or sites that block hotlinking / non-browser requests) return HTTP 403 to automated downloads — these fail with a Could not download the input (HTTP 403) error. If in doubt, host the image on your own public CDN/bucket or on Easy-Peasy.

First frame (image-to-video)

Add "tailImage": "https://yourcdn.com/last-frame.png" to interpolate between a first and last frame.

Multiple reference images (reference-to-video)

referenceImages[].type (character / object / style) is optional and only used by the Kling O1/O3 Reference models to separate character/object references from style references. Seedance 2.0 Reference treats every entry as a general reference, so you can send just { "url": ... }.

Polling example

Authorizations

x-api-key
string
header
required

API key for authentication. Get yours at https://easy-peasy.ai/settings/api

Headers

x-api-key
string
required

Your API key

Body

application/json
prompt
string
required

Text prompt describing the video to generate.

Example:

"A cat walking on the beach at sunset, cinematic lighting"

model
enum<string>
required

The video model to use (required). The value must exactly match one of the enum titles below. Titles ending in "Image" take a start-frame image; titles ending in "Reference" take referenceImages; "First-Last Frame" titles take both image and tailImage; all others are text-to-video.

Available options:
Veo 3.1 Fast,
Grok Imagine,
Grok Imagine Reference,
Seedance 2.0 Fast,
Seedance 2.0 Turbo,
Seedance 2.0,
Seedance 2.0 Mini,
Seedance 2.0 Reference,
Seedance 2.0 Fast Reference,
Seedance 2.0 Mini Reference,
Kling 2.6 Pro,
Veo 3.1 Lite,
Veo 3.1 Lite Image,
Veo 3.1 Fast Image,
Grok Imagine Image,
Grok Imagine 1.5,
Seedance 2.0 Image,
Seedance 2.0 Fast Image,
Seedance 2.0 Turbo Image,
Seedance 2.0 Mini Image,
Happy Horse,
Happy Horse Image,
Happy Horse Reference,
Kling 2.6 Pro Image,
Kling 3.0 Pro,
Kling 3.0 Pro Image,
Kling 3.0 Standard,
Kling 3.0 Standard Image,
Kling O3 Pro,
Kling O3 Pro Image,
Kling O3 Standard,
Kling O3 Standard Image,
Kling O3 Reference,
Seedance 1.5 Pro,
Seedance 1.5 Pro Image,
Kling Motion Control Pro,
Kling Motion Control,
Kling O1 Image,
Kling O1 Reference,
Kling 2.5 Turbo Pro Image,
Kling 2.5 Turbo Pro,
Kling 2.5 Turbo Standard,
Seedance 1.5 Pro First-Last Frame,
Veo 3.1,
LTX-2 Pro,
LTX-2 Fast,
Veo 3.1 Image,
Veo 3.1 First-Last Frame,
Veo 3.1 Fast First-Last Frame,
LTX-2 Pro Image,
LTX-2 Fast Image,
Sora 2,
Sora 2 Pro,
Hailuo 2.0,
Hailuo 2.0 Pro,
Hailuo 2.3,
Hailuo 2.3 Pro,
Hailuo 2.3 Image,
Hailuo 2.3 Pro Image,
Hailuo 2.3-Fast Pro Image,
Seedance v1 Pro Fast,
Pixverse v5.5,
Wan 2.5,
Wan v2.2 Turbo,
Wan v2.2,
Sora 2 Image,
Sora 2 Pro Image,
Hailuo 2.0 Image,
Hailuo 2.0 Pro Image,
Seedance 1.0 Pro Fast,
Pixverse v5.5 Image,
Wan 2.5 Image,
Wan v2.2 Turbo Image,
Wan-2.2 Image
image
string<uri>

URL of a start/first-frame image for image-to-video generation. Use a model whose title ends in "Image" (e.g. "Seedance 2.0 Image", "Veo 3.1 Image"). If omitted, text-to-video mode is used. Any publicly reachable URL is accepted.

duration
string
default:5

Duration of the video in seconds. Available values depend on the model.

Example:

"5"

aspectRatio
enum<string>
default:16:9

Aspect ratio of the video.

Available options:
16:9,
9:16,
1:1,
4:3,
3:4,
21:9,
9:21,
3:2,
2:3
resolution
enum<string>

Video resolution. Allowed values depend on the model (e.g. Seedance 2.0 supports 480p–4k; Veo 3.1 supports 720p/1080p).

Available options:
480p,
720p,
1080p,
4k
generateAudio
boolean

Whether to generate audio along with the video (supported by some models like Veo 3.1, Kling 3.0, Seedance 2.0).

tailImage
string<uri>

URL of an end/last-frame image. Only used by models that support a tail frame — the "First-Last Frame" titles and "Seedance 2.0 Image" (paired with image as the first frame). Any publicly reachable URL is accepted.

referenceImages
object[]

Reference images for reference-to-video models (titles ending in "Reference", e.g. "Seedance 2.0 Reference", "Kling O1 Reference", "Kling O3 Reference"). Used to keep characters/objects/style consistent across the generated video. Seedance 2.0 Reference accepts up to 9 images. Not used by text-to-video or image-to-video models.

Response

Video generation started

id
integer

Video ID. Use this to poll for the result with the Get Video endpoint.

prompt
string

The prompt used for generation

image_url
string

Video URL. Empty string while processing.

model
string

The model used for generation

is_video
boolean
created_at
string<date-time>