Skip to main content
POST
Diese Seite gilt für die offiziellen Modelle grok-imagine-video und grok-imagine-video-1.5. Sie unterscheiden sich von grok-imagine-1.5-video-ext auf der bestehenden Generierungsseite; Modellnamen und Parameter dürfen nicht gemischt werden.
API-Keys dürfen niemals in Browser-Bundles, öffentlichen Umgebungsvariablen, LocalStorage, URLs oder Frontend-Logs stehen. Rufen Sie APIMart über Backend oder BFF auf.

Integrationsübersicht

Alle Modi verwenden denselben asynchronen Endpunkt:
Speichern Sie nach dem Senden data[0].task_id und fragen Sie dann ab:
Senden Sie nicht X-APIMart-Response-Version. Dieser Header wechselt zu einem HTTP-202-Schema; diese Seite verwendet die ältere asynchrone HTTP-200-Antwort.

Modellfunktionen

Der öffentliche Vertrag definiert keine feste Obergrenze für Referenzbilder. Verwenden Sie ein nicht leeres Array gültiger URLs in Originalreihenfolge und übernehmen Sie keine Limits der Bildmodelle.

Request-Header

string
erforderlich
Bearer <APIMART_API_KEY>
string
erforderlich
Immer application/json verwenden.
string
application/json
string
Idempotency-Key ist optional und für kostenpflichtige Generierung und Bearbeitung dringend empfohlen. Zulässig sind 1–191 sichtbare ASCII-Zeichen; empfohlen wird UUID. Netzwerk-Retries verwenden denselben Key und identischen Body. Bei unklarem Ergebnis keinen neuen Key verwenden.Für jede neue logische Aktion einen neuen Key verwenden. Ein Retry derselben Aktion muss Original-Key und identischen Body nutzen.

Anfrageparameter

Gemeinsame Felder

string
erforderlich
Offizieller Modellname; Videobearbeitung nur mit dem Basismodell
  • grok-imagine-video
  • grok-imagine-video-1.5
string
erforderlich
Nicht leere Anweisung, höchstens 8000 Unicode-ZeichenArray.from(prompt).length
boolean
Standard:false
Legt fest, ob vor dem Senden der Videoaufgabe eine Inhaltsprüfung erfolgt.
  • true: Prompt und Eingabebilder mit omni-moderation-latest prüfen
  • false oder nicht angegeben: Keine Prüfung anfordern; keine zusätzlichen Prüfkosten oder Verzögerung (Standard)

Generierungsfelder

integer
Standard:8
Nur Generierung; Ganzzahl 1–15, Standard 8
string
Standard:"480p"
Base: 480p/720p; 1.5: 480p/720p/1080p; Standard 480p
  • grok-imagine-video: 480p, 720p
  • grok-imagine-video-1.5: 480p, 720p, 1080p
string
Standard:"auto"
Nur Generierung; auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2 oder 2:3
  • auto
  • 1:1, 16:9, 9:16
  • 4:3, 3:4, 3:2, 2:3
string[]
Optionales Referenzbild-Array; jede Position ist eine öffentliche HTTPS-URL; bei leerer Auswahl Feld weglassen
  • Jeder Eintrag muss eine öffentlich erreichbare HTTPS-URL sein; relative URLs, Data URLs und rohes Base64 werden nicht unterstützt.
  • Keine Aliasfelder wie image, images oder input_reference senden.
  • Die Reihenfolge bleibt erhalten; doppelte URLs belegen mehrere Eingabeplätze und können mehrfach berechnet werden.

Felder der Videobearbeitung

object
Quellvideo {url} als öffentliche HTTPS-URL; nur Basismodell
Eine Videobearbeitung erfordert model, prompt und video; optional ist nsfw_check zulässig. Senden Sie weder duration, resolution, aspect_ratio noch image_urls; die Plattform erkennt die Quelldauer.

TypeScript-Anfragetypen

Eine diskriminierte Union verhindert, dass Generierungsfelder an die Videobearbeitung gesendet werden.

Anfragebeispiele

Asynchrone Aufgaben

Erstellung erfolgreich

Eine erfolgreiche Erstellung liefert HTTP 200. Speichern Sie data[0].task_id; die Übermittlung bedeutet noch nicht, dass das Video fertig ist. Eine Task-ID bedeutet gesendet, nicht abgeschlossen.

Task abfragen

Fragen Sie GET /v1/tasks/{task_id} alle 3–5 Sekunden ab. Nach Neuladen kann das Polling mit der gespeicherten Task-ID fortgesetzt werden.

Abgeschlossene Antwort

result.videos[0].url ist ein String-Array, kein einzelner String. Prüfen Sie jeden Wert vor der Anzeige als HTTPS-URL. Eine Laufzeitprüfung wird empfohlen:
Für den Ablauf ist expires_at maßgeblich. Keine feste Lebensdauer codieren; Benutzer zum Download oder Speichern auffordern.

Fehlerantwort

Eine Abfrage kann HTTP 200 liefern, obwohl data.status failed ist. Erfolg anhand von data.status bestimmen; fehlgeschlagene Tasks haben cost=0.

Preiskatalog

Lesen Sie GET /api/pricing/models/all und suchen Sie das Modell nach id in data.models.video. Preise sind Schätzungen; maßgeblich ist data.cost der Task-Antwort.

Preis des Ausgabevideos

  • Preisschlüssel sind 480P/720P/1080P, Anfragewerte klein geschrieben; beim Nachschlagen normalisieren.
  • default sind Kompatibilitätsdaten und keine wählbare Auflösung.
  • after_discount direkt verwenden; Rabatt nicht erneut anwenden.

Preis des Eingabematerials

Der Videoeingabepreis ist ein skalares Objekt. items, billing_mode oder max_billable_seconds nicht verlangen. 1.5 hat keinen Videoeingabepreis.

Schätzformeln

Benutzerspezifische Preise und Serverrundung können abweichen. Endgültig ist immer Task-data.cost.

Frontend-Regeln

Modellwechsel

  • Base zeigt nur 480p/720p; 1.5 zusätzlich 1080p.
  • Wechsel von 1.5 1080p zu Base fällt auf 480p zurück.
  • Videobearbeitung fixiert grok-imagine-video.

Moduswechsel

nsfw_check ist in jedem Modus optional. Bei aktivierter Prüfung true senden; andernfalls weglassen oder false senden. Deaktivieren Sie die Ausführung, wenn eine dieser Bedingungen erfüllt ist:
  • Textmodus lässt image_urls und video weg.
  • Referenzmodus sendet image_urls und lässt video weg.
  • Videobearbeitung löscht alle reinen Generierungsfelder.
  • Bei leerem/zu langem Prompt, ungültiger Dauer, Auflösung, Material-URL, laufendem Upload oder Doppelsenden deaktivieren.
  • Prompt auf 8000 Unicode-Zeichen, Dauer auf Ganzzahl 1–15 begrenzen.
  • Nur öffentliche HTTPS-URLs verwenden; leeres image_urls weglassen.

Häufige Fehler

Frontend-Checkliste

  • API-Key nur im Backend oder BFF speichern.
  • Offizielle Modellnamen nicht mit grok-imagine-1.5-video-ext mischen.
  • Prompt auf 8000 Unicode-Zeichen, Dauer auf Ganzzahl 1–15 begrenzen.
  • Nur öffentliche HTTPS-URLs verwenden; leeres image_urls weglassen.
  • Für Videobearbeitung nur model/prompt/video plus optionales nsfw_check und das Basismodell verwenden.
  • Beim Senden data[0].task_id, Endstatus aus data.status lesen.
  • Ausgabe aus result.videos[].url[] lesen und expires_at beachten.
  • Katalogpreise anzeigen, finalen Betrag aus Task-data.cost lesen.