Free to try Flux 3 Image-to-Video AI Model API by Black Forest Labs for native-audio animation, visual consistency, expressive motion, and synchronized scenes.
// Step 1: Submit generation request
const response = await fetch('https://api.flaq.ai/api/v1/video/task', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
model_name: 'flux-3.0-image-to-video',
prompt: 'A gentle camera push forward with natural subject motion',
resolution: '1080p',
aspect_ratio: '16:9',
image_url: 'https://example.com/first-frame.jpg',
duration: 10,
sound: true
})
});
const { data } = response.();
taskId = data.;
Black Forest Labs FLUX 3 Image-to-Video API transforms a source image into expressive motion with optional native audio. The model uses the supplied visual as the opening frame, then develops subject movement, camera behavior, atmosphere, and sound while preserving the image's core composition and identity cues. Best Image AI provides a production-ready API workflow for animating product photography, character art, campaign visuals, storyboards, and other static creative assets.
Note
Please ensure source images, prompts, and content generated with FLUX 3 comply with Black Forest Labs' usage and safety requirements. If a request fails, review the inputs for unsupported or restricted content and try again.
FLUX 3 Image-to-Video vs. FLUX 3 Text-to-Video
Text-to-Video begins from a written concept, while Image-to-Video anchors the generation to a supplied opening frame
for stronger control over composition, subject appearance, and visual style.
FLUX 3 vs. Veo 3.1 Image-to-Video
Veo 3.1 offers cinematic image animation and native audio through Google's video ecosystem. FLUX 3 provides a separate
API path emphasizing stylistic breadth, expressive characters, animated design, and unified audiovisual reasoning.
FLUX 3 vs. Kling 3.0 Image-to-Video
Kling 3.0 is known for controllable character and camera motion. FLUX 3 combines source-image guidance with optional
native sound, multilingual speech, and a multimodal understanding of movement and physical events.
FLUX 3 vs. Runway Gen-4.5 Image-to-Video
Runway Gen-4.5 focuses on visual fidelity, prompt adherence, and creative production tools. FLUX 3 adds a unified
video-audio workflow with broad aesthetic range and API-friendly source-image animation.
FLUX 3 vs. Seedance 2.0 Image-to-Video
Seedance 2.0 supports rich multimodal reference and editing workflows. FLUX 3 offers a focused opening-frame animation
route backed by unified image, video, and audio training.
// Step 2: Poll for results
const taskId = data.task_id;
const pollResult = async (taskId) => {
const res = await fetch(`https://api.flaq.ai/api/v1/video/${taskId}`, {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
return res.json();
};
while (true) {
const pollResultData = await pollResult(taskId);
const status = pollResultData.data.task_status;
if (status === 'succeed') {
console.log(pollResultData.data.task_result.videos[0].url);
break;
}
if (status === 'failed') {
console.error(pollResultData.data.task_status_msg);
break;
}
await new Promise(resolve => setTimeout(resolve, 10000));
}
# Step 1: Submit generation request
import requests
response = requests.post(
'https://api.flaq.ai/api/v1/video/task',
headers={
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
json={
'model_name': 'flux-3.0-image-to-video',
'prompt': 'A gentle camera push forward with natural subject motion',
'resolution': '1080p',
'aspect_ratio': '16:9',
'image_url': 'https://example.com/first-frame.jpg',
'duration': 10,
'sound': True
}
)
result = response.json()
task_id = result['data']['task_id']
# Step 2: Poll for results
task_id = response.json()['data']['task_id']
poll_url = f"https://api.flaq.ai/api/v1/video/{task_id}"
while True:
poll_result = requests.get(poll_url, headers={'Authorization': 'Bearer YOUR_API_KEY'}).json()
status = poll_result['data']['task_status']
if status == 'succeed':
print(poll_result['data']['task_result']['videos'][0]['url'])
break
if status == 'failed':
print(poll_result['data']['task_status_msg'])
break
time.sleep(10)
# Step 1: Submit generation request
curl -X POST https://api.flaq.ai/api/v1/video/task \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model_name": "flux-3.0-image-to-video",
"prompt": "A gentle camera push forward with natural subject motion",
"resolution": "1080p",
"aspect_ratio": "16:9",
"image_url": "https://example.com/first-frame.jpg",
"duration": 10,
"sound": true
}'
# Step 2: Poll for results
# Replace {task_id} with the task_id returned from the submit response
curl -X GET "https://api.flaq.ai/api/v1/video/{task_id}" \
-H "Authorization: Bearer YOUR_API_KEY"