How to Create Video from Image
Animate a still image into video. In Get3W this is the first-to-video run type — your image becomes the first frame.
Quick Start
Video takes longer than images, so submit asynchronously and poll:
bash
curl -X POST "https://api.get3w.com/v1/kling/kling-3/first-to-video" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://your-cdn.com/your-image.png",
"prompt": "A person slowly turning their head and smiling",
"duration": 5,
"resolution": "1080p"
}'python
import time
import requests
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
task = requests.post(
"https://api.get3w.com/v1/kling/kling-3/first-to-video",
headers=headers,
json={
"image_url": "https://your-cdn.com/your-image.png",
"prompt": "A person slowly turning their head and smiling",
"duration": 5,
"resolution": "1080p"
}
).json()
time.sleep(task.get("estimated_duration") or 30)
while True:
data = requests.get(
f"https://api.get3w.com/v1/requests/{task['id']}",
headers=headers
).json()
if data["status"] == "completed":
print(data["outputs"][0])
break
if data["status"] == "failed":
print(f"Failed ({data['code']}):", data["error"])
break
time.sleep(5)Choosing a Model
| Slug | Notes |
|---|---|
google/veo-3.1/first-to-video | Highest quality, native audio |
google/veo-3.1-fast/first-to-video | Faster and cheaper Veo |
kling/kling-3/first-to-video | Strong motion, reliable |
kling/kling-3-turbo/first-to-video | Faster Kling |
bytedance/seedance-2.5/first-to-video | Good prompt adherence |
alibaba/wan-3/first-to-video | General purpose |
minimax/hailuo-2.3/first-to-video | Creative, expressive motion |
runway/gen-4.5/first-to-video | Cinematic look |
Common Parameters
| Parameter | Type | Description |
|---|---|---|
image_url | string | URL of the first frame |
prompt | string | Description of the desired motion |
duration | integer | Video length in seconds |
resolution | string | Output resolution, e.g. 720p, 1080p |
seed | integer | Seed for reproducibility |
Supported durations and resolutions vary per model. Both affect price.
Related Run Types
| Run type | Use when |
|---|---|
first-to-video | You have one image to animate |
first-last-to-video | You have a start and end frame to interpolate between |
reference-to-video | You want to guide the video with reference images |
text-to-video | You have no source image |
Swap the run type in the path and adjust the inputs — for example first-last-to-video takes both a first and last frame.
Workflow
- Host your image at a publicly reachable URL — the provider fetches it directly
- Pick a model based on quality, speed, and cost
- Write a motion prompt describing movement, not just the scene
- Submit and poll, or pass
?webhook=to get a callback instead - Download the output before it expires
Tips
- Describe motion, not content — the image already establishes the scene, so the prompt should say what moves
- Keep motion plausible — motion that contradicts the image tends to produce artifacts
- Start short — validate at 5s before paying for longer clips
- Use webhooks for batches — polling many long video tasks in parallel gets unwieldy fast
Next Steps
- How to Generate Speech — Add narration
- How to Create a Digital Human — Talking avatars
- Webhook Mode — Skip polling