开发者接入 · v1

API 文档

API 专供有持续、批量任务需求的商家与合作者使用,不面向任务量很少的个人使用者。量大优惠更大,个人使用者请勿申请。

合作商家请联系管理员洽谈价格与接入方式;开通后,由管理员手动私信发送密钥。

私信管理员开通 TG:@xubeifeng

接口地址
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_editimage
双图编辑multi_image_editimage 和 image2
换衣(服装替换)clothing_changeimage:人物图片;prompt:要替换的日常服装
姿势调整pose_changeimage:人物图片;prompt:目标姿势
图片换脸image_face_swapimage:人物照片;image2:目标图片
视频换脸video_face_swapimage:人物照片;video:目标视频
文生视频text_to_video不需要上传
图生视频image_to_videoimage

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_statusnonependingrefundedpending 时继续查询,等待最终结果。

结果链接有效期 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 秒)
文生视频480x83215 金币 / 次
文生视频704x128020 金币 / 次
图生视频480x83215 金币 / 次
图生视频704x128020 金币 / 次

视频换脸按每 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任务、源作品或结果不存在,或不属于当前账号。
409account_busy:稍后按原请求重试;idempotency_conflict:同一编号对应的参数或文件发生了变化。
413请求或文件过大。
429rate_limited:按 Retry-After 退避;daily_limit_exceeded:等待新的一天或联系管理员调整上限。
503 / 网络超时创建请求保留原 Idempotency-Key 重试;持续异常时联系管理员。