CheaperGen

Per iniziare

Guida rapida

Crea una chiave API, aggiungi crediti e genera il tuo primo video AI con JavaScript, Python o cURL in meno di due minuti.

Questa guida ti accompagna dall’inizio alla realizzazione di un video con Seedance 2.0 Fast. Gli stessi passaggi funzionano per ogni modello: cambiano solo l’endpoint e i campi di input.

Usi un agente di programmazione?

Incolla questo testo in Claude Code, Cursor, Codex o qualsiasi agente di programmazione. Aggiunge l’API al tuo progetto, conserva la chiave in CHEAPERGEN_API_KEY ed esegue una prova con un preventivo gratuito prima di spendere.

Add Seedance 2.0 Fast (CheaperGen endpoint bytedance/seedance-2.0-fast/text-to-video) to this project by following https://cheapergen.com/agents/integrate.md
Cosa legge il tuo agente
  1. Crea un account e una chiave API

    Accedi con Google o email, poi apri Dashboard → Chiavi API e crea una chiave. Ha il formato cg_live_… ed è mostrata una sola volta: copiala e conservala in un luogo sicuro.

  2. Aggiungi crediti

    CheaperGen è prepagato. Aggiungi crediti in Dashboard → Fatturazione. L'esempio qui sotto costa $0.45 — $0,605 a the official price. Le generazioni non riuscite vengono rimborsate automaticamente. Vedi Fatturazione e crediti.

  3. Imposta la chiave API

    Non inserire la chiave nel codice. Tutti gli esempi di questa documentazione la leggono da una variabile d'ambiente:

    export CHEAPERGEN_API_KEY="cg_live_..."
  4. Invia una generazione

    Invia gli input del modello a POST /api/v1/run/bytedance/seedance-2.0-fast/text-to-video. Gli script qui sotto inviano il job, fanno polling finché non termina e stampano l’URL del video.

    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/bytedance/seedance-2.0-fast/text-to-video`, {
      method: "POST",
      headers,
      body: JSON.stringify({
        "prompt": "Lento avvicinamento a un ceramista che modella un vaso all’ora dorata, polvere sospesa nella luce, profondità di campo ridotta",
        "aspect_ratio": "16:9",
        "resolution": "720p",
        "duration": 5
      }),
    }).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.video.url : job.error);

    L’API risponde subito con 202 Accepted e una generazione nello stato queued. Il prezzo mostrato in cost.amount_usd viene trattenuto dal saldo mentre il job è in esecuzione.

    202 Accepted
    {
      "id": "gen_8c2QmX1nq0k4Lw7Z",
      "object": "generation",
      "model": "bytedance/seedance-2.0-fast",
      "endpoint": "bytedance/seedance-2.0-fast/text-to-video",
      "mode": "text-to-video",
      "status": "queued",
      "input": {
        "prompt": "Lento avvicinamento a un ceramista che modella un vaso all’ora dorata, polvere sospesa nella luce, profondità di campo ridotta",
        "aspect_ratio": "16:9",
        "resolution": "720p",
        "duration": 5,
        "generate_audio": true
      },
      "output": null,
      "error": null,
      "cost": {
        "amount_usd": 0.4494,
        "currency": "usd",
        "estimated": true
      },
      "source": "api",
      "created_at": "2026-10-15T09:21:04.512Z",
      "started_at": null,
      "completed_at": null,
      "retention": "1d",
      "expires_at": null,
      "purged_at": null,
      "urls": {
        "get": "https://cheapergen.com/api/v1/generations/gen_8c2QmX1nq0k4Lw7Z",
        "cancel": "https://cheapergen.com/api/v1/generations/gen_8c2QmX1nq0k4Lw7Z/cancel"
      }
    }
  5. Ottieni il risultato

    Fai polling della generazione finché status non è succeeded o failed. I job video richiedono in genere da uno a pochi minuti; le immagini solo pochi secondi.

    curl https://cheapergen.com/api/v1/generations/gen_8c2QmX1nq0k4Lw7Z \
      -H "Authorization: Bearer $CHEAPERGEN_API_KEY"
    200 OK
    {
      "id": "gen_8c2QmX1nq0k4Lw7Z",
      "object": "generation",
      "model": "bytedance/seedance-2.0-fast",
      "endpoint": "bytedance/seedance-2.0-fast/text-to-video",
      "mode": "text-to-video",
      "status": "succeeded",
      "input": {
        "prompt": "Lento avvicinamento a un ceramista che modella un vaso all’ora dorata, polvere sospesa nella luce, profondità di campo ridotta",
        "aspect_ratio": "16:9",
        "resolution": "720p",
        "duration": 5,
        "generate_audio": true
      },
      "output": {
        "video": {
          "url": "https://cdn.cheapergen.com/outputs/gen_8c2QmX1nq0k4Lw7Z.mp4",
          "content_type": "video/mp4"
        }
      },
      "error": null,
      "cost": {
        "amount_usd": 0.4494,
        "currency": "usd",
        "estimated": false
      },
      "source": "api",
      "created_at": "2026-10-15T09:21:04.512Z",
      "started_at": "2026-10-15T09:21:09.031Z",
      "completed_at": "2026-10-15T09:22:31.870Z",
      "retention": "1d",
      "expires_at": "2026-10-16T09:22:31.870Z",
      "purged_at": null
    }

    Evita il polling con i webhook

    Aggiungi "webhook_url": "https://your-app.com/hooks/cheapergen" al corpo della richiesta e invieremo a quell’URL la generazione completata con POST. Consulta Webhook.

Passaggi successivi#

Qualcosa non è chiaro o manca? Scrivi a support@cheapergen.com: leggiamo ogni messaggio.