Seedance 2.5 已上线 EvoLink立即体验
从请求到回调和存储的 Grok Imagine Image 2.0 异步 API 管道
教程

Grok Imagine Image 2.0 API 怎么用:EvoLink 接入指南

Jacey
Jacey
2026年8月12日
20 分钟阅读
本指南引导 EvoLink 用户从 API 密钥完成 Grok Imagine Image 2.0 任务。最小路径是:发送POST /v1/images/generationsmodel: "grok-imagine-image-2.0",存储返回的任务id,然后查询GET /v1/tasks/{task_id},直到任务到达completedfailed
相同的路由处理文本到图像和图像编辑。省略 image_urls 从文本生成;包括一到三个公共图像 URL,以便根据参考进行编辑或撰写。对于当前定价和交互式测试,请使用 Grok Imagine Image 2.0 模型页面。本文重点介绍应用程序流程、故障处理、存储和模型回退,而不是复制完整的参数参考。
在 EvoLink 上打开 Grok Imagine Image 2.0
最后验证时间:2026 年 8 月 12 日。
视觉披露:本指南中的封面和支持图像是使用 GPT Image 2 作为工作流程插图生成的。它们不是 Grok Imagine Image 2.0 输出样本。

你将构建什么

在本指南结束时,您的应用程序将能够:

  1. 创建文本转图像任务;
  2. 切换到参考编辑而不更改模型ID;
  3. 在多图像提示中使用索引引用;
  4. 通过ID跟踪异步任务;
  5. 安全地接受完成回调;
  6. 在 24 小时 URL 过期之前保留结果;
  7. 核对最终使用情况和任务失败退款;
  8. 当工作量或任务结果需要时,切换到回退路由。
如果你需要先确认上线事实和测试边界,请阅读 Grok Imagine Image 2.0 发布指南。本指南只聚焦接入实施。

开始之前

EvoLink API 密钥管理 创建 API 密钥。将密钥保存在服务器端秘密存储或环境变量中。切勿在浏览器 JavaScript、公共存储库、分析事件、屏幕截图或客户端错误报告中公开它。
项目当前 EvoLink 接口契约
Base URLhttps://api.evolink.ai
创建任务POST /v1/images/generations
查询任务GET /v1/tasks/{task_id}
认证Authorization: Bearer YOUR_API_KEY
模型grok-imagine-image-2.0
文本转图像省略 image_urls
图像编辑提供 1-3 个公共 HTTP/HTTPS 图像 URL
输出1K/2K,低/中,n=1-10
处理方式异步任务
结果链接有效期24 小时
权威的字段列表是Grok Imagine Image 2.0 API文档。在部署之前重新检查它,因为合同在发布后可能会发生变化。

第 1 步:将 API 密钥保存在服务器端

对于 shell 测试,请在环境变量中设置密钥:

export EVOLINK_API_KEY="your_api_key"
以下示例使用 ${EVOLINK_API_KEY}。不要将其替换为将要提交的代码内部的真实密钥。

步骤 2:创建文本转图像任务

发送提示并省略 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
{
  "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"
  }
}

上面的保留价值是一个文档示例,不是价格承诺,也不是最终费用。使用当前模型页面进行实时定价,使用终端任务响应进行最终使用。

第三步:查询异步任务

Grok Imagine Image 2.0 从提交、处理、回调到持久化存储的异步任务工作流
Grok Imagine Image 2.0 从提交、处理、回调到持久化存储的异步任务工作流
此图像是使用 GPT Image 2 生成的,作为工作流程插图。它不是 Grok Imagine Image 2.0 输出样本或质量结果。
将返回的 id 附加到任务端点。不要在值周围包含大括号:
curl --request GET \
  "https://api.evolink.ai/v1/tasks/task-unified-1757156493-imcg5zqt" \
  --header "Authorization: Bearer ${EVOLINK_API_KEY}"
对于此路由,查询响应使用 processingcompletedfailed。完整的响应包括 results、结构化 result_data 和最终 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
    }
  }
}

这些数值是示例响应值。记录自己的终端任务返回的值;不要使用此示例来计算客户账单。

步骤 4:添加受控轮询

轮询应在终端状态时停止,在请求之间退避,并强制应用程序超时。以下服务器端 TypeScript 示例使任务工作流程保持明确:

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

应用程序超时并不能证明上游任务失败。在重试生成之前,请再次查询原始任务或在您自己的作业层中使用幂等策略。否则,客户端超时可能会创建重复的计费任务。

步骤 5:切换到单引用编辑

添加 image_urls 进行模式切换。输入图像必须可通过 HTTP 或 HTTPS 公开访问;当前合约不支持 base64 和数据 URL。支持的扩展名包括 JPEG、JPG、PNG 和 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
  }'

在创建付费任务之前,您的应用程序应验证计数、协议、文件类型和服务器可达性。生成服务可能仍然无法访问在登录浏览器中工作的 URL。

步骤 6:使用多个参考文献进行撰写

对于两个或三个参考图像,请在提示中使用从零开始的索引。该索引映射到 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
  }'

根据提示存储确切的数组顺序。如果用户界面允许某人重新排序上传,请一起更新数组和索引标签。

步骤7:按工作流程阶段选择参数

Grok Imagine Image 2.0 支持 13 种比率以及 auto、1K/2K 分辨率、低/中质量和 n=1-10
范围用它来决定生产规则
size交货形状或模型选择 auto提交前根据记录的比率枚举进行验证
resolution1K 草稿/审核与 2K 交付候选者不发送4K;该路由不支持
quality低级用于更快/更低成本的探索,而中级则用于更多细节根据实际验收标准评估层级
n独立输出数量每个产品操作和预算都有上限,因为每个输出都是独立计费的
image_urls纯文本生成与参考编辑对于文本到图像完全省略;最多接受三个 URL

使用请求白名单,而不是将任意客户端 JSON 直接传递给 API。这可以防止不支持的字段、过多的批次或内部回调 URL 到达路由。

步骤8:使用回调来完成生产

当您的应用程序可以公开公共 HTTPS 端点时,传递 callback_url
{
  "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"
}

当前的合同规定,当任务完成、失败或取消时,会在计费确认后发送回调。 EvoLink 最多等待 10 秒,并且可能会在 1、2 和 4 秒后重试失败的回调 3 次。 2xx 响应标志着交付成功。

将接收器设计为幂等的:

  1. 使用您的 EvoLink 帐户和 webhook 设置支持的机制对请求进行身份验证;
  2. 验证任务ID和期望模型;
  3. 按任务 ID 更新插入,而不是在每次交付时插入新结果; 4.持久化后返回2xx;
  4. 将缓慢的下载和审核工作移至队列;
  5. 当无法确认 webhook 传递时,继续轮询作为恢复路径。

回调 URL 必须使用 HTTPS,并且不能指向 localhost、私有 IP 范围或内部服务地址。

步骤 9:在结果过期之前保存结果

完整的图像 URL 24 小时内保持可用。将它们视为传输 URL,而不是永久应用程序存储。

完成后:

  1. 验证任务是否属于当前账户和作业; 2.下载resultsresult_data中的每一项;
  2. 验证内容类型和文件大小;
  3. 将文件存储在自己的对象存储中;
  4. 保存永久URL和内容哈希; 6.记录生成参数并回顾状态;
  5. 将保留和删除策略应用于参考输入和输出。
如果 n 大于 1,则期望按生成顺序生成独立的结果 URL。除非您的产品有意选择一个结果,否则不要仅保留第一项。

步骤10:正确处理故障和计费

创建响应可能会保留积分,但终端使用情况才是计费真相。根据EvoLink的任务合约,最终的failed任务将获得全额退款,包括上游拒绝、内容审核阻止和超时。
结果应用动作计费动作
completed保留每个结果,运行验收检查,将作业标记为完成存储最终的 usage 和成本明细
failed 具有可重试的基础架构错误应用上限回退或路由到经过验证的回退确认最终费用为零/退款
failed 存在内容政策错误显示可操作的提示/输入消息;不要盲目重试确认退款并保留错误码
应用程序轮询超时在创建另一个任务之前重新查询同一任务不要假设超时意味着退款或失败
任务创建前请求无效修复验证或权限不存在需要协调的异步任务
不要在不检查最终任务状态的情况下向用户承诺每次不成功的体验都是免费的。低质量的已完成图像仍然是已完成的任务;产品内部的质量拒绝与 API 级 failed 状态不同。

轮询前处理请求级 HTTP 错误

有些失败发生在异步任务创建之前。当前的 API 参考记录了这些请求级响应:

HTTP状态记录的含义申请回应
400请求参数或格式无效在重试之前验证请求白名单、必填字段、枚举、URL 计数和 JSON 形状
401认证错误检查服务器是否发送了有效的 Bearer key;永远不要在客户端日志中暴露密钥
402配额不足停止自动重试并指导账户所有者充值或调整预算
403拒绝访问验证账户或路由权限,而不是盲目更改提示
429请求速率超出限制应用有界指数退避和队列工作;不要立即重试
500服务器内部错误仅在有上限的基础设施策略下重试,然后在作业允许的情况下使用经过验证的回退
仅当创建响应返回任务 id 时才开始轮询。请求级错误没有异步任务来查询或退款记录来协调。

步骤11:添加回退路由

包含重试、备用路由和失败任务预留回退的生产容错工作流
包含重试、备用路由和失败任务预留回退的生产容错工作流
这是 GPT Image 2 生成的工作流程插图,而不是配对模型基准。

集成应将产品作业与特定于提供商的模型 ID 分开:

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

这个例子是合同级别的起始政策,而不是声称某个模型可以产生更好的图像。在路由有意义的流量之前添加您自己的接受数据、延迟、成本、审核和可用性观察结果。

有关完整的选择框架,请阅读 Grok Imagine Image 2.0 与 GPT Image 2

生产交接清单

  • API 密钥存储在服务器端秘密管理器中。
  • 请求正文白名单与当前的 EvoLink 文档匹配。
  • 模型 ID 集中在路由配置中。
  • 参考图像是公开的、经过验证的,并且仅限于三个。
  • 多引用索引与持久输入顺序相匹配。
  • 轮询在完成/失败时停止并使用退避。
  • 应用程序超时不会自动创建重复任务。
  • 回调处理是幂等且快速的。
  • 结果文件在 24 小时到期之前复制。
  • 最终使用量与保留积分分开存储。
  • 失败任务退款已核对。
  • 可重试错误和不可重试错误分开。
  • 存在针对所需功能或中断的经过测试的回退路由。
  • 日志不包括 API 密钥和敏感参考 URL。

常见问题

哪个端点创建 Grok Imagine Image 2.0 任务?

POST https://api.evolink.ai/v1/images/generations 与承载身份验证以及必需的 modelprompt 字段结合使用。

我应该发送什么模型 ID?

为当前 EvoLink 路由发送 grok-imagine-image-2.0

如何从生成切换到编辑?

保持模型 ID 不变。对于文本到图像,省略 image_urls 或传递一到三个 URL 进行编辑。

我可以发送base64图像数据吗?

否。当前合约接受可公开访问的 HTTP 或 HTTPS URL,但不支持 base64 或数据 URL。

如何查询结果?

存储创建调用返回的任务 id,然后使用相同的承载身份验证模式发送 GET https://api.evolink.ai/v1/tasks/{task_id}

我应该轮询还是使用回调?

使用回调来正常生产完成并使用轮询作为恢复路径。一个简单的服务器端原型可以从退避轮询开始。

完成的图像链接的有效期是多长时间?

目前的文档说 24 小时。立即将完成的文件复制到永久存储中。

失败的任务是否收费?

根据当前的 EvoLink 任务文档,达到最终 failed 状态的任务将全额退款。被您自己的质量审核拒绝的完整图像与 API 失败不同。

我可以请求 4K 或高画质吗?

否。该路由目前支持 1K/2K 和低/中。当 4K 或高是硬性要求时,请使用不同的经过验证的路由。

在哪里可以将 Grok 与其他图像路由进行比较?

使用 Grok Imagine Image 2.0 与 GPT Image 2 决策指南,然后使用您自己的配对测试集验证两者。

来源

本指南反映了 2026 年 8 月 12 日验证的 EvoLink 合约。在发货前重新检查 API 文档,特别是模型字段、输出限制、回调行为和任务响应架构。

准备好把 AI 成本降低 89% 吗?

现在就开始使用 EvoLink,体验智能 API 路由的强大能力。