Documentación
Documentación de la API
Crea tu primera imagen en cuatro pasos. La API está en https://api.cheapvids.com y cada llamada necesita tu clave de API.
Inicio rápido
1. Obtén una clave de API
Las claves de API se habilitan después de tu primer pago en USDT. Crea una en la página de desarrollador de tu cuenta; se muestra una sola vez, así que guárdala en una variable de entorno. Mantenla en tu servidor.
2. Crea un trabajo
Envía el modelo, el prompt y el grupo al que se cobrará. El parámetro plan es obligatorio: "studio" o "credits". El sistema nunca cambia de grupo por ti.
curl https://api.cheapvids.com/v1/generations \
-H "Authorization: Bearer $CHEAPVIDS_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"plan":"credits","model":"nano-banana-2","params":{"prompt":"A lighthouse at dusk"}}'3. Lee el resultado
Espera con ?wait=60 hasta que el trabajo se complete y luego descarga el archivo desde output.url. CheapVids retransmite los resultados durante un período limitado tras la finalización (24 horas por defecto), así que descárgalos de inmediato.
curl "https://api.cheapvids.com/v1/generations/$GENERATION_ID?wait=60" \
-H "Authorization: Bearer $CHEAPVIDS_API_KEY"
# status "completed": download output.url right away
curl -L "$OUTPUT_URL" -o result.pngimport os, uuid, requests
API = "https://api.cheapvids.com/v1"
s = requests.Session()
s.headers["Authorization"] = f"Bearer {os.environ['CHEAPVIDS_API_KEY']}"
body = {"plan": "credits", "model": "nano-banana-2", "params": {"prompt": "A lighthouse at dusk"}}
r = s.post(f"{API}/generations", json=body, headers={"Idempotency-Key": str(uuid.uuid4())}, timeout=120)
r.raise_for_status()
job = r.json()
while job["status"] not in ("completed", "failed", "cancelled"):
r = s.get(f"{API}/generations/{job['id']}", params={"wait": 60}, timeout=90)
r.raise_for_status()
job = r.json()
if job["status"] == "completed":
r = s.get(f"{API}/generations/{job['id']}/content", timeout=120)
r.raise_for_status()
open("result.png", "wb").write(r.content)import { writeFile } from "node:fs/promises";
const API = "https://api.cheapvids.com/v1";
const auth = { Authorization: "Bearer " + process.env.CHEAPVIDS_API_KEY };
async function call(path, init = {}) {
const res = await fetch(API + path, { ...init, headers: { ...auth, ...init.headers } });
if (!res.ok) throw new Error(res.status + " " + (await res.text()));
return res;
}
const body = { plan: "credits", model: "nano-banana-2", params: { prompt: "A lighthouse at dusk" } };
let job = await (await call("/generations", {
method: "POST",
headers: { "Content-Type": "application/json", "Idempotency-Key": crypto.randomUUID() },
body: JSON.stringify(body),
})).json();
while (!["completed", "failed", "cancelled"].includes(job.status)) {
job = await (await call("/generations/" + job.id + "?wait=60")).json();
}
if (job.status === "completed") {
const res = await call("/generations/" + job.id + "/content");
await writeFile("result.png", Buffer.from(await res.arrayBuffer()));
}4. O recibe un webhook
Registra un endpoint HTTPS para recibir los eventos generation.started, generation.completed y generation.failed, firmados con HMAC-SHA256. Cada evento se envía como máximo 4 veces: el primer envío y 3 reintentos a los 10, 60 y 300 segundos.
X-CheapVids-Event: generation.completed
X-CheapVids-Delivery: 0190a1b2-0000-7000-8000-000000000001
X-CheapVids-Signature: t=1760000000,v1=64e08ed860b53ecdca19eb0ef68dccefd1c7f3135a0a0e273d34a878d48b8ed5
