const express = require('express'); const LumaAI = require('lumaai'); // Initialize Express const app = express(); app.use(express.json()); // Initialize LumaAI client const client = new LumaAI({ authToken: 'YOUR_LUMA_API_KEY' // Replace with your real key }); // Endpoint to generate a video app.post('/api/generate-video', async (req, res) => { try { const { prompt } = req.body; // e.g., "A futuristic city skyline at sunset" // Create a Dream Machine generation const generation = await client.generations.create({ prompt, model: 'ray-2', // or whichever model is recommended resolution: '720p', duration: '5s' }); // Poll until completed or failed let state = generation.state; while (state !== 'completed' && state !== 'failed') { await new Promise(resolve => setTimeout(resolve, 5000)); // Wait 5 seconds const updated = await client.generations.get({ id: generation.id }); state = updated.state; if (state === 'completed') { return res.json({ videoUrl: updated.assets.video }); } else if (state === 'failed') { return res.status(500).json({ error: 'Generation failed' }); } } } catch (error) { console.error(error); res.status(500).json({ error: error.message }); } }); // Serve your website from the "public" folder (optional) app.use(express.static('public')); // Start the server const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server listening on port ${PORT}`); });