WAN 2.2 Video Generator API
Transform static images into dynamic videos with AI-powered motion using the WAN 2.2 model. Create smooth, high-quality videos from a single image with customizable duration, resolution, and motion parameters. Perfect for social media, presentations, and creative content.
Quick Start
Transform images into videos in seconds
Get Your API Key
Sign in to your account to get your API key and see it automatically filled in all code examples.
Don't have an account? Sign up for free
import requests
# Create your first AI video from image
response = requests.post(
"https://netwrck.com/api/wan",
json={
"api_key": "YOUR_API_KEY",
"image_url": "https://netwrckstatic.netwrck.com/static/uploads/aiartstation-art-aesthetic-character-elf-masculine-confident-engaging-wow-3.webp",
"prompt": "The character moves forward with dramatic lighting and camera movement",
"num_frames": 81,
"resolution": "720p"
}
)
result = response.json()
print(f"Video created: {result['result']['video']['url']}")
print(f"Used prompt: {result['result']['prompt']}")
// Create your first AI video from image
fetch('https://netwrck.com/api/wan', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
api_key: 'YOUR_API_KEY',
image_url: 'https://netwrckstatic.netwrck.com/static/uploads/aiartstation-art-aesthetic-character-elf-masculine-confident-engaging-wow-3.webp',
prompt: 'The character moves forward with dramatic lighting and camera movement',
num_frames: 81,
resolution: '720p'
})
})
.then(res => res.json())
.then(result => {
console.log('Video created:', result.result.video.url);
console.log('Used prompt:', result.result.prompt);
})
.catch(error => console.error('Error:', error));
# Create your first AI video from image
curl -X POST https://netwrck.com/api/wan \
-H 'Content-Type: application/json' \
-d '{
"api_key": "YOUR_API_KEY",
"image_url": "https://netwrckstatic.netwrck.com/static/uploads/aiartstation-art-aesthetic-character-elf-masculine-confident-engaging-wow-3.webp",
"prompt": "The character moves forward with dramatic lighting and camera movement",
"num_frames": 81,
"resolution": "720p"
}'
Authentication
All API requests require your API key. Sign in to get your API key and see it automatically filled in all code examples.
{
"api_key": "YOUR_API_KEY"
}
Pricing & Credits
Cost Per Video
$0.30 USD
Flat rate per video
Billing Policy
Success: Credits charged
Failed: No charge
Only pay for successful generations
Typical Costs
- All resolutions: $0.30 per video
API Reference
POST /api/wan
Transform static images into dynamic videos with AI-powered motion
Request Format
Send a POST request with a JSON body containing these parameters:
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
api_key | string | Required | Your API key obtained from your account page |
image_url | string | Required | URL of the input image. The image will be resized and center cropped if it doesn't match the aspect ratio |
prompt | string | Required | Text prompt to guide video generation. Describe the motion and camera movement you want |
num_frames | integer | Optional | Number of frames to generate (81-121). Default: 81 |
frames_per_second | integer | Optional | Frames per second (4-60). Default: 16 |
resolution | string | Optional | Video resolution: "480p", "580p", or "720p". Default: "720p" |
aspect_ratio | string | Optional | Aspect ratio: "auto", "16:9", "9:16", or "1:1". Default: "auto" |
negative_prompt | string | Optional | Negative prompt for video generation. Default: "" |
seed | integer | Optional | Random seed for reproducibility. Random if not specified |
num_inference_steps | integer | Optional | Number of inference steps (higher = better quality but slower). Default: 27 |
guidance_scale | float | Optional | Guidance scale (higher = stronger prompt adherence). Default: 3.5 |
enable_safety_checker | boolean | Optional | Enable content safety checking. Default: true |
interpolator_model | string | Optional | Frame interpolation model: "none", "film", or "rife". Default: "film" |
num_interpolated_frames | integer | Optional | Number of interpolated frames between each pair (0-4). Default: 1 |
Complete Code Examples
import requests
import json
url = "https://netwrck.com/api/wan"
api_key = "YOUR_API_KEY"
payload = {
"api_key": api_key,
"image_url": "https://netwrckstatic.netwrck.com/static/uploads/aiartstation-art-aesthetic-character-elf-masculine-confident-engaging-wow-3.webp",
"prompt": "The character moves forward with dramatic lighting",
"num_frames": 81,
"resolution": "720p",
"frames_per_second": 16,
"aspect_ratio": "16:9"
}
try:
response = requests.post(url, json=payload, timeout=300)
response.raise_for_status()
result = response.json()
print("Video generated successfully!")
print(f"Video URL: {result['result']['video']['url']}")
print(f"Seed: {result['result']['seed']}")
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
if hasattr(e, 'response') and e.response:
print(f"Response: {e.response.text}")
const url = 'https://netwrck.com/api/wan';
const apiKey = 'YOUR_API_KEY';
const payload = {
api_key: apiKey,
image_url: 'https://netwrckstatic.netwrck.com/static/uploads/aiartstation-art-aesthetic-character-elf-masculine-confident-engaging-wow-3.webp',
prompt: 'The scene comes to life with gentle movement',
num_frames: 81,
resolution: '720p',
aspect_ratio: '16:9'
};
fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
return response.json();
})
.then(data => {
console.log('Video generated successfully!');
console.log('Video URL:', data.result.video.url);
console.log('Seed:', data.result.seed);
})
.catch(error => console.error('Error:', error));
const axios = require('axios');
const url = 'https://netwrck.com/api/wan';
const apiKey = 'YOUR_API_KEY';
const payload = {
api_key: apiKey,
image_url: 'https://netwrckstatic.netwrck.com/static/uploads/aiartstation-art-aesthetic-character-elf-masculine-confident-engaging-wow-3.webp',
prompt: 'Camera pans across the landscape revealing stunning details',
num_frames: 81,
resolution: '720p',
aspect_ratio: '16:9'
};
axios.post(url, payload, {
headers: { 'Content-Type': 'application/json' },
timeout: 300000 // 5 minutes
})
.then(response => {
console.log('Video generated successfully!');
console.log('Video URL:', response.data.result.video.url);
console.log('Seed:', response.data.result.seed);
})
.catch(error => {
console.error('Error:', error.response ? error.response.data : error.message);
});
curl -X POST \
https://netwrck.com/api/wan \
-H 'Content-Type: application/json' \
-d '{
"api_key": "YOUR_API_KEY",
"image_url": "https://netwrckstatic.netwrck.com/static/uploads/aiartstation-art-aesthetic-character-elf-masculine-confident-engaging-wow-3.webp",
"prompt": "Slow zoom revealing epic landscape",
"num_frames": 81,
"resolution": "720p",
"aspect_ratio": "16:9"
}'
Response Examples
Success Response (200 OK)
{
"result": {
"video": {
"url": "https://v3.fal.media/files/lion/video_output.mp4"
},
"prompt": "The dragon warrior stands still, eyes full of determination. The camera slowly moves closer, highlighting the powerful presence",
"seed": 123456789
}
}
Error Responses
401 Unauthorized: Invalid API key.
{ "error": "Invalid API key", "status": 401 }
402 Payment Required: Insufficient credits.
{ "error": "Insufficient credits", "status": 402 }
400 Bad Request: Missing or invalid parameters.
{ "error": "Invalid image URL or prompt", "status": 400 }
500 Internal Server Error: Video generation failed.
{ "error": "Video generation service failed", "status": 500 }
Pro Tips for Better Videos
Motion Prompts
- Be specific about movement: "walks forward", "turns head slowly"
- Describe camera motion: "zoom in", "pan left", "dolly forward"
- Add atmosphere: "dramatic lighting", "misty fog", "particles floating"
- Specify pacing: "slow motion", "gentle movement", "dynamic action"
Settings Guide
- 720p: Best quality, higher cost
- 81 frames: ~5 seconds at 16fps
- 16fps: Smooth motion (recommended)
- Film interpolation: Better quality
Example Great Prompts
"The character slowly turns their head to look at the camera, soft lighting, cinematic"
"Camera slowly zooms in on the subject's eyes, dramatic lighting, particles floating in the air"
"The warrior raises their sword triumphantly, dynamic motion, epic fantasy scene"
"Gentle breathing animation, peaceful expression, subtle movement, portrait style"
Image Requirements
- Use high-quality images (minimum 512x512px)
- Clear subjects work best (portraits, characters, objects)
- Good contrast and lighting improve results
- Images will be automatically cropped to fit aspect ratio