AIMasker 首页
AIMasker · Developer docs

图片 API 对接文档

创建图片任务,保存 task_id,再查询状态并取得图片 URL。开发者可直接调用接口;Claude Code / Codex 用户可安装 Skill。按你的使用方式选择下方入口。

直接对接 API →面向开发者:鉴权、请求参数、task_id 查询及结果 URL。不需要安装 Skill。Claude Code / Codex Skill →安装 Skill → 配置环境变量 → 检查并使用。全部操作集中在一起。
gpt-image-2gpt-image-2.5-flaregpt-image-2.5-sunburstnano-banana-pro
01 / CREATE
创建图片任务收到 202 后保存 task_id
02 / CHECK
查询任务状态使用原 Key,间隔至少 5 秒
03 / SAVE
保存结果图片读取 URL,尽快下载校验
创建请求可能计费。超时后先查询原 task_id,不要重复提交;未收到 task_id 时保留 Request ID(如有)与时间,联系支持核查。

直接对接 API:鉴权与创建任务

基址 https://aimasker.com。请求头使用 Authorization: Bearer <API Key>。开发者在自己的服务端密钥管理或运行环境中配置 Key;以下示例约定从 AIMASKER_API_KEY 读取。无需安装 Skill,不要把 Key 放在浏览器前端。

POST/v1/images/generations/asyncJSON · 生成任务
POST/v1/images/edits/async表单 · 编辑任务
参数要求与建议
model必填,gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst 或 nano-banana-pro
prompt必填,图片描述或编辑要求
size仅 gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst;建议显式传入,如 3840x2160;见下方像素尺寸表
quality仅 gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst;推荐 high,可选 low / medium / high
aspect_ratio仅 nano-banana-pro;画面比例,如 1:1、16:9、9:16
output_resolution仅 nano-banana-pro;清晰度档位 1K / 2K / 4K
n推荐 1;正整数,最终以服务端限制为准
output_format仅 gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst;推荐 png,可选 png / jpeg / webp
image / image[]编辑必填,1–16 张文件;一张用 image,多张重复 image[]
mask编辑可选蒙版文件;按接口支持的蒙版格式提供

gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst 使用 size + quality;nano-banana-pro 使用 aspect_ratio + output_resolution,不要混用两套参数。编辑的 multipart 边界由库生成,不手工设置 Content-Type。以下是创建片段;自动保存台账、轮询、下载的完整流程请使用下方 Skill 客户端。

PowerShell 5.1+ · 提交一次,立即保存 ID
if (-not $env:AIMASKER_API_KEY) { throw "请先设置环境变量" }
$headers = @{ Authorization = "Bearer $env:AIMASKER_API_KEY" }
$body = @{
  model = "gpt-image-2"; prompt = "<图片描述>"
  size = "3840x2160"; quality = "high"; n = 1; output_format = "png"
} | ConvertTo-Json
$reply = Invoke-RestMethod -Method Post -Uri "https://aimasker.com/v1/images/generations/async" -Headers $headers -ContentType "application/json; charset=utf-8" -Body ([Text.Encoding]::UTF8.GetBytes($body)) -TimeoutSec 120
$taskId = $reply.task_id
if (-not $taskId) { throw "未收到 task_id;停止并核查,不要重复提交" }
$taskFile = Join-Path (Get-Location) ("aimasker-task-" + [guid]::NewGuid().ToString("N") + ".txt")
Set-Content -LiteralPath $taskFile -Value $taskId
"task_id=$taskId"
PowerShell 5.1+ · nano-banana-pro 生成任务
if (-not $env:AIMASKER_API_KEY) { throw "请先设置环境变量" }
$headers = @{ Authorization = "Bearer $env:AIMASKER_API_KEY" }
$body = @{
  model = "nano-banana-pro"; prompt = "<图片描述>"
  aspect_ratio = "16:9"; output_resolution = "4K"; n = 1
} | ConvertTo-Json
$reply = Invoke-RestMethod -Method Post -Uri "https://aimasker.com/v1/images/generations/async" -Headers $headers -ContentType "application/json; charset=utf-8" -Body ([Text.Encoding]::UTF8.GetBytes($body)) -TimeoutSec 120
$taskId = $reply.task_id
if (-not $taskId) { throw "未收到 task_id;停止并核查,不要重复提交" }
$taskFile = Join-Path (Get-Location) ("aimasker-task-" + [guid]::NewGuid().ToString("N") + ".txt")
Set-Content -LiteralPath $taskFile -Value $taskId
"task_id=$taskId"
收到 HTTP 202 代表已接受任务,不代表图片已完成。先持久化顶层 task_id,再进行下一步。若响应中断,即使未收到 ID,任务也可能已创建。

查询状态,取得图片 URL

GET/v1/images/tasks/{task_id}

使用创建任务时的同一 API Key。优先遵守 Retry-After,否则至少间隔 5 秒查询;设置总等待上限。短暂连接异常、429、5xx 可重试查询,不能重发创建请求。

status含义下一步
processing任务仍在处理等待后查询同一 ID
completed任务已完成读取 result.data[].url
failed任务失败检查 error / http_status,保留 ID
PowerShell · 单次查询,接上一节
$taskId = (Get-Content -LiteralPath $taskFile -Raw).Trim()
$task = Invoke-RestMethod -Uri "https://aimasker.com/v1/images/tasks/$taskId" -Headers $headers -TimeoutSec 60
$task.status
if ($task.status -eq "completed") { $task.result.data | ForEach-Object { $_.url } }
# processing:至少等 5 秒再查询;failed:检查 error 和 http_status。

任务查询地址

任务查询地址可按固定模板 https://aimasker.com/v1/images/tasks/{task_id} 构造。任务完成后,遍历 result.data[].url 并使用响应中提供的完整 URL;不要追加 API 基址、改写路径或丢弃查询参数。

查询任务携带创建时使用的 API Key;获取结果图片时不携带 API Key。结果 URL 可能到期,应及时保存。

成功后保存全部图片

遍历 result.data[].url,不要只取首张;image_url 是首张图片的快捷字段。下载请求无需 API Key。先检查 HTTP 状态和图片可解码性,再保存为正式文件。

R2 图片约保留 24 小时,请尽快下载。任务记录约在最后一次状态更新后保留 24 小时,参考 expires_at;这与图片对象是不同期限,不是图片精确删除时间。查询不保证延长保留期。

模型比例与尺寸

Flare 与 Sunburst 的生成及编辑沿用下方 GPT 示例,将 model 改为对应的完整模型名即可。

GPT 图片模型像素尺寸

下表仅适用于 gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst。直接对接时,将表格中的像素值填入 size,并按需传 quality;档位名称不表示所有比例长边都为 4096。

比例1K2K4K · 推荐
1:11024x10242048x20482880x2880
5:41120x8962240x17923200x2560
4:31152x8642304x17283264x2448
3:21248x8322496x16643504x2336
16:91280x7202560x14403840x2160
21:91456x6243024x12963696x1584
4:5896x11201792x22402560x3200
3:4864x11521728x23042448x3264
2:3832x12481664x24962336x3504
9:16720x12801440x25602160x3840

nano-banana-pro 比例与清晰度

不要套用上面的像素尺寸表,也不需要计算 size。直接传 aspect_ratio(1:1、5:4、4:3、3:2、16:9、21:9、4:5、3:4、2:3 或 9:16)和 output_resolution(1K、2K 或 4K);不传 quality。实际像素以完成任务返回的图片为准。

安装 Skill 与配置环境变量

这部分只面向在 Claude Code 或 Codex 中使用图片技能的用户。无需逐条手写上方 API 请求,按下面三步完成设置。

第 1 步 · 选择软件并安装

新装目录按官方约定:Codex 为 ~/.agents/skills,Claude Code 为 ~/.claude/skills。若之前已装在 ~/.codex/skills 或自定义目录,升级时把下面 skillsRoot / SKILLS_ROOT 改成原目录,避免并存两个副本。

客户端负责创建一次、保存台账、查询状态、下载校验,支持 gpt-image-2、gpt-image-2.5-flare、gpt-image-2.5-sunburst 与 nano-banana-pro。支持原 task_id 查询及按台账恢复;默认模型为 GPT、默认 4K/high。

下载 AIMasker Skill ↓ 2026.09.10.1 · Python 3.10+
ZIP SHA-256
560bda04539ea212150f81d9489b92bf88fdfb48bb9df4461d18c9829fa7c7aa
新版安装器将旧技能单目录完整移到 skills 同级的 skill-backups,再安装干净副本。不会残留旧入口,也不改其他技能。请保存安装器输出的备份路径。
PowerShell · 校验、备份安装、独立 Python 环境
$ErrorActionPreference = "Stop"
$stage = Join-Path $env:TEMP ("aimasker-install-" + [guid]::NewGuid().ToString("N"))
New-Item -ItemType Directory -Path $stage | Out-Null
$zip = Join-Path $stage "aimasker-image-api.zip"
Invoke-WebRequest "https://aimasker.com/image-api-docs/downloads/aimasker-image-api.zip?v=2026.09.10.1" -OutFile $zip
if ((Get-FileHash $zip -Algorithm SHA256).Hash.ToLower() -ne "560bda04539ea212150f81d9489b92bf88fdfb48bb9df4461d18c9829fa7c7aa") { throw "校验失败,请重新获取最新文档与包" }
Expand-Archive -LiteralPath $zip -DestinationPath $stage
$skillsRoot = "$env:USERPROFILE\.agents\skills"
python "$stage\aimasker-image-api\scripts\install_skill.py" $zip --skills-dir $skillsRoot
if ($LASTEXITCODE -ne 0) { throw "安装失败,请保留现场" }
$skill = Join-Path $skillsRoot "aimasker-image-api"
python -m venv "$env:LOCALAPPDATA\aimasker-client-venv"
if ($LASTEXITCODE -ne 0) { throw "创建 Python 环境失败" }
$python = "$env:LOCALAPPDATA\aimasker-client-venv\Scripts\python.exe"
& $python -m pip install -r "$skill\requirements.txt"
if ($LASTEXITCODE -ne 0) { throw "依赖安装失败" }
$client = Join-Path $skill "scripts\aimasker_async_image.py"
& $python $client --help

配置 Skill 使用的环境变量

在控制台获取 API Key,仅保存到 AIMASKER_API_KEY。下面通过隐藏输入设置,不把真实 Key 写进命令历史、代码或截图。

打开 PowerShell,执行后在隐藏输入框粘贴 Key。当前窗口立即生效。

PowerShell · 设置并检查
$secret = Read-Host "AIMasker API Key" -AsSecureString
$env:AIMASKER_API_KEY = [System.Net.NetworkCredential]::new("", $secret).Password
Remove-Variable secret
if ($env:AIMASKER_API_KEY) { "已设置" } else { "未设置" }

希望以后打开应用也能读取?

可保存到当前用户环境。执行后完整退出并重新打开应用和终端;若仍未继承,注销再登录。不会显示 Key。

PowerShell · 可选永久设置
[Environment]::SetEnvironmentVariable("AIMASKER_API_KEY", $env:AIMASKER_API_KEY, "User")
检查时只显示“已设置 / 未设置”。不要直接打印变量值或整个环境变量列表。若 Skill 提示未设置,先检查它所在的进程是否继承了变量。

第 3 步 · 检查识别并开始使用

设置变量后,从能够继承该变量的环境重新启动 Claude Code 或 Codex。先请助手“检查 AIMasker Skill 是否可用,只检查环境变量是否存在和 --help,不创建图片任务”。不要为测试安装发送收费请求。

Codex 可使用 $aimasker-image-api;Claude Code 可使用 /aimasker-image-api。告诉助手虚拟环境 Python 路径与输出目录;API Key 由技能读取,无需粘贴到对话。

高级:直接运行 Skill 客户端

先完成上方安装和环境变量设置。以下各行是独立用途,按需执行;创建操作可能计费。

PowerShell · 创建 / 查询 / 恢复
# 创建生成任务:自动查询并下载,保存 manifest 与 task_id
& $python $client generate --prompt "<图片描述>" --ratio 16:9 --resolution 4K --quality high --output-dir ".\images"

# nano-banana-pro:直接发送比例和清晰度档位
& $python $client generate --model nano-banana-pro --prompt "<图片描述>" --ratio 16:9 --resolution 4K --output-dir ".\images"

PowerShell · 编辑一项任务
# 编辑任务(另一项操作,不是上一步的必需步骤)
& $python $client edit --prompt "<编辑要求>" --image ".\reference.png" --output-dir ".\images"

PowerShell · 查询已有任务
# 已有 ID 时只查询/下载,不创建任务
& $python $client query --task-id "<原task_id>" --output-dir ".\images"

PowerShell · 按原台账恢复
# 已有台账优先恢复,复用已校验的文件
& $python $client resume --manifest ".\images\<台账文件名>.json"

可选参数:--model gpt-image-2|gpt-image-2.5-flare|gpt-image-2.5-sunburst|nano-banana-pro、--mask、--output-format png|jpeg|webp、--n、--max-wait(默认 1800 秒)。质量和输出格式参数只用于 GPT。重开终端后需重新指定 Python 与客户端路径;安装不会自动修改全局 Python。配置好变量后完整重启技能宿主。

目录依据:Codex 官方技能文档 · Claude Code 官方技能文档。安装位置与 API 鉴权是两件事;选择软件不会改变图片 API 的任务流程。

异常时,保留原任务

创建超时了,要再点一次吗?

不要。已有 task_id 就查询原 ID;没有 ID 就保留创建时间和 Request ID(如有),联系支持。服务器可能已接受请求,重复提交可能再次计费。

查询失败、404 或等了很久怎么办?

401/403 检查原 Key 是否有效;404 可能是 Key 不匹配、ID 错误或记录过期,不代表未计费。429/5xx 与短暂连接异常可等待后重试 GET。达到客户端等待上限时,以原台账恢复;未知状态先停止核查。

任务完成了,但图片没有下载成功?

运行 resume --manifest <原台账>。它只查询原任务并下载缺失图片,不重新生成;已通过 SHA-256 核验的文件复用。未完成的图片从头下载,.part 不算成功结果。客户端使用任务响应中的 HTTPS 结果 URL,不携带 API Key、不跟随重定向;单张最多 100 MiB。

失败记录和台账应该怎样保存?

客户端记录 task_id、Request ID(如有)、创建时间、状态、文件大小和校验值,不记录 Key 或提示词原文。台账和图片只在本地保管,不放进公共仓库。错误信息可能包含业务内容,分享前脱敏;不要从客户端异常推断费用结果。

如何回退已安装的 Skill?

退出宿主,把当前这一项技能移到新的备份位置,再将安装器记录的旧技能备份移回原安装路径。不合并目录、不删除整个 skills、不覆盖其他技能。