Image6 credits / image
Krea 2
Krea 2 is Krea’s aesthetic-first image model, tuned to avoid the generic “AI look” with opinionated color, light, and composition straight out of the prompt.
// 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": "krea_2",
"prompt": "Fashion editorial: model in a sculptural crimson gown standing alone in white sand dunes, surreal minimal composition, vast sky. 35mm film still, soft natural light, muted earth tones with one crimson accent, shallow depth of field, subtle film grain, candid and unposed, no text, logos, or watermark.",
"aspect_ratio": "1:1"
};
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
Example
Krea 2: Desert couture
Price
6 credits / image. Check the exact cost for your settings before generating. Failed generations are refunded. Full price sheet.