Come usare l’API di MOSS Image
Una guida passo passo all’API di MOSS Image con Node.js, Python e cURL: invia un job da testo a immagine, controllane lo stato o ricevi un webhook e scarica il image. L’esempio qui sotto costa $0,039.
- Endpoint
- 1
- Da testo a immagine
- Richiesta di esempio
- $0,039
- Da testo a immagine
- Linguaggi
- 3
- Node.js · Python · cURL
- Generazioni non riuscite
- $0
- rimborsate automaticamente
Ottieni una chiave API
Crea un account, aggiungi crediti e crea una chiave nella Dashboard → Chiavi API. Salvala come CHEAPERGEN_API_KEY sul tuo server. Ogni richiesta la invia come token Bearer.
Scegli un endpoint MOSS Image
Ogni attività ha il proprio endpoint. Tutti accettano un corpo JSON e restituiscono una generazione di cui puoi controllare lo stato.
| Attività | Endpoint | Obbligatorio | Da |
|---|---|---|---|
| Da testo a immagine | openmoss/moss-image/text-to-image | prompt | $0,0384 per immagine |
Invia un job da testo a immagine
Questo programma invia il job, controlla ogni 3 secondi finché non termina e stampa l’URL image. Sostituisci il prompt e le impostazioni con i tuoi.
const API = "https://cheapergen.com/api/v1";
const headers = {
Authorization: `Bearer ${process.env.CHEAPERGEN_API_KEY}`,
"Content-Type": "application/json",
};
// 1. Submit the job
let job = await fetch(`${API}/run/openmoss/moss-image/text-to-image`, {
method: "POST",
headers,
body: JSON.stringify({
"prompt": "Insegna di legno dipinta a mano davanti a una sala da tè, con la scritta “山间茶舍 MOUNTAIN TEA HOUSE — OPEN DAILY 9–6”, nella nebbia mattutina e con luce calda.",
"aspect_ratio": "1:1",
"resolution": "1K"
}),
}).then((r) => r.json());
// 2. Poll until it finishes (or pass webhook_url and skip polling)
while (job.status === "queued" || job.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
job = await fetch(`${API}/generations/${job.id}`, { headers }).then((r) => r.json());
}
console.log(job.status === "succeeded" ? job.output.images[0].url : job.error);Imposta i parametri rilevanti
Le impostazioni di openmoss/moss-image/text-to-image e il loro effetto sul prezzo.
| Parametro | Tipo · predefinito | Descrizione | Effetto sul prezzo |
|---|---|---|---|
| aspect_ratio | string (enum) · 1:1 | Dimensioni dell’immagine generata. In 1K: 1:1 = 1024 × 1024, 4:5 = 912 × 1136, 5:4 = 1136 × 912, 3:4 = 880 × 1168, 4:3 = 1168 × 880, 2:3 = 832 × 1248, 3:2 = 1248 × 832, 9:16 = 768 × 1360, 16:9 = 1360 × 768, 1:2 = 720 × 1440, 2:1 = 1440 × 720, 9:21 = 656 × 1552, 21:9 = 1552 × 656, 1:3 = 576 × 1760, 3:1 = 1760 × 576. 1:1 · 4:5 · 5:4 · 3:4 · 4:3 · 2:3 · 3:2 · 9:16 · 16:9 · 1:2 · 2:1 · 9:21 · 21:9 · 1:3 · 3:1 | 1:1: $0,0384 per immagine |
| resolution | string (enum) · 1K | Dimensioni del risultato, allo stesso prezzo per ogni proporzione: in 1:1, 1K = 1 MP (1024 × 1024), 1.5K ≈ 2.25 MP (1536 × 1536), 2K = 4 MP (2048 × 2048), con 1 MP = 1024² px. Le altre proporzioni mantengono lo stesso numero di pixel: ogni lato è il lato corrispondente in 1:1 × √proporzione, arrotondato per difetto al multiplo di 16 (per esempio, 2K in 16:9 = 2720 × 1536). 1K · 1.5K · 2K | 1K: $0,0384 per immagine 1.5K: $0,0826 per immagine 2K: $0,1534 per immagine |
| seed | integer | Usa lo stesso seed e le stesse impostazioni per riprodurre un risultato. Lascia vuoto per un valore casuale. | Nessuno |
| enable_safety_checker | boolean · true | Se impostato su true, il controllo di sicurezza è attivo. I contenuti vietati dalla nostra Politica di utilizzo accettabile restano bloccati in ogni caso. | Nessuno |
Ottieni il risultato
Un job passa da queued a running, poi a succeeded, failed o canceled. Interroga GET /api/v1/generations/{id} oppure imposta webhook_url: invieremo il risultato con POST. Scarica l’output e conservalo tu.
{
"id": "gen_8c2QmX1nq0k4",
"object": "generation",
"model": "openmoss/moss-image",
"endpoint": "openmoss/moss-image/text-to-image",
"mode": "text-to-image",
"status": "succeeded",
"input": {
"prompt": "Insegna di legno dipinta a mano davanti a una sala da tè, con la scritta “山间茶舍 MOUNTAIN TEA HOUSE — OPEN DAILY 9–6”, nella nebbia mattutina e con luce calda.",
"aspect_ratio": "1:1",
"resolution": "1K"
},
"output": {
"images": [
{
"url": "https://cdn.cheapergen.com/outputs/gen_8c2Q-0.png",
"content_type": "image/png",
"width": 2048,
"height": 2048
}
]
},
"error": null,
"cost": {
"amount_usd": 0.2255,
"currency": "usd",
"estimated": false,
"official_usd": 0.264,
"list_price_source": "reference",
"list_price_label": "fal API",
"saved_usd": 0.0385
},
"source": "api",
"created_at": "2026-10-15T09:21:04Z",
"started_at": "2026-10-15T09:21:06Z",
"completed_at": "2026-10-15T09:22:31Z"
}Calcola il prezzo prima dell'avvio
L'endpoint dei preventivi è gratuito e non richiede una chiave. Restituisce il prezzo, il prezzo fal API e lo sconto applicato per l'input esatto che invii.
curl -X POST https://cheapergen.com/api/v1/quote/openmoss/moss-image/text-to-image \
-H "Content-Type: application/json" \
-d '{"prompt":"Insegna di legno dipinta a mano davanti a una sala da tè, con la scritta “山间茶舍 MOUNTAIN TEA HOUSE — OPEN DAILY 9–6”, nella nebbia mattutina e con luce calda.","aspect_ratio":"1:1","resolution":"1K"}'| Stato | Codice | Descrizione |
|---|---|---|
| 400 | invalid_request | Manca un parametro o il suo valore è fuori intervallo: il messaggio indica quale. |
| 401 | unauthorized | Chiave API mancante, non valida o revocata. |
| 402 | insufficient_balance | Crediti insufficienti per il prezzo indicato; aggiungine altri o attiva la ricarica automatica. |
| 429 | rate_limited | Troppe richieste o generazioni in corso: attendi e riprova con backoff. |
| 502 | upstream_error | Il fornitore del modello ha avuto un errore; l'importo bloccato viene rimborsato e puoi riprovare. |
| 503 | model_unavailable | Al momento non ci sono percorsi di elaborazione disponibili: riprova più tardi o scegli un altro modello. |
FAQ
