
Grok Imagine Image 2.0 API mit EvoLink nutzen
POST /v1/images/generations mit model: "grok-imagine-image-2.0" senden, die zurückgegebene Aufgabe id speichern und dann GET /v1/tasks/{task_id} abfragen, bis die Aufgabe completed oder failed erreicht.image_urls weg, um aus Text zu generieren. Fügen Sie ein bis drei öffentliche Bild-URLs hinzu, die Sie bearbeiten oder aus Referenzen zusammenstellen können. Für aktuelle Preise und interaktive Tests verwenden Sie die Grok Imagine Image 2.0-Modellseite. Dieser Artikel konzentriert sich auf den Anwendungsfluss, die Fehlerbehandlung, die Speicherung und das Modell-Fallback, anstatt die vollständige Parameterreferenz zu duplizieren.Was Sie bauen werden
Am Ende des Leitfadens kann Ihre Anwendung:
- Erstellen Sie eine Text-zu-Bild-Aufgabe.
- Wechseln Sie zur Referenzbearbeitung, ohne die Modell-IDs zu ändern;
- Verwenden Sie indizierte Referenzen in einer Eingabeaufforderung mit mehreren Bildern.
- Verfolgen Sie eine asynchrone Aufgabe anhand der ID.
- einen Abschlussrückruf sicher annehmen;
- Ergebnisse beibehalten, bevor ihre 24-Stunden-URLs ablaufen;
- Endverbrauch und Rückerstattungen für fehlgeschlagene Aufgaben abgleichen;
- Übergabe an eine Ausweichroute, wenn die Arbeitslast oder das Aufgabenergebnis dies erfordern.
Bevor Sie beginnen
| Artikel | Aktueller EvoLink-Vertrag |
|---|---|
| Basis-URL | https://api.evolink.ai |
| Aufgabe erstellen | POST /v1/images/generations |
| Abfrageaufgabe | GET /v1/tasks/{task_id} |
| Authentifizierung | Authorization: Bearer YOUR_API_KEY |
| Modell | grok-imagine-image-2.0 |
| Text-zu-Bild | Lassen Sie image_urls weg |
| Bildbearbeitung | Geben Sie 1–3 öffentliche HTTP/HTTPS-Bild-URLs an |
| Ausgabe | 1K/2K, Niedrig/Mittel, n=1-10 |
| Verarbeitung | Asynchrone Aufgabe |
| Ergebnislebensdauer | 24 Stunden |
Schritt 1: Bewahren Sie den API-Schlüssel serverseitig auf
Legen Sie für einen Shell-Test den Schlüssel in einer Umgebungsvariablen fest:
export EVOLINK_API_KEY="your_api_key"${EVOLINK_API_KEY}. Ersetzen Sie ihn nicht durch einen echten Schlüssel im Code, der festgeschrieben wird.Schritt 2: Erstellen Sie eine Text-zu-Bild-Aufgabe
image_urls weg:curl --request POST "https://api.evolink.ai/v1/images/generations" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"model": "grok-imagine-image-2.0",
"prompt": "Editorial product photograph of a teal glass perfume bottle on pale limestone, warm coastal morning light, restrained luxury art direction, no text or logos",
"size": "1:1",
"resolution": "1K",
"quality": "medium",
"n": 1
}'id sofort:{
"id": "task-unified-1757156493-imcg5zqt",
"model": "grok-imagine-image-2.0",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"type": "image",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 3.06,
"user_group": "default"
}
}Der oben angegebene Reservierungswert ist ein Dokumentationsbeispiel, kein Preisversprechen und keine endgültige Gebühr. Nutzen Sie die aktuelle Modellseite für Live-Preise und die Terminal-Task-Antwort für die endgültige Nutzung.
Schritt 3: Fragen Sie die asynchrone Aufgabe ab

id an den Aufgabenendpunkt an. Schließen Sie den Wert nicht in geschweifte Klammern ein:curl --request GET \
"https://api.evolink.ai/v1/tasks/task-unified-1757156493-imcg5zqt" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}"processing, completed oder failed. Eine vollständige Antwort umfasst results, den strukturierten result_data und den endgültigen usage:{
"id": "task-unified-1757156493-imcg5zqt",
"model": "grok-imagine-image-2.0",
"object": "image.generation.task",
"progress": 100,
"status": "completed",
"results": ["https://cdn.evolink.ai/images/generated-image.jpg"],
"result_data": [
{
"url": "https://cdn.evolink.ai/images/generated-image.jpg",
"mime_type": "image/jpeg"
}
],
"type": "image",
"usage": {
"credits_used": 3.06,
"cost": {
"credits": 3.06,
"cny": 0.31,
"usd": 0.05
}
}
}Diese numerischen Werte sind Beispielantwortwerte. Notieren Sie die von Ihrer eigenen Terminalaufgabe zurückgegebenen Werte. Verwenden Sie dieses Beispiel nicht zur Berechnung der Kundenabrechnung.
Schritt 4: Kontrolliertes Polling hinzufügen
Die Abfrage sollte bei einem Terminalstatus angehalten, zwischen Anfragen unterbrochen und ein Anwendungs-Timeout erzwungen werden. Das folgende serverseitige TypeScript-Beispiel hält den Aufgabenworkflow explizit:
type GrokTaskStatus = "processing" | "completed" | "failed";
type GrokTask = {
id: string;
status: GrokTaskStatus;
progress: number;
results?: string[];
error?: {
code: string;
message: string;
type: "task_error";
};
};
const API_BASE_URL = "https://api.evolink.ai";
async function getTask(apiKey: string, taskId: string): Promise<GrokTask> {
const response = await fetch(`${API_BASE_URL}/v1/tasks/${taskId}`, {
headers: { Authorization: `Bearer ${apiKey}` },
cache: "no-store",
});
if (!response.ok) {
throw new Error(`Task query failed with HTTP ${response.status}`);
}
return response.json() as Promise<GrokTask>;
}
async function waitForTask(
apiKey: string,
taskId: string,
timeoutMs = 180_000,
): Promise<GrokTask> {
const startedAt = Date.now();
let intervalMs = 2_000;
while (Date.now() - startedAt < timeoutMs) {
const task = await getTask(apiKey, taskId);
if (task.status === "completed" || task.status === "failed") {
return task;
}
await new Promise((resolve) => setTimeout(resolve, intervalMs));
intervalMs = Math.min(Math.round(intervalMs * 1.5), 10_000);
}
throw new Error("Grok Imagine Image 2.0 task timed out in the application");
}Ein Anwendungs-Timeout ist kein Beweis dafür, dass die Upstream-Aufgabe fehlgeschlagen ist. Bevor Sie die Generierung erneut versuchen, fragen Sie die ursprüngliche Aufgabe erneut ab oder verwenden Sie eine Idempotenzstrategie in Ihrer eigenen Jobschicht. Andernfalls kann ein Client-Timeout zu doppelten abrechenbaren Aufgaben führen.
Schritt 5: Wechseln Sie zur Einzelreferenzbearbeitung
image_urls hinzu, um den Modus zu wechseln. Eingabebilder müssen über HTTP oder HTTPS öffentlich zugänglich sein; Base64- und Daten-URLs werden vom aktuellen Vertrag nicht unterstützt. Unterstützte Erweiterungen sind JPEG, JPG, PNG und WebP.curl --request POST "https://api.evolink.ai/v1/images/generations" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"model": "grok-imagine-image-2.0",
"prompt": "Move the chair into a quiet rain-soaked garden room. Preserve the chair shape, teal upholstery, camera angle, and scale. Change only the environment and reflected light.",
"image_urls": [
"https://example.com/chair.webp"
],
"size": "4:3",
"resolution": "1K",
"quality": "medium",
"n": 1
}'Ihre Anwendung sollte Anzahl, Protokoll, Dateityp und Servererreichbarkeit überprüfen, bevor Sie eine kostenpflichtige Aufgabe erstellen. Auf eine URL, die in einem angemeldeten Browser funktioniert, kann der Generierungsdienst möglicherweise immer noch nicht zugreifen.
Schritt 6: Mit mehreren Referenzen verfassen
image_urls zugeordnet.curl --request POST "https://api.evolink.ai/v1/images/generations" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"model": "grok-imagine-image-2.0",
"prompt": "Place the person from <IMAGE_0> in the architectural setting from <IMAGE_1>, carrying the blue sculptural bag from <IMAGE_2>. Preserve the outfit silhouette and match the late-afternoon direction of light.",
"image_urls": [
"https://example.com/person.webp",
"https://example.com/location.webp",
"https://example.com/bag.webp"
],
"size": "3:4",
"resolution": "2K",
"quality": "medium",
"n": 1
}'Speichern Sie die genaue Array-Reihenfolge mit der Eingabeaufforderung. Wenn eine Benutzeroberfläche es jemandem ermöglicht, Uploads neu anzuordnen, aktualisieren Sie die Array- und Indexbezeichnungen zusammen.
Schritt 7: Wählen Sie Parameter nach Workflow-Phase aus
auto, 1K/2K-Auflösung, niedrige/mittlere Qualität und n=1-10.| Parameter | Nutzen Sie es, um zu entscheiden | Produktionsregel |
|---|---|---|
size | Lieferform oder Modell ausgewählt auto | Vor dem Absenden anhand der dokumentierten Verhältnisaufzählung validieren |
resolution | 1K-Entwurf/Überprüfung vs. 2K-Lieferkandidat | Senden Sie kein 4K; Die Route unterstützt dies nicht |
quality | Niedrig für eine schnellere/kostengünstigere Erkundung, im Vergleich zu Mittel für mehr Details | Bewerten Sie die Stufe anhand des tatsächlichen Akzeptanzkriteriums |
n | Anzahl unabhängiger Ausgänge | Begrenzen Sie die Kosten pro Produktaktion und Budget, da jede Ausgabe unabhängig abgerechnet wird |
image_urls | Nur-Text-Generierung vs. Referenzbearbeitung | Bei Text-zu-Bild vollständig weglassen; Akzeptieren Sie höchstens drei URLs |
Verwenden Sie eine Anforderungszulassungsliste, anstatt beliebiges Client-JSON direkt an die API zu übergeben. Dadurch wird verhindert, dass nicht unterstützte Felder, übermäßige Batches oder interne Rückruf-URLs die Route erreichen.
Schritt 8: Rückrufe für den Produktionsabschluss verwenden
callback_url, wenn Ihre Anwendung einen öffentlichen HTTPS-Endpunkt verfügbar machen kann:{
"model": "grok-imagine-image-2.0",
"prompt": "A clean ecommerce product scene with soft daylight",
"callback_url": "https://your-domain.com/webhooks/evolink/image-task"
}Der aktuelle Vertrag besagt, dass Rückrufe nach der Rechnungsbestätigung gesendet werden, wenn eine Aufgabe abgeschlossen, fehlgeschlagen oder abgebrochen ist. EvoLink wartet bis zu 10 Sekunden und kann einen fehlgeschlagenen Rückruf nach 1, 2 und 4 Sekunden dreimal wiederholen. Eine 2xx-Antwort markiert den erfolgreichen Versand.
Entwerfen Sie den Empfänger idempotent:
- Authentifizieren Sie die Anfrage mithilfe des Mechanismus, den Ihr EvoLink-Konto und die Webhook-Einrichtung unterstützen.
- Validieren Sie die Aufgaben-ID und das erwartete Modell.
- Upsert nach Aufgaben-ID, anstatt bei jeder Lieferung ein neues Ergebnis einzufügen;
- Rückkehr 2xx nach dauerhafter Persistenz;
- Langsame Downloads und Überprüfungsarbeiten in eine Warteschlange verschieben;
- Führen Sie die Abfrage als Wiederherstellungspfad fort, wenn die Webhook-Zustellung nicht bestätigt werden kann.
Die Rückruf-URL muss HTTPS verwenden und darf nicht auf localhost, private IP-Bereiche oder eine interne Dienstadresse verweisen.
Schritt 9: Ergebnisse speichern, bevor sie ablaufen
Fertiggestellte Bild-URLs bleiben 24 Stunden lang verfügbar. Behandeln Sie sie als Übertragungs-URLs und nicht als permanenten Anwendungsspeicher.
Nach Fertigstellung:
- Überprüfen Sie, ob die Aufgabe zum aktuellen Konto und Job gehört.
- Laden Sie jeden Artikel in
resultsoderresult_dataherunter; - Inhaltstyp und Dateigröße validieren;
- Speichern Sie die Datei in Ihrem eigenen Objektspeicher.
- Speichern Sie die permanente URL und den Inhalts-Hash;
- Notieren Sie die Generierungsparameter und überprüfen Sie den Status.
- Wenden Sie Ihre Aufbewahrungs- und Löschrichtlinie auf Referenzeingaben und -ausgaben an.
n größer als eins ist, erwarten Sie unabhängige Ergebnis-URLs in der Generierungsreihenfolge. Behalten Sie nicht nur das erste Element bei, es sei denn, Ihr Produkt wählt absichtlich ein Ergebnis aus.Schritt 10: Fehler und Abrechnung korrekt behandeln
Die Erstellungsantwort reserviert möglicherweise Credits, aber die Abrechnungswahrheit ist die Terminalnutzung. Gemäß dem Aufgabenvertrag von
| Ergebnis | Anwendungsaktion | Abrechnungsaktion |
|---|---|---|
completed | Behalten Sie jedes Ergebnis bei, führen Sie Abnahmeprüfungen durch und markieren Sie den Auftrag als abgeschlossen | Speichern Sie den endgültigen usage und die Kostenaufschlüsselung |
failed mit wiederholbarem Infrastrukturfehler | Wenden Sie ein begrenztes Backoff an oder leiten Sie es zu einem verifizierten Fallback weiter | Bestätigen Sie, dass die endgültige Gebühr Null ist/erstattet wird |
failed mit Inhaltsrichtlinienfehler | Zeigen Sie eine umsetzbare Eingabeaufforderung/Eingabemeldung an. Versuchen Sie es nicht blind erneut | Bestätigen Sie die Rückerstattung und bewahren Sie den Fehlercode auf |
| Zeitüberschreitung bei der Anwendungsabfrage | Fragen Sie dieselbe Aufgabe erneut ab, bevor Sie eine andere erstellen | Gehen Sie nicht davon aus, dass eine Zeitüberschreitung eine Rückerstattung oder einen Fehler bedeutet |
| Ungültige Anfrage vor der Aufgabenerstellung | Validierung oder Berechtigungen korrigieren | Es gibt keine asynchrone Aufgabe zum Abgleichen |
failed-Status auf API-Ebene.Behandeln Sie HTTP-Fehler auf Anforderungsebene vor der Abfrage
Einige Fehler treten auf, bevor eine asynchrone Aufgabe erstellt wird. Die aktuelle API-Referenz dokumentiert diese Antworten auf Anfrageebene:
| HTTP-Status | Dokumentierte Bedeutung | Reaktion der Anwendung |
|---|---|---|
400 | Ungültige Anforderungsparameter oder Format | Überprüfen Sie die Anforderungszulassungsliste, erforderliche Felder, Aufzählungen, URL-Anzahl und JSON-Form, bevor Sie es erneut versuchen |
401 | Authentifizierungsfehler | Überprüfen Sie, ob der Server einen gültigen Bearer-Schlüssel gesendet hat. Legen Sie den Schlüssel niemals in Client-Protokollen offen |
402 | Unzureichendes Kontingent | Stoppen Sie automatische Wiederholungsversuche und weisen Sie den Kontoinhaber an, das Budget aufzuladen oder anzupassen |
403 | Zugriff verweigert | Überprüfen Sie Konto- oder Routenberechtigungen, anstatt die Eingabeaufforderung blind zu ändern |
429 | Anforderungsratenlimit überschritten | Wenden Sie begrenzte exponentielle Backoff- und Warteschlangenarbeit an. fächern Sie keine sofortigen Wiederholungsversuche auf |
500 | Interner Serverfehler | Versuchen Sie es nur im Rahmen einer begrenzten Infrastrukturrichtlinie erneut und verwenden Sie dann einen verifizierten Fallback, wenn der Job dies zulässt |
id zurückgegeben hat. Bei Fehlern auf Anforderungsebene gibt es keine asynchrone Aufgabe zum Abfragen oder Erstattungsdatensatz zum Abgleichen.Schritt 11: Fallback-Routing hinzufügen

Die Integration sollte den Produktauftrag von der anbieterspezifischen Modell-ID trennen:
type ImageRoute = "grok-imagine-image-2.0" | "gpt-image-2";
type ImageJob = {
prompt: string;
imageUrls: string[];
requiresMask: boolean;
requires4K: boolean;
};
function chooseImageRoute(job: ImageJob): ImageRoute {
if (job.requiresMask || job.requires4K || job.imageUrls.length > 3) {
return "gpt-image-2";
}
return "grok-imagine-image-2.0";
}Bei diesem Beispiel handelt es sich um eine Startrichtlinie auf Vertragsebene und nicht um die Behauptung, dass ein Modell bessere Bilder produziert. Fügen Sie Ihre eigenen Akzeptanzdaten, Latenz-, Kosten-, Moderations- und Verfügbarkeitsbeobachtungen hinzu, bevor Sie sinnvollen Datenverkehr weiterleiten.
Checkliste für die Produktionsübergabe
- API-Schlüssel, der in einem serverseitigen Secret-Manager gespeichert ist. – [ ] Die Zulassungsliste für den Anforderungstext entspricht den aktuellen EvoLink-Dokumenten.
- Die Modell-ID ist in der Routenkonfiguration zentralisiert.
- Referenzbilder sind öffentlich, validiert und auf drei begrenzt.
- Multireferenzindizes entsprechen der beibehaltenen Eingabereihenfolge.
- Die Abfrage stoppt, wenn sie abgeschlossen/fehlgeschlagen ist, und verwendet Backoff.
- Anwendungs-Timeouts führen nicht automatisch zu doppelten Aufgaben.
- Die Rückrufverarbeitung ist idempotent und schnell.
- Ergebnisdateien werden vor Ablauf der 24 Stunden kopiert.
- Die endgültige Nutzung wird getrennt von den reservierten Credits gespeichert.
- Rückerstattungen für fehlgeschlagene Aufgaben werden abgeglichen.
- Wiederholbare und nicht wiederholbare Fehler werden getrennt.
- Es gibt eine getestete Fallback-Route für erforderliche Funktionen oder Ausfälle.
- Protokolle schließen API-Schlüssel und vertrauliche Referenz-URLs aus.
Häufig gestellte Fragen
Welcher Endpunkt erstellt eine Grok Imagine Image 2.0-Aufgabe?
POST https://api.evolink.ai/v1/images/generations mit Bearer-Authentifizierung und den erforderlichen Feldern model und prompt.Welche Modell-ID soll ich senden?
grok-imagine-image-2.0 für die aktuelle EvoLink-Route.Wie wechsle ich von der Generierung zur Bearbeitung?
image_urls für Text-zu-Bild weg oder übergeben Sie ein bis drei URLs zur Bearbeitung.Kann ich Base64-Bilddaten senden?
Nein. Der aktuelle Vertrag akzeptiert öffentlich zugängliche HTTP- oder HTTPS-URLs und unterstützt keine Base64- oder Daten-URLs.
Wie frage ich das Ergebnis ab?
id und senden Sie dann GET https://api.evolink.ai/v1/tasks/{task_id} mit demselben Bearer-Authentifizierungsmuster.Soll ich eine Umfrage durchführen oder einen Rückruf nutzen?
Verwenden Sie Rückrufe für den normalen Produktionsabschluss und die Abfrage als Wiederherstellungspfad. Ein einfacher serverseitiger Prototyp kann mit Backoff-Polling beginnen.
Wie lange bleiben ausgefüllte Bildlinks gültig?
Die aktuelle Dokumentation besagt 24 Stunden. Kopieren Sie fertige Dateien umgehend in den permanenten Speicher.
Werden fehlgeschlagene Aufgaben in Rechnung gestellt?
failed-Status erreicht, wird gemäß der aktuellen EvoLink-Aufgabendokumentation vollständig zurückerstattet. Ein fertiges Bild, das von Ihrer eigenen Qualitätsprüfung abgelehnt wurde, ist nicht dasselbe wie ein API-Fehler.Kann ich 4K oder hohe Qualität anfordern?
Nein. Diese Route unterstützt derzeit 1K/2K und Niedrig/Mittel. Verwenden Sie eine andere verifizierte Route, wenn 4K oder Hoch eine zwingende Anforderung ist.
Wo kann ich Grok mit einer anderen Bildroute vergleichen?
Verwenden Sie den Entscheidungsleitfaden [Grok Imagine Image 2.0 vs.
Quellen
- EvoLink Grok Imagine Image 2.0 API-Dokumentation
- EvoLink Task-Status-API-Dokumentation
- Grok Imagine Image 2.0 Release- und Workflow-Leitfaden
Dieses Handbuch spiegelt den am 12. August 2026 verifizierten EvoLink-Vertrag wider. Überprüfen Sie die API-Dokumentation vor dem Versand erneut, insbesondere Modellfelder, Ausgabelimits, Rückrufverhalten und Aufgaben-Antwort-Schemas.


