Authentication
A Bearer token in the Authorization header. Create keys in Settings and revoke any of them at any time.
Authorization: Bearer ai_live_...Images, video, audio and 3D behind one API, paid from the same balance as the studio. Create a key in Settings; the CLI is coming soon.
The Airogenia CLI is on its way. This page previews how it will work; until then, use the API.
npm i -g @airogenia/cliSwap the model ID to switch between image, video and speech. The fields follow the model.
1import { writeFile } from "node:fs/promises";2 3const API = "https://airogenia.com/api/v1/api/catalog";4const auth = { Authorization: `Bearer ${process.env.AIROGENIA_API_KEY}` };5 6// 1. Generate an image7const res = await fetch(`${API}/generations`, {8 method: "POST",9 headers: { ...auth, "Content-Type": "application/json", "Idempotency-Key": crypto.randomUUID() },10 body: JSON.stringify({11 modelId: "luma/uni-v1/text-to-image",12 inputs: { prompt: "Neon city street after rain, cinematic night", size: "16:9" },13 }),14});15let { generation } = await res.json();16 17// 2. Wait for the result18while (generation.status === "queued" || generation.status === "generating") {19 await new Promise((r) => setTimeout(r, 3000));20 ({ generation } = await (await fetch(`${API}/generations/${generation.id}`, { headers: auth })).json());21}22 23// 3. Save the file24const file = await fetch(`${API}/generations/${generation.id}/content`, { headers: auth });25await writeFile("result.jpeg", Buffer.from(await file.arrayBuffer()));
export AIROGENIA_API_KEY="ai_live_..."npm i -g @airogenia/cliairogenia run luma/uni-v1/text-to-image -p "violet neon fox" -o ./out/Run any model from a shell, a CI job or a coding agent. Every render is priced before it starts and drawn from the same balance.
airogenia loginPaste your API key once; it is checked and savedairogenia whoamiThe key's name and your balanceairogenia models --type videoEvery video model with its starting priceairogenia run <model> -hA model's fields, fetched live: type, default, allowed valuesairogenia run <model> -p "<prompt>" -o ./out/Render and save the result in a folderairogenia run <model> -p "..." --dry-runThe exact price, without spending anythingairogenia run <model> -p "..." --max-price 0.50Refuse to run if the price is higherairogenia run <model> -p "..." --json -o ./out/One JSON result, ready for the next stepairogenia skill installTeach your coding agent to use the CLIA Bearer token in the Authorization header. Create keys in Settings and revoke any of them at any time.
Authorization: Bearer ai_live_...Starting a render answers at once with status queued. Poll the render until it has succeeded, failed or been refunded.
{ "status": "queued" }Ask for the exact price of your inputs without starting anything. Every amount is in euro cents.
POST /api/v1/api/catalog/quoteSend an Idempotency-Key header and a retried request never charges twice.
Idempotency-Key: render-042Each key has a per-minute limit and an optional daily cap. Past the limit the API answers 429.
429 Too Many RequestsJSON errors with a code and a message. A render that fails is refunded to your balance automatically.
{ "status": "refunded" }/meYour key and balance/modelsEvery model/models/detail?id=MODEL_IDOne model and its fields/quotePrice for exact inputs/generationsStart a render/generationsYour recent renders/generations/IDOne render's status/generations/ID/contentThe result file/generations/IDDelete a renderTop up €3 and ship today
Create an API key in Settings and call any model. The CLI is coming soon. Failed renders are refunded.