Artgen API 文档
使用仪表盘 API 密钥,从你的服务器调用 Artgen:模型、风格、创作与转换。
请求发到 https://artgen.net,不是这个文档站。登录后在仪表盘 → API 密钥创建密钥,并且只在服务器端发送该密钥。
本文描述当前 HTTP 约定。modelId 和 styleId 必须来自实时目录,不要自行编造。
认证
POST /api/create 与 POST /api/convert 需要 API 密钥。GET /api/models 与 GET /api/styles 不需要。
用下面任一请求头发送密钥:
Authorization: Bearer $ARTGEN_API_KEY或:
x-api-key: $ARTGEN_API_KEY注意:
- 登录 Cookie 不能认证
/api/create或/api/convert。 - API 密钥 不能认证账号、仪表盘或后台接口。
- 两个请求头同时出现时必须是同一把密钥。
Authorization格式错误(包括非 Bearer)、密钥含空白或逗号、或两把密钥不一致,都会被拒绝。 - 把密钥放在服务器上。不要写进浏览器前端、公开仓库、提示词、URL、截图或日志。
在仪表盘 → API 密钥创建和管理:名称 1–32 个字符,有效期 30 / 90 / 365 天或永不过期(页面默认 90 天),完整密钥只在创建时显示一次,之后只保存哈希。可以重命名、停用、启用(未过期)或撤销。过期密钥不能再启用。「最近使用」表示最近一次认证成功,不表示出图成功。
GET /api/models
列出已发布模型。无需密钥。响应不缓存(Cache-Control: no-store)。
curl --silent --show-error --include --proto '=https' \
'https://artgen.net/api/models'必须拿到 HTTP 200 且为 JSON。不要加 -L 跟随重定向,也不要把 HTML 页面当成成功。
200
{
"models": [
{
"id": "published-model-id",
"name": "显示名称",
"description": "公开描述",
"supportsText": true,
"supportsTransfer": false,
"supportsInlineOutput": true,
"sizes": [{ "value": "1024x1024", "label": "1:1" }],
"maxPromptLength": 1600,
"sourceImageMaxDimension": 511
}
]
}| 字段 | 含义 |
|---|---|
id | 作为 modelId 发送。这是公开目录 id,不是供应商内部名称。 |
name、description | 展示信息。 |
supportsText | POST /api/create 要求为 true。 |
supportsTransfer | POST /api/convert 要求为 true。 |
supportsInlineOutput | 模型是否能返回满足 requireInlineOutput: true 的直接在响应里返回的图片数据。 |
sizes | 可用画布。请发送 value,不要发送 label。具体是边长还是宽高比取决于模型。 |
maxPromptLength | 用户 prompt 的最大长度。 |
sourceImageMaxDimension | 仅部分模型返回。若存在,转换参考图的两条边都不能超过该像素值。 |
500 — 目录加载失败时返回 { "error": "server_error" }。
GET /api/styles
返回目录中的全部风格。无需密钥。不分页。不包含内部提示词。响应不缓存(Cache-Control: no-store)。
curl --silent --show-error --include --proto '=https' \
'https://artgen.net/api/styles'可选查询参数:locale(en 或 zh-CN)。省略时默认为 en。其他值返回 400 { "error": "invalid_locale" }。
200
{
"styles": [
{
"id": "style-id",
"dimension": "2d",
"name": "风格名称",
"description": "公开描述"
}
]
}| 字段 | 含义 |
|---|---|
id | 原样作为 styleId 传入,也可以省略 styleId。 |
dimension | 2d 或 3d。3d 是平面图的立体视觉效果,不是网格或三维文件导出。 |
name、description | 按 locale 本地化的名称与说明。 |
POST /api/create
按文字生成图片。服务端将 mode 设为 text。需要已发布且 supportsText 为 true 的模型。
请求头: Authorization: Bearer … 或 x-api-key,以及 Content-Type: application/json。
请求体字段(未知字段会被拒绝):
| 字段 | 必填 | 规则 |
|---|---|---|
modelId | 是 | GET /api/models 中的已发布 id。 |
prompt | 是 | 去空白后非空,长度不超过该模型的 maxPromptLength。 |
styleId | 否 | 必须是 GET /api/styles 中的 id。 |
size | 否 | 所选模型 sizes[].value。省略时使用 label 为 1:1 的尺寸;若没有该尺寸,请求无效。 |
mode | 否 | 若传入必须是 text,冲突则拒绝。 |
requireInlineOutput | 否 | 布尔值。仅当模型 supportsInlineOutput 为真时可以传 true。 |
sourceImage | 否 | 创作接口不能传参考图,传入会被拒绝。 |
curl --silent --show-error --include --proto '=https' \
--request POST \
--header "Authorization: Bearer $ARTGEN_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"modelId":"id-from-models","prompt":"A quiet mountain lake at sunrise, watercolor"}' \
'https://artgen.net/api/create'POST /api/convert
按参考图转换。服务端将 mode 设为 transfer。需要已发布且 supportsTransfer 为 true 的模型。
请求头: 与创作接口相同。
请求体字段(未知字段会被拒绝):
| 字段 | 必填 | 规则 |
|---|---|---|
modelId | 是 | GET /api/models 中 supportsTransfer 为真的已发布 id。 |
prompt | 是 | 与创作接口相同。 |
sourceImage | 是 | PNG、JPEG 或 WebP 的 base64 data URL(data:image/png;base64,…、data:image/jpeg;base64,… 或 data:image/webp;base64,…)。解码后不超过 5 MiB(5,242,880 字节),字节内容必须与声明类型一致。不接受远程图片 URL 或 multipart 上传。若模型返回了 sourceImageMaxDimension,参考图两条边都不能超过该值。 |
styleId | 否 | GET /api/styles 中的 id。 |
size | 否 | 默认规则与创作接口相同(label 为 1:1)。 |
mode | 否 | 若传入必须是 transfer。 |
requireInlineOutput | 否 | 与创作接口相同。 |
curl --silent --show-error --include --proto '=https' \
--request POST \
--header "Authorization: Bearer $ARTGEN_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"modelId":"id-from-models","prompt":"A quiet mountain lake at sunrise, watercolor","sourceImage":"data:image/png;base64,..."}' \
'https://artgen.net/api/convert'成功响应
创作与转换成功时形状相同。仅当模型返回宽高时才包含 width 和 height。
{
"success": true,
"requestId": "uuid",
"data": {
"imageUrl": "data:image/jpeg;base64,...",
"model": "显示名称",
"modelId": "published-model-id"
}
}imageUrl 可能是 base64 data URL,也可能是 HTTPS 图片地址,请当作私密内容处理。生成响应带有 X-Request-Id(与 requestId 相同)和 Cache-Control: no-store。
没有幂等键、任务 id 或状态查询接口。每一次 POST 都是新请求。requestId 只用于排查,不能用来去重重试。
错误
创作与转换的错误体是 { "error": "<code>", "requestId": "<uuid>" },并带 X-Request-Id 与 Cache-Control: no-store。目录接口错误只有 { "error": "<code>" }。
| HTTP | error | 何时出现 |
|---|---|---|
400 | invalid_request | JSON 无效、未知字段、mode 不匹配、prompt 缺失或为空、modelId / styleId / size 无效、模型不支持该接口、转换参考图不是允许的 data URL、requireInlineOutput 不被该模型支持,或组合后的提示词被模型拒绝。 |
400 | invalid_locale | GET /api/styles 的 locale 不是 en 或 zh-CN。 |
401 | unauthorized | 密钥缺失、格式错误、两套凭据不一致、未知、已停用、已撤销、已过期,或所属用户不存在。 |
403 | forbidden | 密钥所属用户被封禁(且封禁未到期),或邮箱未验证。 |
402 | insufficient_credits | 账号无法执行此请求。 |
429 | rate_limited | 密钥被限流,或其配置的用量已用尽。 |
503 | provider_unavailable | 所选模型的上游不可用或未配置。 |
502 | generation_failed | 请求已被接受,但上游调用失败。 |
500 | generation_failed | 生成过程中的未预期错误。 |
500 | server_error | GET /api/models 无法加载目录。 |
向支持求助时请提供 HTTP 状态码和 requestId。不要发送 API 密钥、提示词、原始请求体或原始图片。
接下来
- 创建密钥:仪表盘 → API 密钥
- 模型说明:怎么选模型