async function generateVideo(prompt, options = {}) {
// Submit job
const submitResponse = await fetch('https://api.withperf.pro/v1/video/generations', {
method: 'POST',
headers: {
'Authorization': 'Bearer pk_live_abc123',
'Content-Type': 'application/json'
},
body: JSON.stringify({ prompt, ...options })
});
const job = await submitResponse.json();
console.log('Job submitted:', job.id);
// Poll for completion
while (true) {
const statusResponse = await fetch(
`https://api.withperf.pro/v1/video/generations/${job.id}`,
{ headers: { 'Authorization': 'Bearer pk_live_abc123' } }
);
const status = await statusResponse.json();
console.log('Status:', status.status);
if (status.status === 'complete') {
return status.video_url;
}
if (status.status === 'failed') {
throw new Error(status.error_message);
}
// Wait 5 seconds before next poll
await new Promise(resolve => setTimeout(resolve, 5000));
}
}
// Usage
const videoUrl = await generateVideo(
'A cat playing piano in a jazz club, cinematic lighting',
{ model: 'runway-gen3', duration_seconds: 8 }
);
console.log('Video ready:', videoUrl);