
Grok Imagine Image 2.0 API 怎么用:EvoLink 接入指南
POST /v1/images/generations和model: "grok-imagine-image-2.0",存储返回的任务id,然后查询GET /v1/tasks/{task_id},直到任务到达completed或failed。image_urls 从文本生成;包括一到三个公共图像 URL,以便根据参考进行编辑或撰写。对于当前定价和交互式测试,请使用 Grok Imagine Image 2.0 模型页面。本文重点介绍应用程序流程、故障处理、存储和模型回退,而不是复制完整的参数参考。你将构建什么
在本指南结束时,您的应用程序将能够:
- 创建文本转图像任务;
- 切换到参考编辑而不更改模型ID;
- 在多图像提示中使用索引引用;
- 通过ID跟踪异步任务;
- 安全地接受完成回调;
- 在 24 小时 URL 过期之前保留结果;
- 核对最终使用情况和任务失败退款;
- 当工作量或任务结果需要时,切换到回退路由。
开始之前
| 项目 | 当前 EvoLink 接口契约 |
|---|---|
| Base URL | https://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 小时 |
第 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"
}
}上面的保留价值是一个文档示例,不是价格承诺,也不是最终费用。使用当前模型页面进行实时定价,使用终端任务响应进行最终使用。
第三步:查询异步任务

id 附加到任务端点。不要在值周围包含大括号:curl --request GET \
"https://api.evolink.ai/v1/tasks/task-unified-1757156493-imcg5zqt" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}"processing、completed 或 failed。完整的响应包括 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:按工作流程阶段选择参数
auto、1K/2K 分辨率、低/中质量和 n=1-10。| 范围 | 用它来决定 | 生产规则 |
|---|---|---|
size | 交货形状或模型选择 auto | 提交前根据记录的比率枚举进行验证 |
resolution | 1K 草稿/审核与 2K 交付候选者 | 不发送4K;该路由不支持 |
quality | 低级用于更快/更低成本的探索,而中级则用于更多细节 | 根据实际验收标准评估层级 |
n | 独立输出数量 | 每个产品操作和预算都有上限,因为每个输出都是独立计费的 |
image_urls | 纯文本生成与参考编辑 | 对于文本到图像完全省略;最多接受三个 URL |
使用请求白名单,而不是将任意客户端 JSON 直接传递给 API。这可以防止不支持的字段、过多的批次或内部回调 URL 到达路由。
步骤8:使用回调来完成生产
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 响应标志着交付成功。
将接收器设计为幂等的:
- 使用您的 EvoLink 帐户和 webhook 设置支持的机制对请求进行身份验证;
- 验证任务ID和期望模型;
- 按任务 ID 更新插入,而不是在每次交付时插入新结果; 4.持久化后返回2xx;
- 将缓慢的下载和审核工作移至队列;
- 当无法确认 webhook 传递时,继续轮询作为恢复路径。
回调 URL 必须使用 HTTPS,并且不能指向 localhost、私有 IP 范围或内部服务地址。
步骤 9:在结果过期之前保存结果
完整的图像 URL 24 小时内保持可用。将它们视为传输 URL,而不是永久应用程序存储。
完成后:
- 验证任务是否属于当前账户和作业;
2.下载
results或result_data中的每一项; - 验证内容类型和文件大小;
- 将文件存储在自己的对象存储中;
- 保存永久URL和内容哈希; 6.记录生成参数并回顾状态;
- 将保留和删除策略应用于参考输入和输出。
n 大于 1,则期望按生成顺序生成独立的结果 URL。除非您的产品有意选择一个结果,否则不要仅保留第一项。步骤10:正确处理故障和计费
failed任务将获得全额退款,包括上游拒绝、内容审核阻止和超时。| 结果 | 应用动作 | 计费动作 |
|---|---|---|
completed | 保留每个结果,运行验收检查,将作业标记为完成 | 存储最终的 usage 和成本明细 |
failed 具有可重试的基础架构错误 | 应用上限回退或路由到经过验证的回退 | 确认最终费用为零/退款 |
failed 存在内容政策错误 | 显示可操作的提示/输入消息;不要盲目重试 | 确认退款并保留错误码 |
| 应用程序轮询超时 | 在创建另一个任务之前重新查询同一任务 | 不要假设超时意味着退款或失败 |
| 任务创建前请求无效 | 修复验证或权限 | 不存在需要协调的异步任务 |
failed 状态不同。轮询前处理请求级 HTTP 错误
有些失败发生在异步任务创建之前。当前的 API 参考记录了这些请求级响应:
| HTTP状态 | 记录的含义 | 申请回应 |
|---|---|---|
400 | 请求参数或格式无效 | 在重试之前验证请求白名单、必填字段、枚举、URL 计数和 JSON 形状 |
401 | 认证错误 | 检查服务器是否发送了有效的 Bearer key;永远不要在客户端日志中暴露密钥 |
402 | 配额不足 | 停止自动重试并指导账户所有者充值或调整预算 |
403 | 拒绝访问 | 验证账户或路由权限,而不是盲目更改提示 |
429 | 请求速率超出限制 | 应用有界指数退避和队列工作;不要立即重试 |
500 | 服务器内部错误 | 仅在有上限的基础设施策略下重试,然后在作业允许的情况下使用经过验证的回退 |
id 时才开始轮询。请求级错误没有异步任务来查询或退款记录来协调。步骤11:添加回退路由

集成应将产品作业与特定于提供商的模型 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";
}这个例子是合同级别的起始政策,而不是声称某个模型可以产生更好的图像。在路由有意义的流量之前添加您自己的接受数据、延迟、成本、审核和可用性观察结果。
生产交接清单
- API 密钥存储在服务器端秘密管理器中。
- 请求正文白名单与当前的 EvoLink 文档匹配。
- 模型 ID 集中在路由配置中。
- 参考图像是公开的、经过验证的,并且仅限于三个。
- 多引用索引与持久输入顺序相匹配。
- 轮询在完成/失败时停止并使用退避。
- 应用程序超时不会自动创建重复任务。
- 回调处理是幂等且快速的。
- 结果文件在 24 小时到期之前复制。
- 最终使用量与保留积分分开存储。
- 失败任务退款已核对。
- 可重试错误和不可重试错误分开。
- 存在针对所需功能或中断的经过测试的回退路由。
- 日志不包括 API 密钥和敏感参考 URL。
常见问题
哪个端点创建 Grok Imagine Image 2.0 任务?
POST https://api.evolink.ai/v1/images/generations 与承载身份验证以及必需的 model 和 prompt 字段结合使用。我应该发送什么模型 ID?
grok-imagine-image-2.0。如何从生成切换到编辑?
image_urls 或传递一到三个 URL 进行编辑。我可以发送base64图像数据吗?
否。当前合约接受可公开访问的 HTTP 或 HTTPS URL,但不支持 base64 或数据 URL。
如何查询结果?
id,然后使用相同的承载身份验证模式发送 GET https://api.evolink.ai/v1/tasks/{task_id}。我应该轮询还是使用回调?
使用回调来正常生产完成并使用轮询作为恢复路径。一个简单的服务器端原型可以从退避轮询开始。
完成的图像链接的有效期是多长时间?
目前的文档说 24 小时。立即将完成的文件复制到永久存储中。
失败的任务是否收费?
failed 状态的任务将全额退款。被您自己的质量审核拒绝的完整图像与 API 失败不同。我可以请求 4K 或高画质吗?
否。该路由目前支持 1K/2K 和低/中。当 4K 或高是硬性要求时,请使用不同的经过验证的路由。
在哪里可以将 Grok 与其他图像路由进行比较?
来源
本指南反映了 2026 年 8 月 12 日验证的 EvoLink 合约。在发货前重新检查 API 文档,特别是模型字段、输出限制、回调行为和任务响应架构。


