Wan 3.0 Prime
alibaba/wan-3.0-prime/image-to-video- Alibaba
- Image to video
Animate a reference image into a video, guided by a text prompt.
API
https://open.scenepond.ai/v1Authenticate every request with Authorization: Bearer and your Scenepond API key. Keep the key on your server.
Copy the complete model reference, including every published protocol, for your AI assistant.
/v1/tasksRequest parameters
| Parameter | Required | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
model | Required | string | Use this exact public model ID. Constraints
| ||||||||||||||||||||||||||||||||||||||||||||
parameters | Required | object | Generation parameters for this model. | ||||||||||||||||||||||||||||||||||||||||||||
These fields apply when parameters is supplied. A required child does not make its optional parent required.
| |||||||||||||||||||||||||||||||||||||||||||||||
Request notes
- Images and videos use the same task API. Select a model; channel selection is automatic.
- Authenticate every request with Authorization: Bearer and your Scenepond API key. Keep the key on your server.
- Submit once, save task_id, then poll until succeeded or failed. Download results from the artifacts endpoint.
- Creation returns the task ID after acceptance. Some tasks may already be complete when the ID is returned.
- Accepted submissions return HTTP 202 with Location: /v1/tasks/{task_id}.
- Generated artifacts are stored for 14 days. Download them before expires_at; expired artifacts cannot be recovered.
- Do not automatically resubmit a timed-out POST. It may already have created a billable task.
- Parameters and limits vary by model. Only the fields listed for this model are accepted.
- Generated images and videos are stored for 14 days. Download and save them before expiry.
- Each stored artifact includes expires_at, its expiry time as a Unix timestamp in seconds. Use that value for each file; do not calculate expiry from the task creation time.
- Some older results may omit expires_at. This does not mean unlimited storage; download them as soon as possible.
- After expiry, content requests authenticated with an API key (without an access query parameter) return HTTP 410 with code artifact_expired. Private access links may return 404 for unavailable content. Expired files cannot be downloaded or recovered.
- Keep content_url private. Saving a link does not preserve the file; download the actual bytes to your own storage before expires_at.
Minimum request
1curl --fail-with-body -X POST "https://open.scenepond.ai/v1/tasks" \
2 -H "Authorization: Bearer $SCENEPOND_API_KEY" \
3 -H "Content-Type: application/json" \
4 --data-binary @- <<'JSON'
5{
6 "model": "alibaba/wan-3.0-prime/image-to-video",
7 "parameters": {
8 "image_urls": [
9 "https://example.com/reference.png"
10 ]
11 }
12}
13JSONRun this example in a shell with cURL installed. Set SCENEPOND_API_KEY before running.
Illustrative responses
Response examples show the structure only. IDs, URLs, and values are placeholders.
Submission response
1{
2 "task_id": "task_EXAMPLE",
3 "model": "alibaba/wan-3.0-prime/image-to-video",
4 "status": "queued",
5 "progress": 0,
6 "created_at": 1700000000,
7 "finished_at": 0,
8 "error": null,
9 "links": {
10 "self": "/v1/tasks/task_EXAMPLE",
11 "artifacts": "/v1/tasks/task_EXAMPLE/artifacts"
12 }
13}Completed task status
1{
2 "task_id": "task_EXAMPLE",
3 "model": "alibaba/wan-3.0-prime/image-to-video",
4 "status": "succeeded",
5 "progress": 100,
6 "created_at": 1700000000,
7 "finished_at": 1700000060,
8 "error": null,
9 "links": {
10 "self": "/v1/tasks/task_EXAMPLE",
11 "artifacts": "/v1/tasks/task_EXAMPLE/artifacts"
12 }
13}Artifact listing
1{
2 "task_id": "task_EXAMPLE",
3 "artifacts": [
4 {
5 "key": "video",
6 "type": "video",
7 "mime_type": "video/mp4",
8 "content_url": "https://open.scenepond.ai/v1/tasks/task_EXAMPLE/artifacts/video/content",
9 "expires_at": 1701209660
10 }
11 ]
12}Expired artifact response (API key authentication)
1{
2 "error": {
3 "message": "Artifact content has expired or is no longer available",
4 "type": "artifact_expired",
5 "code": "artifact_expired"
6 }
7}Follow-up requests
2. Check task status
Poll every few seconds until succeeded or failed.
1curl --fail-with-body -X GET "https://open.scenepond.ai/v1/tasks/$SCENEPOND_TASK_ID" \
2 -H "Authorization: Bearer $SCENEPOND_API_KEY"Run this example in a shell with cURL installed. Set SCENEPOND_API_KEY before running.
3. Get the results
After succeeded, list artifacts and download each content_url with the same API key.
1curl --fail-with-body -X GET "https://open.scenepond.ai/v1/tasks/$SCENEPOND_TASK_ID/artifacts" \
2 -H "Authorization: Bearer $SCENEPOND_API_KEY"Run this example in a shell with cURL installed. Set SCENEPOND_API_KEY before running.
4. Download before expiry
Set SCENEPOND_TASK_ID to task_id and SCENEPOND_ARTIFACT_KEY to artifacts[].key. Download the binary file before expires_at. The content endpoint supports GET, HEAD, and Range requests; saving content_url alone does not save the media.
1curl --fail-with-body --output output.bin -X GET "https://open.scenepond.ai/v1/tasks/$SCENEPOND_TASK_ID/artifacts/$SCENEPOND_ARTIFACT_KEY/content" \
2 -H "Authorization: Bearer $SCENEPOND_API_KEY"Run this example in a shell with cURL installed. Set SCENEPOND_API_KEY before running.
Error codes
| Status | Next step |
|---|---|
400 | Check the model ID, required fields, types, and allowed parameter values. |
401 | Check the API key and whether it is enabled. |
403 | Check key restrictions and model permissions. |
410 | artifact_expired: the stored media has expired or is no longer available. Use a previously downloaded copy; retrying cannot restore an expired file. |
429 | Respect the returned retry delay and lower your request rate. |
5xx | Inspect the error response. Avoid blindly retrying paid generation requests. |
Generated artifacts are stored for 14 days. Download them before expires_at; expired artifacts cannot be recovered.
A failed task can return generation_failed without a detailed cause. Inspect the returned error and usage record before resubmitting.