const API_KEY = process.env.MODELHUNTER_KEY;
const BASE = 'https://api.modelhunter.ai/api/v1';
// 1. Submit a generation request
const response = await fetch(`${BASE}/vidu/text-to-video`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'viduq3-turbo',
input: {
prompt: 'A futuristic city at sunset, flying cars, neon lights',
duration: 4,
aspect_ratio: '16:9',
resolution: '1080p',
},
}),
});
const task = await response.json();
const taskId = task.data.id;
console.log('Task ID:', taskId);
// 2. Poll until complete
let result;
while (true) {
await new Promise(r => setTimeout(r, 3000)); // wait 3s
const poll = await fetch(`${BASE}/tasks/${taskId}`, {
headers: { 'Authorization': `Bearer ${API_KEY}` },
}).then(r => r.json());
console.log('Status:', poll.data.status);
if (poll.data.status === 'succeeded') {
result = poll.data;
break;
}
if (poll.data.status === 'failed') {
throw new Error(poll.data.error?.message || 'Task failed');
}
}
console.log('Video URL:', result.result[0].url);