Skip to main content
POST
segmentregion_edit 均使用现有异步图片入口。创建任务后保存 task_id,再轮询 获取任务状态;不要等待创建请求直接返回图层或图片。
不要把 API Key 写入浏览器包、LocalStorage、URL 或前端日志。浏览器应调用业务 BFF,由服务端持有 Key 并转发请求。

操作概览

完整链路:
source_task_idimage_id 不可互换。segment 使用来源任务 ID;region_edit 使用图片资产 ID。编辑后重新获取图层时,将本次 region_edittask_id 作为新的 source_task_id

请求头

string
必填
使用 Bearer Token:Bearer <APIMART_API_KEY>
string
必填
固定为 application/json
string
可选。付费的 region_edit 强烈建议使用。支持 1–191 个可见 ASCII 字符,推荐 UUID。每次新的逻辑操作使用一个新 Key。网络失败重试同一次请求时,必须复用原 Key 和完全相同的请求体。
同一个 Key 的任务仍在处理时,接口可能返回 409 idempotency_in_progress。如果返回 idempotency_result_indeterminate,停止自动重提并保留原 Key;尤其不要为结果不确定的付费 region_edit 生成新 Key。

异步任务流程

创建任务成功返回 HTTP 200,任务 ID 位于 data[0].task_id。随后查询:
状态可能为 pendingprocessingcompletedfailed。建议从 2 秒间隔开始轮询,逐步退避到最多 5 秒,并设置 10 分钟总超时。切换源图或离开页面时,使用 AbortController 终止旧轮询。
任务查询即使返回 HTTP 200data.status 仍可能是 failed。必须根据 data.status 判断任务成败,并展示 data.error

获取图层:segment

请求参数

string
默认值:"grok-imagine-2.0-ext"
必填
固定为 grok-imagine-2.0-ext
string
默认值:"segment"
必填
获取图层时固定为 segment
string
必填
当前用户已完成的 Grok 单图任务 ID。来源任务必须成功、属于图片任务,且最终结果仅包含一张图片。不要同时发送 image_idimage_index;服务端会从来源任务解析对应资产。
boolean
默认值:"true"
是否返回 COCO compressed RLE。需要精确描边、画笔或多边形编辑时应显式设为 true
boolean
默认值:"false"
仅查询分段缓存,未命中时不回源。不能与 refresh=true 同时使用。
boolean
默认值:"false"
传递给上游的缓存提示,不代表本地一定命中缓存。
boolean
默认值:"false"
强制跳过缓存重新获取。不要用于普通编辑器流程,也不能与 cache_only=true 同时使用。
segment 不需要 prompt,也不要发送 billing_model_namensizeresponse_format

请求示例

使用 cache_only=true 时,缓存未命中仍是成功任务。根据 cache_status 判断:hit 可直接显示图层,miss 表示尚无缓存。不要用 cached 字段判断是否命中。

完成响应

segmentdata.result 直接是分段结果,不包在 images 中:
没有有效 mask_rlemask_url 的对象只能用于矩形近似编辑,不能标记为精确图层。

解码 mask_rle

mask_rle.counts 是 COCO 压缩计数字符串,不是 Base64,也不是 zlib。数据按列优先顺序展开;第一个 run 表示背景像素数,此后在背景和前景之间交替。 以下 TypeScript 将结果转换为浏览器常用的行优先二值数组:
大尺寸遮罩建议在 Web Worker 中解码,避免阻塞主线程。不要把完整 mask_rle.counts 写入日志、埋点、URL 或错误上报。

转换为精确选区

region_edit 使用归一化多边形:
将二值 mask 转为多边形时,建议提取连通区域和孔洞,再用 Douglas–Peucker 简化。每个 ring 至少 3 个不同点,不能自交或面积为 0;每个图层最多保留面积最大的 16 个 region,每个 ring 最多保留 400 个点。
mask_size 的顺序是 [height,width],坐标基于原始 mask,不是 CSS 显示尺寸。使用 object-fit: contain 时,需要先扣除留白偏移并按实际绘制区域换算,最后将坐标限制在 0~1
如果前端需要读取源图或 mask_url 的像素,图片服务器必须允许当前站点跨域访问,并且要在设置 src 前指定 image.crossOrigin = "anonymous",或通过 fetch 获取 Blob。否则图片绘制到 Canvas 后会污染画布,无法再读取像素。图层轮廓优先直接解码 mask_rle,不依赖跨域读取源图。

编辑选区:region_edit

请求参数

string
默认值:"grok-imagine-2.0-ext"
必填
固定为 grok-imagine-2.0-ext
string
默认值:"region_edit"
必填
编辑选区时固定为 region_edit
string
必填
当前源图的资产 ID。首次编辑使用 segment 响应中的 result.image_id;连续编辑使用上次编辑返回的新 image_id
string
必填
描述如何修改选区,去除首尾空格后不能为空。
array
精确多边形选区,推荐用于正式图层和画笔编辑。坐标归一化到 0~1,支持 outer 和可选 holes
number[][]
矩形选区,每项为 [x1,y1,x2,y2]。可使用归一化坐标;使用像素坐标时必须同时传 mask_size
integer[]
segment 返回的原始 objects[].index。上游按对象边界框编辑,因此只适合快速联调或矩形近似模式。
integer[]
像素 boxes 使用的 [height,width]。两个值都必须为正整数。
selection_regionsboxesobject_indices 至少有一个非空。接口允许组合,但建议一次只使用一种,避免重叠选区和语义不清。
不要发送 billing_model_namesizeaspect_ratiosource_aspect_ratiosource_sizeimage_urlsn 只能省略或设为 1claim_asset 只能省略或设为 falseresponse_format 只能省略或设为 url;不支持 Base64 输出和 stream=true

三种选区方式

points 可使用扁平数组,也兼容 [[x0,y0],[x1,y1],...]。每项必须是 0~1 的有限数字,每个 ring 至少包含 3 对坐标。

完成响应

优先读取 result.images[0].items[0]。兼容旧响应时,可读取同一下标的 url[0]image_ids[0],但必须同时拿到可展示的 HTTP(S) URL 和新的 image_id
结果 URL 的有效期以 expires_at 为准,不要在前端硬编码固定小时数。需要长期展示时应及时下载或转存。

连续编辑

一次编辑完成后,应同时更新三个值并清除旧图层缓存:
  • 再次获取图层:source_task_id = 本次 region_edit 的 task_id
  • 再次编辑:image_id = 本次 region_edit 返回的新 image_id
  • 不要把 image_id 传给 segment,也不要继续使用上一张图片的旧 image_id

错误处理

部分越界的正整数 object_indices 可能在创建后异步失败,因此创建请求成功不代表编辑一定成功。

计费说明

  • segment 免费,完成任务的 costcredits_cost 均为 0,但仍需正常鉴权并满足来源任务条件。
  • region_edit 为付费操作。以任务完成响应中的 costcredits_cost 为准,不要在前端硬编码价格。
  • 不要发送内部计费字段 billing_model_name

前端接入检查

  • API Key 只保存在后端或 BFF。
  • segment 只发送来源 source_task_id,不发送 image_idimage_index
  • region_edit 使用 segment 返回的 image_id,并至少提供一种选区。
  • 正式图层编辑使用 selection_regionsobject_indices 仅为矩形近似。
  • mask_size 始终按 [height,width] 解析,并正确处理图片显示区域的缩放和留白。
  • 同一次网络重试复用原 Idempotency-Key,收费请求结果不确定时不自动换 Key 重提。
  • 任务完成后同时校验 URL 和新 image_id,连续编辑时清理旧图层和旧轮询。