Skip to main content
POST
/
videos
/
frames
Generate a video that transitions between two frames
curl --request POST \
  --url http://localhost:3001/api/v1/videos/frames \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "startImage": "5c1e8b34-2a9f-4d61-8e07-3b2c1a0f9d4e",
  "endImage": "4d9c2b1a-7e6f-4a8b-9c2d-1f0e8a7b6c54",
  "prompt": "Smooth dolly from the wide shot to the close-up",
  "duration": 6,
  "aspectRatio": "16:9",
  "resolution": "720p"
}
'
{
  "data": {
    "id": "3f9a4c2e-7b1d-4e8a-9c3f-2a1b0c9d8e7f",
    "type": "image.generate",
    "status": "pending",
    "createdAt": "2026-06-16T10:00:00.000Z"
  }
}

Authorizations

x-api-key
string
header
required

Headers

Idempotency-Key
string

Optional unique key (≤255 chars) that makes this create idempotent: a retry with the same key returns the original job rather than starting a new one. Scoped to your API key; retained ~24h.

Maximum string length: 255

Body

application/json
startImage
string
required

The first frame of the clip.

Required string length: 1 - 2048
endImage
string
required

The last frame the clip transitions to.

Required string length: 1 - 2048
prompt
string
required

Describe the motion between the two frames. Up to 2000 characters.

Required string length: 1 - 2000
duration
integer
default:6

Clip length in seconds (4-15).

Required range: 4 <= x <= 15
resolution
enum<string>
default:720p

Output resolution. 720p costs more credits than 480p.

Available options:
480p,
720p
aspectRatio
enum<string>
default:auto

Aspect ratio of the output video. 'auto' matches the start frame.

Available options:
16:9,
9:16,
4:3,
3:4,
1:1,
21:9,
auto
audio
boolean
default:true

Generate audio for the clip.

negativePrompt
string

Describe what to avoid in the generation.

Maximum string length: 1000

Response

Accepted

data
object
required