Videofrom 9 credits / second
LTX-2.5 Fast
LTX-2.5 Fast is Lightricks’ open audio-video model, generating 6 to 20 second clips with native synchronized audio included at every resolution, from text or a start image.
// Node.js. Running this creates one paid generation.
import { randomUUID } from 'node:crypto';
const base = "https://www.made.app/api";
const headers = {
Authorization: `Bearer ${process.env.MADE_API_KEY}`,
'Content-Type': 'application/json',
};
const input = {
"model": "ltx_2_5_fast",
"prompt": "A hand drops the needle onto a spinning vinyl record in a warm-lit listening room, crackle giving way to soft jazz, the camera pushing in past the tonearm.",
"duration": 6,
"resolution": "720p",
"aspect_ratio": "16:9"
};
async function api(path, body) {
const response = await fetch(base + path, {
method: body ? 'POST' : 'GET', headers,
...(body && { body: JSON.stringify(body) }),
});
if (!response.ok) throw new Error(await response.text());
return response.json();
}
const { cost } = await api('/v1/cost', input);
console.log('Quoted cents:', cost.customerCostCents);
// Preserve this request ID when retrying a submission.
const requestId = randomUUID();
let job = await api('/v1/generations', {
...input, request_id: requestId,
max_cost_cents: cost.customerCostCents,
});
console.log('Request:', job.id);
while (!['succeeded', 'failed', 'canceled'].includes(job.status)) {
await new Promise(resolve => setTimeout(resolve, 3000));
job = await api('/v1/generations/' + job.id);
}
if (job.status !== 'succeeded') throw new Error(JSON.stringify(job.error || job.status));
console.log(job.result.assets);Input
Uses your credits. See the exact price before generating.
Result
ExampleMotion study with audio
Price
from 9 credits / second. 720p 9 credits/s · 1080p 13 credits/s · 1440p 19 credits/s · 2160p 30 credits/s · 6s at 720p = 54 credits Check the exact cost for your settings before generating. Failed generations are refunded. Full price sheet.