Image to Video
Animate still images into dynamic video clips using each::sense — the intelligent AI agent that automatically selects the best model for your request.
Quick Start
Requires an each::labs API key. Get one at eachlabs.ai.
Using curl
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Animate this image: gentle wind blowing through the trees, leaves rustling, clouds drifting slowly across the sky, subtle camera push-in, cinematic, natural motion"},
{"type": "image_url", "image_url": {"url": "https://example.com/landscape-photo.jpg"}}
]
}
],
"stream": false
}'
Using Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
api_key="YOUR_EACHLABS_API_KEY",
base_url="https://eachsense-agent.core.eachlabs.run/v1"
)
response = client.chat.completions.create(
model="eachsense/beta",
messages=[{
"role": "user",
"content": "Animate this image: gentle wind blowing through the trees, leaves rustling, clouds drifting slowly across the sky, subtle camera push-in, cinematic, natural motion"
}],
# Images are included in the message content array above
)
print(response.choices[0].message.content)
Images are sent inside messages using the OpenAI multimodal content format. Maximum 4 images per request.
Streaming
Set "stream": true for real-time Server-Sent Events (SSE) responses, or "stream": false to receive the complete result in a single response. Streaming is useful for showing progress in UIs; non-streaming is simpler for scripts and automation.
Motion Types
| Motion |
Description |
Best Image Types |
| Environment Motion |
Wind, water, clouds, fire |
Landscapes, nature shots |
| Camera Movement |
Pan, zoom, orbit, push-in |
Any static scene |
| Character Motion |
Walking, turning, blinking |
Portraits, character art |
| Particle Effects |
Snow, rain, petals, sparks |
Outdoor scenes, moody shots |
| Subtle Animation |
Hair movement, fabric sway |
Fashion, portraits |
| Parallax |
2.5D depth movement |
Illustrations, layered scenes |
Examples
Portrait Animation
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Animate this portrait: the person slowly turns their head to face the camera, a subtle smile appears, hair moves gently as if in a light breeze, natural blinking, soft lighting remains consistent, cinematic"},
{"type": "image_url", "image_url": {"url": "https://example.com/portrait.jpg"}}
]
}
],
"stream": false
}'
Ocean Scene
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Animate this beach photo: ocean waves rolling in and crashing on the shore, foam sliding up the sand, seagulls flying in the background, palm trees swaying in wind, camera static, ambient natural motion"},
{"type": "image_url", "image_url": {"url": "https://example.com/beach-sunset.jpg"}}
]
}
],
"stream": false
}'
Illustration to Animation
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Animate this fantasy illustration: the dragon spreads its wings slowly, fire flickers from torches on the castle walls, clouds drift behind the mountains, magical sparkles float in the air, smooth animation, maintain the artistic style"},
{"type": "image_url", "image_url": {"url": "https://example.com/fantasy-castle.jpg"}}
]
}
],
"stream": false
}'
Product Reveal
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Animate this product photo: camera slowly orbits around the product, studio lighting highlights shift as the angle changes, reflections move on the surface, premium commercial feel, smooth 360-degree rotation"},
{"type": "image_url", "image_url": {"url": "https://example.com/product-hero.jpg"}}
]
}
],
"stream": false
}'
Prompt Tips
- Describe specific motions: "waves crashing," "hair blowing left," "slow zoom in" — vague prompts produce random movement
- Keep motion consistent with the image: Do not ask a sitting person to run; describe plausible motion
- Specify what stays still: "Camera static, only the water moves" prevents unwanted warping
- Mention style preservation: "Maintain the illustration style" for artwork, "keep photorealistic" for photos
- One primary motion focus: Videos look best when one main element moves rather than everything at once
- Add "smooth" and "natural": Prevents jittery or unnatural animation
Image Selection Tips
Best images for animation:
- Clear subjects with distinct foreground and background
- High resolution source images produce better video quality
- Simple compositions with one main subject
- Implied motion — images that suggest movement (a person mid-stride, flowing water)
Challenging images:
- Very busy/cluttered scenes
- Extreme close-ups with no environmental context
- Abstract art without clear subjects to animate
- Very low resolution images
Related Skills
Related Models
Documentation
1---2name: image-to-video3description: Animate still images into videos using each::sense AI. Bring photographs, illustrations, and artwork to life with motion, camera movements, and environmental effects. Transform static images into dynamic video clips with natural movement and cinematic quality. Use for: photo animation, artwork animation, social media content, living photos, cinemagraphs, animated illustrations. Triggers: image to video, animate image, img2vid, bring to life, animate photo, photo to video, living photo, moving image, animate picture, image animation, motion from image4---56# Image to Video78Animate still images into dynamic video clips using [each::sense](https://docs.eachlabs.ai/sense/overview) — the intelligent AI agent that automatically selects the best model for your request.910## Quick Start1112> Requires an each::labs API key. Get one at [eachlabs.ai](https://eachlabs.ai).1314### Using curl1516```bash17curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \18 -H "Content-Type: application/json" \19 -H "X-API-Key: $EACHLABS_API_KEY" \20 -d '{21 "messages": [22 {23 "role": "user",24 "content": [25 {"type": "text", "text": "Animate this image: gentle wind blowing through the trees, leaves rustling, clouds drifting slowly across the sky, subtle camera push-in, cinematic, natural motion"},26 {"type": "image_url", "image_url": {"url": "https://example.com/landscape-photo.jpg"}}27 ]28 }29 ],30 "stream": false31 }'32```3334### Using Python (OpenAI SDK)3536```python37from openai import OpenAI3839client = OpenAI(40 api_key="YOUR_EACHLABS_API_KEY",41 base_url="https://eachsense-agent.core.eachlabs.run/v1"42)4344response = client.chat.completions.create(45 model="eachsense/beta",46 messages=[{47 "role": "user",48 "content": "Animate this image: gentle wind blowing through the trees, leaves rustling, clouds drifting slowly across the sky, subtle camera push-in, cinematic, natural motion"49 }],50 # Images are included in the message content array above51)5253print(response.choices[0].message.content)54```5556> Images are sent inside messages using the OpenAI multimodal content format. Maximum 4 images per request.5758### Streaming5960Set `"stream": true` for real-time Server-Sent Events (SSE) responses, or `"stream": false` to receive the complete result in a single response. Streaming is useful for showing progress in UIs; non-streaming is simpler for scripts and automation.6162## Motion Types6364| Motion | Description | Best Image Types |65|--------|-------------|-----------------|66| **Environment Motion** | Wind, water, clouds, fire | Landscapes, nature shots |67| **Camera Movement** | Pan, zoom, orbit, push-in | Any static scene |68| **Character Motion** | Walking, turning, blinking | Portraits, character art |69| **Particle Effects** | Snow, rain, petals, sparks | Outdoor scenes, moody shots |70| **Subtle Animation** | Hair movement, fabric sway | Fashion, portraits |71| **Parallax** | 2.5D depth movement | Illustrations, layered scenes |7273## Examples7475### Portrait Animation7677```bash78curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \79 -H "Content-Type: application/json" \80 -H "X-API-Key: $EACHLABS_API_KEY" \81 -d '{82 "messages": [83 {84 "role": "user",85 "content": [86 {"type": "text", "text": "Animate this portrait: the person slowly turns their head to face the camera, a subtle smile appears, hair moves gently as if in a light breeze, natural blinking, soft lighting remains consistent, cinematic"},87 {"type": "image_url", "image_url": {"url": "https://example.com/portrait.jpg"}}88 ]89 }90 ],91 "stream": false92 }'93```9495### Ocean Scene9697```bash98curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \99 -H "Content-Type: application/json" \100 -H "X-API-Key: $EACHLABS_API_KEY" \101 -d '{102 "messages": [103 {104 "role": "user",105 "content": [106 {"type": "text", "text": "Animate this beach photo: ocean waves rolling in and crashing on the shore, foam sliding up the sand, seagulls flying in the background, palm trees swaying in wind, camera static, ambient natural motion"},107 {"type": "image_url", "image_url": {"url": "https://example.com/beach-sunset.jpg"}}108 ]109 }110 ],111 "stream": false112 }'113```114115### Illustration to Animation116117```bash118curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \119 -H "Content-Type: application/json" \120 -H "X-API-Key: $EACHLABS_API_KEY" \121 -d '{122 "messages": [123 {124 "role": "user",125 "content": [126 {"type": "text", "text": "Animate this fantasy illustration: the dragon spreads its wings slowly, fire flickers from torches on the castle walls, clouds drift behind the mountains, magical sparkles float in the air, smooth animation, maintain the artistic style"},127 {"type": "image_url", "image_url": {"url": "https://example.com/fantasy-castle.jpg"}}128 ]129 }130 ],131 "stream": false132 }'133```134135### Product Reveal136137```bash138curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \139 -H "Content-Type: application/json" \140 -H "X-API-Key: $EACHLABS_API_KEY" \141 -d '{142 "messages": [143 {144 "role": "user",145 "content": [146 {"type": "text", "text": "Animate this product photo: camera slowly orbits around the product, studio lighting highlights shift as the angle changes, reflections move on the surface, premium commercial feel, smooth 360-degree rotation"},147 {"type": "image_url", "image_url": {"url": "https://example.com/product-hero.jpg"}}148 ]149 }150 ],151 "stream": false152 }'153```154155## Prompt Tips156157- **Describe specific motions**: "waves crashing," "hair blowing left," "slow zoom in" — vague prompts produce random movement158- **Keep motion consistent with the image**: Do not ask a sitting person to run; describe plausible motion159- **Specify what stays still**: "Camera static, only the water moves" prevents unwanted warping160- **Mention style preservation**: "Maintain the illustration style" for artwork, "keep photorealistic" for photos161- **One primary motion focus**: Videos look best when one main element moves rather than everything at once162- **Add "smooth" and "natural"**: Prevents jittery or unnatural animation163164## Image Selection Tips165166Best images for animation:167- **Clear subjects** with distinct foreground and background168- **High resolution** source images produce better video quality169- **Simple compositions** with one main subject170- **Implied motion** — images that suggest movement (a person mid-stride, flowing water)171172Challenging images:173- Very busy/cluttered scenes174- Extreme close-ups with no environmental context175- Abstract art without clear subjects to animate176- Very low resolution images177178## Related Skills179180- [Text to Video](../text-to-video/SKILL.md) — Generate videos from text181- [AI Video Loop](../ai-video-loop/SKILL.md) — Create seamless loops182- [AI Slow Motion](../ai-slow-motion/SKILL.md) — Slow motion effects183- [AI Video Editor](../ai-video-editor/SKILL.md) — Edit video with AI184185## Related Models186187- [wan-2-1-14b](../../../models/wan-2-1-14b/SKILL.md) — High quality video generation188- [hailuo-minimax-video-01](../../../models/hailuo-minimax-video-01/SKILL.md) — Fast video generation189190## Documentation191192- [each::sense Overview](https://docs.eachlabs.ai/sense/overview)193- [each::labs API](https://docs.eachlabs.ai)