Seedance 2.5 est disponible sur EvoLinkEssayer Seedance 2.5
Pipeline API asynchrone Grok Imagine Image 2.0 de la requête au callback et au stockage
Tutoriel

Comment utiliser l'API Grok Imagine Image 2.0 sur EvoLink

Jacey
Jacey
Founder
12 août 2026
16 min de lecture
Ce guide fait passer un utilisateur EvoLink d'une clé API à une tâche Grok Imagine Image 2.0 terminée. Le chemin minimum est : envoyez POST /v1/images/generations avec model: "grok-imagine-image-2.0", stockez la tâche renvoyée id, puis interrogez GET /v1/tasks/{task_id} jusqu'à ce que la tâche atteigne completed ou failed.
La même route gère la conversion texte-image et l’édition d’images. Omettez image_urls pour générer à partir de texte ; incluez une à trois URL d’images publiques à modifier ou à composer à partir de références. Pour connaître les tarifs actuels et les tests interactifs, utilisez la page modèle Grok Imagine Image 2.0. Cet article se concentre sur le flux des applications, la gestion des échecs, le stockage et le repli du modèle plutôt que de dupliquer la référence complète des paramètres.
Ouvrez Grok Imagine Image 2.0 sur EvoLink
Dernière vérification : 12 août 2026.
Divulgation visuelle : la couverture et les images à l'appui de ce guide ont été générées avec GPT Image 2 comme illustrations du flux de travail. Ce ne sont pas des échantillons de sortie Grok Imagine Image 2.0.

Ce que vous construirez

À la fin du guide, votre application pourra :

  1. créer une tâche de conversion texte-image ;
  2. passer à l'édition de références sans modifier les ID de modèle ;
  3. utiliser des références indexées dans une invite multi-images ;
  4. suivre une tâche asynchrone par ID ;
  5. accepter un rappel d'achèvement en toute sécurité ;
  6. conserver les résultats avant l'expiration de leurs URL de 24 heures ;
  7. concilier les remboursements de l'utilisation finale et des tâches ayant échoué ;
  8. passer à une route de secours lorsque la charge de travail ou le résultat de la tâche l'exige.
Pour vérifier d'abord les faits de lancement et les limites des tests, consultez le guide de lancement de Grok Imagine Image 2.0. Ce guide reste centré sur l'intégration.

Avant de commencer

Créez une clé API depuis la gestion des clés API EvoLink. Conservez la clé dans un magasin secret côté serveur ou dans une variable d'environnement. Ne l'exposez jamais dans le navigateur JavaScript, dans un référentiel public, dans des événements d'analyse, des captures d'écran ou des rapports d'erreurs client.
ArticleContrat EvoLink actuel
URL de basehttps://api.evolink.ai
Créer une tâchePOST /v1/images/generations
Tâche de requêteGET /v1/tasks/{task_id}
AuthentificationAuthorization: Bearer YOUR_API_KEY
Modèlegrok-imagine-image-2.0
Texte en imageOmettre image_urls
Édition d'imagesFournissez 1 à 3 URL d'images HTTP/HTTPS publiques
Sortir1K/2K, faible/moyen, n=1-10
TraitementTâche asynchrone
Durée de vie du résultat24 heures
La liste de champs faisant autorité est la documentation de l'API Grok Imagine Image 2.0. Revérifiez-le avant le déploiement car les contrats peuvent changer après publication.

Étape 1 : conserver la clé API côté serveur

Pour un test shell, définissez la clé dans une variable d'environnement :

export EVOLINK_API_KEY="your_api_key"
Les exemples ci-dessous utilisent ${EVOLINK_API_KEY}. Ne le remplacez pas par une vraie clé dans le code qui sera validé.

Étape 2 : créer une tâche de conversion texte-image

Envoyez une invite et omettez image_urls :
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
  }'
La réponse de création représente une tâche asynchrone. Stockez immédiatement son id :
{
  "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"
  }
}

La valeur de réservation ci-dessus est un exemple de documentation, et non une promesse de prix ni le montant final. Utilisez la page de modèle actuelle pour la tarification en direct et la réponse à la tâche du terminal pour l'utilisation finale.

Étape 3 : interroger la tâche asynchrone

Workflow de tâche asynchrone Grok Imagine Image 2.0 de la soumission au stockage durable via callback
Workflow de tâche asynchrone Grok Imagine Image 2.0 de la soumission au stockage durable via callback
Cette image a été générée avec GPT Image 2 comme illustration du flux de travail. Il ne s'agit pas d'un échantillon de sortie ou d'un résultat de qualité Grok Imagine Image 2.0.
Ajoutez le id renvoyé au point de terminaison de la tâche. N'incluez pas d'accolades autour de la valeur :
curl --request GET \
  "https://api.evolink.ai/v1/tasks/task-unified-1757156493-imcg5zqt" \
  --header "Authorization: Bearer ${EVOLINK_API_KEY}"
Pour cette route, la réponse à la requête utilise processing, completed ou failed. Une réponse complète inclut results, result_data structuré et usage final :
{
  "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
    }
  }
}

Ces valeurs numériques sont des exemples de valeurs de réponse. Enregistrez les valeurs renvoyées par votre propre tâche de terminal ; n'utilisez pas cet exemple pour calculer la facturation client.

Étape 4 : ajouter un sondage contrôlé

L'interrogation doit s'arrêter sur l'état d'un terminal, reculer entre les requêtes et imposer un délai d'attente d'application. L'exemple TypeScript côté serveur suivant maintient le flux de travail des tâches explicite :

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");
}

Un délai d'attente d'application ne constitue pas une preuve que la tâche en amont a échoué. Avant de réessayer la génération, interrogez à nouveau la tâche d'origine ou utilisez une stratégie d'idempotence dans votre propre couche de tâches. Sinon, un délai d'attente client peut créer des tâches facturables en double.

Étape 5 : passer à l'édition à référence unique

Ajoutez image_urls pour changer de mode. Les images d'entrée doivent être accessibles publiquement via HTTP ou HTTPS ; base64 et les URL de données ne sont pas pris en charge par le contrat actuel. Les extensions prises en charge sont JPEG, JPG, PNG et 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
  }'

Votre application doit valider le nombre, le protocole, le type de fichier et l'accessibilité du serveur avant de créer une tâche payante. Une URL qui fonctionne dans un navigateur connecté peut toujours être inaccessible au service de génération.

Étape 6 : composer avec plusieurs références

Pour deux ou trois images de référence, utilisez des index de base zéro dans l'invite. L'index correspond à la position dans image_urls.
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
  }'

Stockez l'ordre exact du tableau avec l'invite. Si une interface utilisateur permet à quelqu'un de réorganiser les téléchargements, mettez à jour les étiquettes du tableau et de l'index ensemble.

Étape 7 : choisissez les paramètres par étape du workflow

Grok Imagine Image 2.0 prend en charge 13 rapports plus auto, résolution 1K/2K, qualité faible/moyenne et n=1-10.
ParamètreUtilisez-le pour déciderRègle de production
sizeForme de livraison ou modèle sélectionné autoValider par rapport à l'énumération de ratio documentée avant de soumettre
resolution1 000 brouillons/révisions contre 2 000 candidats à la livraisonN'envoyez pas de 4K ; la route ne le prend pas en charge
qualityFaible pour une exploration plus rapide/à moindre coût vs Moyen pour plus de détailsÉvaluer le niveau par rapport au critère d'acceptation réel
nNombre de sorties indépendantesPlafonnez-le par action produit et par budget, car chaque sortie est facturée indépendamment
image_urlsGénération de texte uniquement ou édition de référencesOmettre entièrement pour la conversion texte-image ; accepter au maximum trois URL

Utilisez une liste d'autorisation de requête plutôt que de transmettre le JSON arbitraire du client directement à l'API. Cela empêche les champs non pris en charge, les lots excessifs ou les URL de rappel internes d'atteindre la route.

Étape 8 : utilisez les rappels pour terminer la production

Transmettez callback_url lorsque votre application peut exposer un point de terminaison HTTPS public :
{
  "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"
}

Le contrat actuel stipule que les rappels sont envoyés après la confirmation de la facturation lorsqu'une tâche est terminée, échouée ou annulée. EvoLink attend jusqu'à 10 secondes et peut réessayer un rappel ayant échoué trois fois après 1, 2 et 4 secondes. Une réponse 2xx marque la livraison réussie.

Concevoir le récepteur pour qu'il soit idempotent :

  1. authentifiez la demande à l'aide du mécanisme pris en charge par votre compte EvoLink et la configuration de votre webhook ;
  2. valider l'ID de la tâche et le modèle attendu ;
  3. upsert par ID de tâche plutôt que d'insérer un nouveau résultat à chaque livraison ;
  4. renvoyer 2xx après une persistance durable ;
  5. déplacer les téléchargements lents et réviser le travail vers une file d'attente ;
  6. continuez à interroger comme chemin de récupération lorsque la livraison du webhook ne peut pas être confirmée.

L'URL de rappel doit utiliser HTTPS et ne peut pas pointer vers un hôte local, des plages d'adresses IP privées ou une adresse de service interne.

Étape 9 : enregistrez les résultats avant leur expiration

Les URL des images complétées restent disponibles pendant 24 heures. Traitez-les comme des URL de transfert et non comme un stockage d'application permanent.

Une fois terminé :

  1. vérifier que la tâche appartient au compte courant et à l'emploi ;
  2. téléchargez chaque élément dans results ou result_data ;
  3. valider le type de contenu et la taille du fichier ;
  4. stockez le fichier dans votre propre stockage d'objets ;
  5. enregistrez l'URL permanente et le hachage du contenu ;
  6. enregistrer les paramètres de génération et examiner l'état ;
  7. appliquez votre politique de conservation et de suppression aux entrées et sorties de référence.
Si n est supérieur à un, attendez-vous à des URL de résultats indépendantes dans l'ordre de génération. Ne conservez pas uniquement le premier élément, sauf si votre produit sélectionne intentionnellement un résultat.

Étape 10 : gérer correctement les échecs et la facturation

La réponse de création peut réserver des crédits, mais l'utilisation du terminal constitue la vérité de facturation. Selon le contrat de tâche de EvoLink, une tâche finale failed est entièrement remboursée, y compris le rejet en amont, les blocages de modération de contenu et les délais d'attente.
RésultatAction de l'applicationAction de facturation
completedConservez chaque résultat, effectuez des contrôles d'acceptation, marquez le travail comme terminéStocker le usage final et la répartition des coûts
failed avec erreur d'infrastructure réessayableAppliquer une interruption plafonnée ou un acheminement vers une solution de secours vérifiéeConfirmer que les frais finaux sont nuls/remboursés
failed avec erreur de stratégie de contenuAfficher un message d'invite/de saisie exploitable ; ne réessayez pas à l'aveugleConfirmer le remboursement et conserver le code d'erreur
Expiration du délai d'interrogation des applicationsRé-interroger la même tâche avant d'en créer une autreNe présumez pas que le délai d’attente signifie un remboursement ou un échec
Demande invalide avant la création de la tâcheCorriger la validation ou les autorisationsAucune tâche asynchrone n'existe pour réconcilier
Ne promettez pas aux utilisateurs que toute expérience infructueuse est gratuite sans vérifier l’état final de la tâche. Une image terminée de mauvaise qualité reste une tâche terminée ; le rejet de qualité à l’intérieur de votre produit est différent d’un statut failed au niveau de l’API.

Gérer les erreurs HTTP au niveau de la requête avant l'interrogation

Certains échecs se produisent avant la création d'une tâche asynchrone. La référence actuelle de l'API documente ces réponses au niveau des requêtes :

Statut HTTPSignification documentéeRéponse à la demande
400Paramètres ou format de demande non validesValidez la liste d'autorisation de la demande, les champs obligatoires, les énumérations, le nombre d'URL et la forme JSON avant de réessayer
401Erreur d'authentificationVérifiez que le serveur a envoyé une clé Bearer valide ; ne jamais exposer la clé dans les journaux des clients
402Quota insuffisantArrêtez les tentatives automatiques et demandez au propriétaire du compte de recharger ou d'ajuster le budget.
403Accès refuséVérifiez les autorisations du compte ou de la route au lieu de modifier aveuglément l'invite
429Limite de taux de requête dépasséeAppliquer un espacement exponentiel limité et un travail en file d'attente ; ne pas répartir les tentatives immédiates
500Erreur interne du serveurRéessayez uniquement dans le cadre d'une politique d'infrastructure plafonnée, puis utilisez une solution de secours vérifiée si la tâche le permet
Ne démarrez l'interrogation que lorsque la réponse de création a renvoyé une tâche id. Les erreurs au niveau de la demande n’ont pas de tâche asynchrone à interroger ni d’enregistrement de remboursement à rapprocher.

Étape 11 : ajouter un routage de secours

Workflow de secours en production pour nouvelles tentatives, routage alternatif et annulation des réservations échouées
Workflow de secours en production pour nouvelles tentatives, routage alternatif et annulation des réservations échouées
Il s'agit d'une illustration de flux de travail générée par GPT Image 2, et non d'un modèle de référence couplé.

L'intégration doit séparer la tâche du produit de l'ID de modèle spécifique au fournisseur :

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";
}

Cet exemple est une politique de départ au niveau du contrat, et non une affirmation selon laquelle un modèle produit de meilleures images. Ajoutez vos propres données d'acceptation, de latence, de coût, de modération et de disponibilité avant d'acheminer un trafic significatif.

Pour un cadre de sélection complet, lisez Grok Imagine Image 2.0 vs GPT Image 2.

Liste de contrôle du transfert de production

  • Clé API stockée dans un gestionnaire de secrets côté serveur.
  • La liste autorisée du corps de la demande correspond aux documents EvoLink actuels.
  • L'ID du modèle est centralisé dans la configuration de la route.
  • Les images de référence sont publiques, validées et limitées à trois.
  • Les index multi-références correspondent à l'ordre d'entrée persistant.
  • L'interrogation s'arrête en cas de réussite/d'échec et utilise l'interruption.
  • Les délais d'attente des applications ne créent pas automatiquement des tâches en double.
  • Le traitement des rappels est idempotent et rapide.
  • Les fichiers de résultats sont copiés avant l'expiration des 24 heures.
  • L'utilisation finale est stockée séparément des crédits réservés.
  • Les remboursements de tâches ayant échoué sont rapprochés.
  • Les erreurs réessayables et non réessayables sont séparées.
  • Une route de secours testée existe pour les capacités requises ou les pannes.
  • Les journaux excluent les clés API et les URL de référence sensibles.

Questions fréquemment posées

Quel point de terminaison crée une tâche Grok Imagine Image 2.0 ?

Utilisez POST https://api.evolink.ai/v1/images/generations avec l'authentification du porteur et les champs model et prompt requis.

Quel identifiant de modèle dois-je envoyer ?

Envoyez grok-imagine-image-2.0 pour la route EvoLink actuelle.

Comment passer de la génération à l'édition ?

Conservez l’ID du modèle inchangé. Omettez image_urls pour la conversion texte-image ou transmettez une à trois URL pour la modification.

Puis-je envoyer des données d'image base64 ?

Non. Le contrat actuel accepte les URL HTTP ou HTTPS accessibles au public et ne prend pas en charge les URL base64 ou de données.

Comment interroger le résultat ?

Stockez la tâche id renvoyée par l'appel de création, puis envoyez GET https://api.evolink.ai/v1/tasks/{task_id} avec le même modèle d'authentification Bearer.

Dois-je interroger ou utiliser un rappel ?

Utilisez les rappels pour l’achèvement normal de la production et l’interrogation comme chemin de récupération. Un simple prototype côté serveur peut commencer par une interrogation d'interruption.

Combien de temps les liens d'images complétés restent-ils valides ?

La documentation actuelle indique 24 heures. Copiez rapidement les fichiers terminés vers un stockage permanent.

Les tâches échouées sont-elles facturées ?

Une tâche qui atteint l'état final failed est entièrement remboursée conformément à la documentation actuelle de la tâche EvoLink. Une image terminée rejetée par votre propre contrôle qualité n’est pas la même chose qu’un échec de l’API.

Puis-je demander la 4K ou la haute qualité ?

Non. Cette route prend actuellement en charge 1K/2K et Low/Medium. Utilisez une autre route vérifiée lorsque 4K ou High est une exigence stricte.

Où puis-je comparer Grok avec une autre route d'images ?

Utilisez le [Guide de décision Grok Imagine Image 2.0 vs GPT Image 2] (/blog/grok-imagine-image-2-0-vs-gpt-image-2), puis validez les deux avec votre propre ensemble de tests couplés.

##Sources

Ce guide reflète le contrat EvoLink vérifié le 12 août 2026. Revérifiez la documentation de l'API avant l'expédition, en particulier les champs de modèle, les limites de sortie, le comportement de rappel et les schémas tâche-réponse.

Prêt à réduire vos coûts IA de 89 % ?

Commencez avec EvoLink dès aujourd'hui et découvrez la puissance du routage intelligent des API.