const API = "https://api.studio.thezet.io/v1";
const headers = { Authorization: `Bearer ${process.env.ZET_API_KEY}` };
async function generate(body: object, idempotencyKey: string) {
const started = await fetch(`${API}/generations`, {
method: "POST",
headers: { ...headers, "Content-Type": "application/json", "Idempotency-Key": idempotencyKey },
body: JSON.stringify(body),
});
let job = await started.json();
if (!started.ok) throw new Error(`${job.error.code}: ${job.error.message}`);
while (!job.terminal) {
await new Promise((resolve) => setTimeout(resolve, 5_000));
job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}
if (job.status !== "succeeded") throw new Error(`${job.error?.code ?? job.status}`);
return job.outputs;
}