Create Video
Start a video generation. Returns a task to poll.
Video is asynchronous: this call returns immediately with a task id, and you poll GET /v1/videos/tasks/{id} until it succeeds or fails.
Image-to-video models need an image_url your account generated. Failed generations are refunded automatically.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your SpicyAPI key (sk-spicy-…). Create one in the dashboard under API Keys.
Body
application/jsonA video model id, e.g. spicy-pov-missionary-1.
What should happen in the clip.
First frame; must be one of your generated images. Required where requires_image is true. Optional on spicy-motion-3 and spicy-motion-3-fast, which generate from text alone when it is omitted.
One of the model's limits.resolutions from GET /v1/models: 720P or 1080P on the wan2.x models, 480P, 720P or 1080P on spicy-motion-3 and spicy-motion-3-fast. Defaults to 720P.
Seconds, between the model's minDuration and maxDuration (2 to 15 on the wan2.x models, 2 to 30 on spicy-motion-3 and spicy-motion-3-fast). Defaults to 5.
What to avoid.
Generate audio where the model supports it.
Reproducibility seed.
Response
200 — application/jsonSuccessful Response
A task you can poll.
Task id — pass to GET /v1/videos/tasks/{id}.
Always task.
Always video.
The model generating the clip.
queued, processing, finalizing, succeeded, or failed.
Null until the task succeeds.
Why the task failed, when it did.
What this request cost, in US dollars, already debited from your balance.
Was this page helpful?
curl --request POST \
--url https://api.spicyapi.com/v1/videos/generations \
--header 'Authorization: Bearer $SPICYAPI_KEY' \
--header 'Content-Type: application/json' \
--data '{
"model": "spicy-pov-missionary-1",
"prompt": "slow build, steady rhythm",
"image_url": "https://cdn.spicyapi.com/outputs/a1b2/req_8f2a91c4-0.png",
"resolution": "720P",
"duration": 5
}'{
"id": "task_5d9e2f10",
"object": "task",
"type": "video",
"model": "spicy-pov-missionary-1",
"status": "queued",
"output": null,
"error": null,
"cost_usd": 0.875
}