Zurück zur Dokumentation

Videogenerierungs-API

Erstelle Veo 3.1 Aufgaben für Text-zu-Video und Bild-zu-Video mit deinem API-Schlüssel und frage das Ergebnis über denselben /api/status Endpunkt ab, den du für Bilder nutzt.

Nano AI API Basis-URL: https://nanobnana.com

Authentifizierung

Sende deinen API-Schlüssel bei jeder Anfrage als Bearer-Token. Verwende denselben Schlüssel zum Erstellen einer Aufgabe und zum Abfragen ihres Status. Schlüssel erstellst du auf der Seite API Keys in deinem Dashboard.

http
Authorization: Bearer YOUR_API_KEY

Modelle und Credits

Setze das Feld model auf einen der folgenden Werte. Jeder andere Wert wird mit HTTP 400 abgelehnt, und es wird nichts abgebucht.

model-WertModellText zu Video (Credits)Bild zu Video (Credits)
veo3_fastVeo 3.1 Fast (Standard)2535
veo3Veo 3.1 Quality180180

veo3-fast wird als Alias von veo3_fast akzeptiert. Ohne model wird veo3_fast verwendet. Der Preis für Bild zu Video gilt, sobald image_urls mindestens eine URL enthält.

Videoaufgabe erstellen

Prüft die Anfrage, bucht Credits ab und gibt eine task_id zurück. Das Video wird asynchron erzeugt: Frage /api/status ab oder setze callback_url, um das Ergebnis zu erhalten.

AnfragekörperJSON
prompt:string

Textbeschreibung des zu erzeugenden Videos.

model:optionalstring

veo3_fast (Alias veo3-fast) oder veo3. Jeder andere Wert liefert HTTP 400. Standardwert veo3_fast.

image_urls:optionalstring[]

Öffentliche Bild-URLs für Bild zu Video. Mit 1 Bild entsteht das Video rund um dieses Bild. Mit 2 Bildern werden sie zum ersten und letzten Frame. imageUrls (camelCase) wird als Alias akzeptiert. Werden beide Felder gesendet, gilt image_urls.

aspect_ratio:optionalstring

16:9, 9:16 oder Auto. Auto schneidet das Video passend zum hochgeladenen Bild zu. Standardwert 16:9.

translation:optionalboolean

Bei true wird der Prompt vor der Generierung ins Englische übersetzt. Standardwert true.

watermark:optionalstring

Wasserzeichentext für das Video.

callback_url:optionalstring

Öffentliche URL, die nach Abschluss der Aufgabe eine POST-Anfrage mit dem Endergebnis erhält.

Nicht unterstützte Felder

duration, resolution und image_url (Einzahl) gehören nicht zu dieser API und werden ignoriert. Die Videolänge bestimmt das Modell. Übergib Bilder als Array image_urls.

bash
curl -X POST "https://nanobnana.com/api/video/generate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "The camera slowly pushes in as the city lights turn on at dusk",
    "model": "veo3_fast",
    "image_urls": ["https://example.com/first-frame.jpg"],
    "aspect_ratio": "16:9"
  }'
{
  "code": 200,
  "message": "success",
  "data": {
    "task_id": "veo24223f74e4f445ec9c4403b532cc328fbksv"
  }
}

Aufgabenstatus prüfen

Video-Task-IDs beginnen mit veo und enden mit bksv. /api/status erkennt sie automatisch und liefert die Video-URL, sobald die Aufgabe abgeschlossen ist.

Query-Parameter
task_id:string

Die task_id aus POST /api/video/generate.

model:optionalstring

Setze veo3, um eine Videoabfrage zu erzwingen, wenn die task_id nicht dem Format veo…bksv entspricht.

bash
curl "https://nanobnana.com/api/status?task_id=veo24223f74e4f445ec9c4403b532cc328fbksv" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "code": 200,
  "message": "success",
  "data": {
    "task_id": "veo24223f74e4f445ec9c4403b532cc328fbksv",
    "request": {
      "prompt": "The camera slowly pushes in as the city lights turn on at dusk",
      "model": "veo3_fast",
      "image_urls": [
        "https://example.com/first-frame.jpg"
      ],
      "aspect_ratio": "16:9"
    },
    "response": null,
    "status": "IN_PROGRESS",
    "status_code": 3,
    "status_text": "IN_PROGRESS",
    "consumed_credits": 35,
    "created_at": "2026-10-04 17:05:12",
    "model": "veo3"
  },
  "model": "veo3"
}

Statuswerte

  • IN_PROGRESS · status_code: 3 — das Video wird noch erzeugt. Frage weiter ab.
  • COMPLETED · status_code: 1 — das Video ist fertig. response enthält die Video-URL.
  • FAILED · status_code: 2 — die Generierung ist fehlgeschlagen. error_message nennt den Grund, und die Credits werden automatisch erstattet.

Abrechnung und Rückerstattungen

  • Credits werden beim Erstellen der Aufgabe abgebucht, bevor die Generierung beginnt.
  • Liefert die Erstellungsanfrage nicht HTTP 200, gibt es keine Aufgabe, und die abgebuchten Credits werden sofort erstattet. Die Antwort nennt die erstatteten Credits.
  • Endet eine erstellte Aufgabe später mit FAILED, werden ihre Credits automatisch erstattet, und consumed_credits in der Statusantwort wird 0.

Beispiel für die Abfrage

Die Videogenerierung dauert meist einige Minuten. Frage alle 10 Sekunden ab, solange status_code 3 ist, und höre bei 1 oder 2 auf.

javascript
async function waitForVideo(taskId) {
  while (true) {
    const res = await fetch(`https://nanobnana.com/api/status?task_id=${taskId}`, {
      headers: { Authorization: 'Bearer YOUR_API_KEY' }
    });
    const payload = await res.json();
    if (!res.ok) throw new Error(payload.message);

    const task = payload.data;
    if (task.status_code === 1) return task.response[0];
    if (task.status_code === 2) throw new Error(task.error_message || 'Video generation failed');

    await new Promise((resolve) => setTimeout(resolve, 10000));
  }
}

Callback

Wenn du callback_url setzt, senden wir beim Abschluss oder Fehlschlag der Aufgabe eine POST-Anfrage mit diesem JSON. Die URL muss aus dem öffentlichen Internet erreichbar sein.

{
  "code": 200,
  "message": "success",
  "data": {
    "request": {
      "prompt": "The camera slowly pushes in as the city lights turn on at dusk",
      "model": "veo3_fast",
      "image_urls": [
        "https://example.com/first-frame.jpg"
      ],
      "aspect_ratio": "16:9"
    },
    "response": [
      "https://example.com/generated-video.mp4"
    ],
    "status": "COMPLETED",
    "created_at": "2026-10-04 17:05:12"
  }
}

Häufige Fehler

{
  "code": 400,
  "message": "prompt is required",
  "data": null
}