开发者接入 · v1
API 文档
API 专供有持续、批量任务需求的商家与合作者使用,不面向任务量很少的个人使用者。量大优惠更大,个人使用者请勿申请。
合作商家请联系管理员洽谈价格与接入方式;开通后,由管理员手动私信发送密钥。
接口地址https://guotiai3.cc/wp-json/site-api/v1
密钥与鉴权
所有业务请求使用 HTTPS,并携带以下请求头。一个账号只有一个有效密钥;更换密钥请联系管理员,旧密钥在重置后失效。
Authorization: Bearer <管理员提供的密钥>
请把密钥保存在服务器的环境变量中,供后端调用。不要放进网页 JavaScript、URL、公开代码或日志。账号停用、封禁后无法继续调用。
创建任务
POST /tasks · 有图片时使用 multipart/form-data,纯文本任务也支持 application/json。
每个新任务设置一个 Idempotency-Key 请求头,建议使用 UUID。超时或网络错误后,使用相同编号、相同参数和相同文件重试,避免重复创建和扣费。不同任务必须使用新编号。
| 字段 | 说明 |
|---|---|
type | 必填,功能类型见下表。 |
prompt | 生成、编辑、换衣和姿势调整任务必填,最多 6000 个 UTF-8 字节;图片、视频换脸不需要提示词。 |
negative_prompt | 可选,反向提示词,最多 3000 个 UTF-8 字节。 |
size | 文生视频、图生视频支持 480x832(默认)和 704x1280;图片任务和视频换脸省略。 |
image / image2 | 文件直接随创建请求上传,每张最多 18 MB,整个请求最多 70 MB。支持 JPG、PNG、WebP,最多 1200 万像素,单边 32–8192 像素。 |
video | 视频换脸上传目标视频,人物照片放在 image。支持 MP4 / WebM,最多 50 MB、250 秒、1080p、60 FPS。 |
source_task_code | 图生视频可使用本人已完成的文生图作品,替代图片上传。使用该作品的 19 位任务 code,以字符串传递。API 和站内作品采用相同 code,不支持数据库数字任务 ID。 |
| 功能 | type | 素材 |
|---|---|---|
| 文生图 | text_to_image | 不需要上传 |
| 单图编辑 | image_edit | image |
| 双图编辑 | multi_image_edit | image 和 image2 |
| 换衣(服装替换) | clothing_change | image:人物图片;prompt:要替换的日常服装 |
| 姿势调整 | pose_change | image:人物图片;prompt:目标姿势 |
| 图片换脸 | image_face_swap | image:人物照片;image2:目标图片 |
| 视频换脸 | video_face_swap | image:人物照片;video:目标视频 |
| 文生视频 | text_to_video | 不需要上传 |
| 图生视频 | image_to_video | image |
cURL:文生图
curl --request POST "https://guotiai3.cc/wp-json/site-api/v1/tasks" \
--header "Authorization: Bearer $SITE_API_KEY" \
--header "Idempotency-Key: $TASK_REQUEST_ID" \
--header "Content-Type: application/json" \
--data '{"type":"text_to_image","prompt":"雨后山间的木屋,柔和晨光"}'
SITE_API_KEY 填入管理员提供的密钥;TASK_REQUEST_ID 填入本次任务的唯一编号,并保存下来供重试使用。
Python:上传图片创建任务
import os
import uuid
import requests
# 每个业务任务生成一次;发生重试时继续使用原来的 request_id。
request_id = str(uuid.uuid4())
headers = {
"Authorization": "Bearer " + os.environ["SITE_API_KEY"],
"Idempotency-Key": request_id,
}
with open("input.jpg", "rb") as image:
response = requests.post(
"https://guotiai3.cc/wp-json/site-api/v1/tasks",
headers=headers,
data={"type": "image_to_video", "prompt": "云朵缓慢移动,镜头平稳推进"},
files={"image": ("input.jpg", image, "image/jpeg")},
timeout=90,
)
response.raise_for_status()
task_code = response.json()["task_code"]
换衣和姿势调整用于完整着装的普通人物编辑;换脸功能用于已获授权的非色情素材。
受理成功:HTTP 202
{
"task_code": "2026091209301234567",
"replayed": false,
"status_url": "<任务查询地址>"
}
task_code 与站内任务 code 一致,为 19 位字符串,请勿转成数字,以免丢失精度。
replayed: true 表示返回了同一请求已创建的任务,没有再次扣款。幂等记录随消费记录保留,不要复用旧编号发起新任务。
查询任务与下载结果
GET /tasks/{task_code},携带 API 密钥。建议每 5–10 秒查询一次,收到限流响应后退避重试。
{
"task_code": "2026091209301234567",
"status": "succeeded",
"price": 10,
"charged_amount": 10,
"refund_status": "none",
"message": "",
"result_url": "<短期有效下载地址>",
"result_expires_in": 600,
"result_retention_days": 30
}
状态为 queued(排队)、processing(执行、重试或结算中)、succeeded(成功)或 failed(最终失败且已退款)。refund_status 为 none、pending 或 refunded;pending 时继续查询,等待最终结果。
结果链接有效期 10 分钟,过期后重新查询。下载结果地址时不需要附带 API 密钥,也不要把 API 密钥转发给存储域名。已签发的存储链接在有效期内仍可使用,请妥善保管。
结果保留 30 天,请及时下载。已结束任务的输入素材在 7 天后清理;仍在执行或重试的任务保留素材。删除或过期的结果不会返回下载地址。
查询账户
GET /account,携带 API 密钥。返回余额、当前 API 价格、网站时区与日期、每日消费上限、今日已消费和剩余额度。
{
"balance": 1000,
"currency": "金币",
"date": "YYYY-MM-DD",
"timezone": "<网站时区>",
"daily_limit": 500,
"today_spent": 100,
"daily_remaining": 400,
"prices": {"text_to_image:default": 10}
}
以上金额仅为响应示例,实际价格以此接口及下表为准。账户接口不返回个人联系方式等资料。
价格与退款
具体价格请商家与管理员协商,量大优惠更大。下表为当前基础报价,合作价格与计费方式请在开通前确认。
| 功能 | 尺寸 | 基础报价 |
|---|---|---|
| 文生图 | 默认 | 10 金币 / 次 |
| 单图编辑 | 默认 | 10 金币 / 次 |
| 双图编辑 | 默认 | 10 金币 / 次 |
| 换衣(服装替换) | 默认 | 10 金币 / 次 |
| 姿势调整 | 默认 | 10 金币 / 次 |
| 图片换脸 | 默认 | 8 金币 / 次 |
| 视频换脸 | 默认 | 15 金币 / 30 秒(不足按 30 秒) |
| 文生视频 | 480x832 | 15 金币 / 次 |
| 文生视频 | 704x1280 | 20 金币 / 次 |
| 图生视频 | 480x832 | 15 金币 / 次 |
| 图生视频 | 704x1280 | 20 金币 / 次 |
视频换脸按每 30 秒计费,不足 30 秒按 30 秒计算;时长由服务器读取。其余功能按次计费。
使用本站金币余额。任务受理时扣款,排队和执行中的任务计入当日 API 消费;查询任务与账户不收取金币。
最终失败按创建时的价格退回金币,并回退原扣款日期的 API 消费额度。重试中的任务等待最终结果后结算。价格变动不影响已经受理的任务。
每个账号每分钟最多 60 次创建请求、500 次 API 请求。
错误处理
{"code":"invalid_api_key","message":"请提供有效 API 密钥","data":{"status":401}}
| HTTP 状态 | 处理建议 |
|---|---|
| 400 / 415 | 参数、素材或请求类型有误,请按错误说明修正。 |
| 401 | 密钥缺失或错误;确认是否已被管理员重置。 |
| 402 | 金币不足,请充值后重试。 |
| 403 | 授权已停用、账号不可用,或未使用 HTTPS。 |
| 404 | 任务、源作品或结果不存在,或不属于当前账号。 |
| 409 | account_busy:稍后按原请求重试;idempotency_conflict:同一编号对应的参数或文件发生了变化。 |
| 413 | 请求或文件过大。 |
| 429 | rate_limited:按 Retry-After 退避;daily_limit_exceeded:等待新的一天或联系管理员调整上限。 |
| 503 / 网络超时 | 创建请求保留原 Idempotency-Key 重试;持续异常时联系管理员。 |