Ir para o conteúdo principal

Documentação

Documentação da API

Crie sua primeira imagem em quatro passos. A API fica em https://api.cheapvids.com e toda chamada precisa da sua chave de API.

Os guias detalhados e a referência da API estão disponíveis apenas em inglês.

Início rápido

1. Obtenha uma chave de API

As chaves de API são liberadas após o seu primeiro pagamento em USDT. Crie uma na página de desenvolvedor da sua conta; ela é exibida uma única vez, então guarde-a em uma variável de ambiente. Mantenha-a no seu servidor.

2. Crie uma geração

Envie o modelo, o prompt e o grupo a ser cobrado. O parâmetro plan é obrigatório: "studio" ou "credits". O sistema nunca troca de grupo por você.

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. Leia o resultado

Aguarde com ?wait=60 até a geração ser concluída e então baixe o arquivo em output.url. O CheapVids repassa os resultados por um período limitado após a conclusão (24 horas por padrão), então baixe imediatamente.

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.png
import 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. Ou receba um webhook

Registre um endpoint HTTPS para receber os eventos generation.started, generation.completed e generation.failed, assinados com HMAC-SHA256. Cada evento é enviado no máximo 4 vezes: o primeiro envio e 3 novas tentativas após 10, 60 e 300 segundos.

X-CheapVids-Event: generation.completed
X-CheapVids-Delivery: 0190a1b2-0000-7000-8000-000000000001
X-CheapVids-Signature: t=1760000000,v1=64e08ed860b53ecdca19eb0ef68dccefd1c7f3135a0a0e273d34a878d48b8ed5

Ferramentas