
Cómo utilizar la API Grok Imagine Image 2.0 en EvoLink
POST /v1/images/generations con model: "grok-imagine-image-2.0", almacenar la tarea devuelta id y luego consultar GET /v1/tasks/{task_id} hasta que la tarea llegue a completed o failed.image_urls para generar a partir de texto; incluya de una a tres URL de imágenes públicas para editar o componer a partir de referencias. Para conocer los precios actuales y las pruebas interactivas, utilice la página del modelo Grok Imagine Image 2.0. Este artículo se centra en el flujo de aplicaciones, el manejo de fallas, el almacenamiento y el respaldo del modelo en lugar de duplicar la referencia completa de los parámetros.Lo que construirás
Al final de la guía, su aplicación podrá:
- crear una tarea de texto a imagen;
- cambiar a la edición de referencias sin cambiar las ID del modelo;
- utilizar referencias indexadas en un mensaje de varias imágenes;
- realizar un seguimiento de una tarea asincrónica por ID;
- aceptar una devolución de llamada de finalización de forma segura;
- conservar los resultados antes de que caduquen sus URL de 24 horas;
- conciliar el uso final y los reembolsos por tareas fallidas;
- pasar a una ruta alternativa cuando la carga de trabajo o el resultado de la tarea lo requiera.
Antes de empezar
| Artículo | Contrato EvoLink vigente |
|---|---|
| URL base | https://api.evolink.ai |
| Crear tarea | POST /v1/images/generations |
| Tarea de consulta | GET /v1/tasks/{task_id} |
| Autenticación | Authorization: Bearer YOUR_API_KEY |
| Modelo | grok-imagine-image-2.0 |
| Texto a imagen | Omitir image_urls |
| Edición de imágenes | Proporcione de 1 a 3 URL de imágenes HTTP/HTTPS públicas |
| Producción | 1K/2K, bajo/medio, n=1-10 |
| Tratamiento | tarea asincrónica |
| Duración del resultado | 24 horas |
Paso 1: mantenga la clave API en el lado del servidor
Para una prueba de shell, establezca la clave en una variable de entorno:
export EVOLINK_API_KEY="your_api_key"${EVOLINK_API_KEY}. No la reemplace con una clave real dentro del código que se confirmará.Paso 2: crea una tarea de texto a imagen
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
}'id inmediatamente:{
"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"
}
}El valor de la reserva anterior es un ejemplo de documentación, no una promesa de precio ni el cargo final. Utilice la página del modelo actual para conocer los precios en vivo y la respuesta de la tarea del terminal para el uso final.
Paso 3: consultar la tarea asincrónica

id devuelto al punto final de la tarea. No incluya llaves alrededor del valor:curl --request GET \
"https://api.evolink.ai/v1/tasks/task-unified-1757156493-imcg5zqt" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}"processing, completed o failed. Una respuesta completa incluye results, result_data estructurado y 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
}
}
}Esos valores numéricos son valores de respuesta de ejemplo. Registre los valores devueltos por su propia tarea de terminal; No utilice este ejemplo para calcular la facturación del cliente.
Paso 4: agregar sondeo controlado
El sondeo debe detenerse en el estado de una terminal, retroceder entre solicitudes y aplicar un tiempo de espera de aplicación. El siguiente ejemplo de TypeScript del lado del servidor mantiene explícito el flujo de trabajo de la tarea:
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 tiempo de espera de aplicación no es prueba de que la tarea ascendente haya fallado. Antes de volver a intentar la generación, consulte la tarea original nuevamente o use una estrategia de idempotencia en su propia capa de trabajo. De lo contrario, un tiempo de espera del cliente puede crear tareas facturables duplicadas.
Paso 5: cambie a la edición de referencia única
image_urls para cambiar de modo. Las imágenes de entrada deben ser accesibles públicamente a través de HTTP o HTTPS; base64 y las URL de datos no son compatibles con el contrato actual. Las extensiones admitidas son JPEG, JPG, PNG y 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
}'Su aplicación debe validar el recuento, el protocolo, el tipo de archivo y la accesibilidad del servidor antes de crear una tarea paga. Es posible que el servicio de generación aún no pueda acceder a una URL que funcione en un navegador conectado.
Paso 6: redactar con múltiples referencias
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
}'Almacene el orden exacto de la matriz con el mensaje. Si una interfaz de usuario permite a alguien reordenar las cargas, actualice la matriz y las etiquetas de índice juntas.
Paso 7: elija los parámetros por etapa del flujo de trabajo
auto, resolución 1K/2K, calidad baja/media y n=1-10.| Parámetro | Úsalo para decidir | regla de producción |
|---|---|---|
size | Forma de entrega o modelo seleccionado auto | Validar con la enumeración de proporción documentada antes de enviar |
resolution | Borrador/revisión de 1K frente a candidato de entrega de 2K | No envíe 4K; la ruta no lo soporta |
quality | Bajo para una exploración más rápida y de menor costo versus Medio para más detalles | Evaluar el nivel con respecto al criterio de aceptación real |
n | Número de salidas independientes | Límite por acción de producto y presupuesto porque cada resultado se factura de forma independiente. |
image_urls | Generación de solo texto versus edición de referencia | Omitir por completo para texto a imagen; aceptar como máximo tres URL |
Utilice una lista de solicitudes permitidas en lugar de pasar JSON de cliente arbitrario directamente a la API. Esto evita que campos no admitidos, lotes excesivos o URL de devolución de llamada interna lleguen a la ruta.
Paso 8: utilice devoluciones de llamada para completar la producción
callback_url cuando su aplicación pueda exponer un punto final HTTPS público:{
"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"
}El contrato actual dice que las devoluciones de llamada se envían después de la confirmación de facturación cuando una tarea se completa, falla o se cancela. EvoLink espera hasta 10 segundos y puede volver a intentar una devolución de llamada fallida tres veces después de 1, 2 y 4 segundos. Una respuesta 2xx marca la entrega exitosa.
Diseñe el receptor para que sea idempotente:
- autenticar la solicitud utilizando el mecanismo que admite su cuenta EvoLink y la configuración del webhook;
- validar el ID de la tarea y el modelo esperado;
- insertar por ID de tarea en lugar de insertar un nuevo resultado en cada entrega;
- devolver 2xx después de una persistencia duradera;
- mover descargas lentas y revisar trabajos a una cola;
- siga sondeando como ruta de recuperación cuando no se pueda confirmar la entrega del webhook.
La URL de devolución de llamada debe usar HTTPS y no puede apuntar a un host local, rangos de IP privados o una dirección de servicio interno.
Paso 9: guarde los resultados antes de que caduquen
Las URL de imágenes completadas permanecen disponibles durante 24 horas. Trátelos como URL de transferencia, no como almacenamiento permanente de aplicaciones.
Después de completar:
- verificar que la tarea pertenece a la cuenta actual y al trabajo;
- descargue todos los elementos en
resultsoresult_data; - validar el tipo de contenido y el tamaño del archivo;
- almacene el archivo en su propio almacenamiento de objetos;
- guarde la URL permanente y el hash de contenido;
- registrar los parámetros de generación y revisar el estado;
- aplicar su política de retención y eliminación a las entradas y salidas de referencia.
n es mayor que uno, espere URL de resultados independientes en orden de generación. No persista solo en el primer elemento a menos que su producto seleccione intencionalmente un resultado.Paso 10: manejar fallas y facturación correctamente
failed final se reembolsa en su totalidad, incluido el rechazo ascendente, los bloques de moderación de contenido y los tiempos de espera.| Resultado | Acción de aplicación | Acción de facturación |
|---|---|---|
completed | Conserve cada resultado, ejecute comprobaciones de aceptación, marque el trabajo como completo | Almacene el usage final y el desglose de costos |
failed con error de infraestructura reintentable | Aplicar retroceso limitado o ruta a un retroceso verificado | Confirme que el cargo final sea cero/reembolsado |
failed con error de política de contenido | Mostrar un mensaje de entrada/solicitud procesable; no reintentar a ciegas | Confirmar reembolso y conservar el código de error |
| Tiempo de espera de sondeo de aplicaciones | Vuelva a consultar la misma tarea antes de crear otra. | No asuma que el tiempo de espera significa reembolso o falla |
| Solicitud no válida antes de la creación de la tarea | Corregir validación o permisos. | No existe ninguna tarea asincrónica para conciliar |
failed de nivel API.Manejar errores HTTP a nivel de solicitud antes del sondeo
Algunas fallas ocurren antes de que se cree una tarea asincrónica. La referencia de API actual documenta estas respuestas a nivel de solicitud:
| Estado HTTP | Significado documentado | Respuesta de la solicitud |
|---|---|---|
400 | Parámetros o formato de solicitud no válidos | Valide la lista de solicitudes permitidas, los campos obligatorios, las enumeraciones, el recuento de URL y la forma JSON antes de volver a intentarlo. |
401 | Error de autenticación | Verifique que el servidor haya enviado una clave portadora válida; nunca exponga la clave en los registros del cliente |
402 | Cuota insuficiente | Detenga los reintentos automáticos y indique al propietario de la cuenta que recargue o ajuste el presupuesto |
403 | Acceso denegado | Verifique los permisos de la cuenta o la ruta en lugar de cambiar el mensaje a ciegas |
429 | Se superó el límite de tasa de solicitud | Aplicar retrasos exponenciales acotados y trabajos en cola; no desplegar los reintentos inmediatos |
500 | Error Interno del Servidor | Vuelva a intentarlo solo bajo una política de infraestructura limitada y luego use un respaldo verificado si el trabajo lo permite. |
id. Los errores a nivel de solicitud no tienen una tarea asincrónica que consultar ni un registro de reembolso para conciliar.Paso 11: agregar enrutamiento alternativo

La integración debe separar el trabajo del producto del ID del modelo específico del proveedor:
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";
}Este ejemplo es una política inicial a nivel de contrato, no una afirmación de que un modelo produce mejores imágenes. Agregue sus propios datos de aceptación, latencia, costo, moderación y observaciones de disponibilidad antes de enrutar tráfico significativo.
Lista de verificación de traspaso de producción
- [] Clave API almacenada en un administrador secreto del lado del servidor.
- [] La lista de cuerpos permitidos de la solicitud coincide con los documentos EvoLink actuales.
- El ID del modelo está centralizado en la configuración de la ruta.
- Las imágenes de referencia son públicas, validadas y limitadas a tres.
- [] Los índices de referencias múltiples coinciden con el orden de entrada persistente.
- [] El sondeo se detiene cuando se completa/falla y utiliza el retroceso.
- [] Los tiempos de espera de la aplicación no crean automáticamente tareas duplicadas.
- [] El procesamiento de devolución de llamada es idempotente y rápido.
- Los archivos de resultados se copian antes de que expiren las 24 horas.
- El uso final se almacena por separado de los créditos reservados.
- Se concilian los reembolsos de tareas fallidas.
- [] Los errores reintentables y no reintentables están separados.
- Existe una ruta alternativa probada para las capacidades requeridas o interrupciones.
- [] Los registros excluyen claves API y URL de referencia confidenciales.
Preguntas frecuentes
¿Qué punto final crea una tarea Grok Imagine Image 2.0?
POST https://api.evolink.ai/v1/images/generations con autenticación de portador y los campos model y prompt obligatorios.¿Qué ID de modelo debo enviar?
grok-imagine-image-2.0 para la ruta EvoLink actual.¿Cómo paso de generación a edición?
image_urls para texto a imagen o pase de una a tres URL para editar.¿Puedo enviar datos de imagen base64?
No. El contrato actual acepta URL HTTP o HTTPS de acceso público y no admite URL base64 o de datos.
¿Cómo consulto el resultado?
id devuelta por la llamada de creación y luego envíe GET https://api.evolink.ai/v1/tasks/{task_id} con el mismo patrón de autenticación de portador.¿Debería realizar una encuesta o utilizar una devolución de llamada?
Utilice devoluciones de llamada para completar la producción normal y realizar sondeos como ruta de recuperación. Un prototipo simple del lado del servidor puede comenzar con un sondeo de retroceso.
¿Durante cuánto tiempo siguen siendo válidos los enlaces de imágenes completadas?
La documentación actual dice 24 horas. Copie los archivos completados al almacenamiento permanente de inmediato.
¿Se cobran las tareas fallidas?
failed se reembolsa en su totalidad de acuerdo con la documentación actual de la tarea EvoLink. Una imagen completa rechazada por su propia revisión de calidad no es lo mismo que una falla de API.¿Puedo solicitar 4K o Alta calidad?
No. Esta ruta actualmente admite 1K/2K y Bajo/Medio. Utilice una ruta verificada diferente cuando 4K o Alta sea un requisito estricto.
¿Dónde puedo comparar Grok con otra ruta de imágenes?
Fuentes
- EvoLink Grok Imagine Image 2.0 documentación API
- EvoLink documentación de API de estado de tarea
- Guía de flujo de trabajo y lanzamiento de Grok Imagine Image 2.0
Esta guía refleja el contrato EvoLink verificado el 12 de agosto de 2026. Vuelva a verificar la documentación de la API antes del envío, especialmente los campos del modelo, los límites de salida, el comportamiento de devolución de llamadas y los esquemas de respuesta a tareas.


