通过 RESTful API 将 AI 图片增强能力集成到您的应用中
所有 API 请求需要携带 API Key,在请求头 X-API-Key 中传入。登录后在控制台可创建和管理你的 Key。
# 请求头示例 X-API-Key: YOUR_API_KEY_HERE
图片增强采用异步处理模式:第一步提交图片即刻返回任务ID;第二步轮询任务状态直到处理完成获取结果图片。
提交图片进行 AI 增强处理,立即返回 job_id,后台异步处理。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 要增强的图片文件,支持 JPG / PNG / WebP 格式 |
| scene | String | 否 (默认 normal) | 场景类型:normal 通用 /
portrait 人像 /
object 物体 /
scenery 风景 /
pets 宠物 /
text 文字 |
| output_format | String | 否 (默认 jpg) | 输出格式:jpg /
png /
webp |
第一步响应:
{
"code": 0,
"msg": "任务已提交",
"data": {
"job_id": "a1b2c3d4e5f6...",
"status": "pending",
"credits_remaining": 98
}
}
使用第一步返回的 job_id 轮询任务状态,建议每 2-3 秒查询一次,直到 status 变为 done 或 failed。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| job_id | String | 是 | 第一步返回的任务ID,作为 URL 路径参数 |
状态说明:
| status 值 | 说明 |
|---|---|
| pending | 排队等待处理 |
| processing | 正在增强中 |
| done | 处理完成,output_url 有值 |
| failed | 处理失败,error_message 有值 |
第二步响应(处理完成):
{
"code": 0,
"data": {
"job_id": "a1b2c3d4e5f6...",
"status": "done",
"output_url": "/files/xxx_enhanced.jpg",
"error_message": null,
"created_at": "2025-01-01T00:00:00",
"completed_at": "2025-01-01T00:00:15"
}
}
老照片修复采用异步处理模式:第一步提交照片即刻返回任务ID;第二步轮询任务状态直到处理完成。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 老照片文件,JPG / PNG / WebP |
| output_format | String | 否 (默认 webp) | 输出格式:webp / png / jpg |
| is_colorize | Int | 否 (默认 1) | 智能上色:1 开 / 0 关 |
| filter_style | String | 否 (默认 No_Style) | 滤镜风格:No_Style 无滤镜 / Hong_Kong_Cinema_Style 香港复古 / Japanese_Airy_Style 日系小清新 / ClassicKodak_AmericanVintage 经典胶片 / ModernStudio_ColdWhite 冷白皮 / Leica_Monochrome 黑白人文 / Dreamy_Glow 梦幻柔光 |
第一步响应:
{
"code": 0,
"data": { "job_id": "...", "status": "pending", "credits_remaining": 97 }
}
使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done。
第二步响应(修复完成):
{
"code": 0,
"data": {
"job_id": "...", "status": "done",
"output_url": "/files/xxx_restored.webp",
"error_message": null
}
}
import requests, time
API_KEY = "YOUR_API_KEY"
BASE_URL = "http://your-domain.com"
with open("/path/to/old_photo.jpg", "rb") as f:
resp = requests.post(f"{BASE_URL}/api/restore",
files={"file": ("photo.jpg", f, "image/jpeg")},
data={"output_format": "webp", "is_colorize": "1", "filter_style": "No_Style"},
headers={"X-API-Key": API_KEY}, timeout=30)
result = resp.json()
job_id = result["data"]["job_id"]
print(f"任务已提交,job_id: {job_id}")
for i in range(90):
time.sleep(2)
s = requests.get(f"{BASE_URL}/api/restore/status/{job_id}",
headers={"X-API-Key": API_KEY}).json()
st = s["data"]["status"]
print(f"状态: {st} ({i*2+2}秒)")
if st == "done":
print("成功! " + BASE_URL + s["data"]["output_url"])
break
elif st == "failed":
print("失败: " + s["data"].get("error_message", ""))
break
# 第一步:提交 curl -X POST http://your-domain.com/api/restore \ -H "X-API-Key: YOUR_API_KEY" \ -F "file=@old_photo.jpg" -F "output_format=webp" \ -F "is_colorize=1" -F "filter_style=No_Style" # 第二步:轮询 curl -X GET http://your-domain.com/api/restore/status/JOB_ID \ -H "X-API-Key: YOUR_API_KEY"
<?php
$api_key = 'YOUR_API_KEY';
$base_url = 'http://your-domain.com';
// 第一步:提交图片
$file = new CURLFile('/path/to/your/image.jpg');
$post = [
'file' => $file,
'scene' => 'normal',
'output_format' => 'jpg',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $base_url . '/api/enhance');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-Key: ' . $api_key]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
if ($result['code'] !== 0) {
die("提交失败: " . ($result['detail'] ?? $result['msg'] ?? '未知错误') . "\n");
}
$job_id = $result['data']['job_id'];
echo "任务已提交,job_id: " . $job_id . "\n";
// 第二步:轮询直到完成
$max_wait = 120; // 最长等待 120 秒
$interval = 2; // 每 2 秒查一次
$elapsed = 0;
while ($elapsed < $max_wait) {
sleep($interval);
$elapsed += $interval;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $base_url . '/api/enhance/status/' . $job_id);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-Key: ' . $api_key]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$status_resp = curl_exec($ch);
curl_close($ch);
$status_data = json_decode($status_resp, true);
$status = $status_data['data']['status'];
echo "状态: " . $status . " (" . $elapsed . "秒)\n";
if ($status === 'done') {
$output_url = $base_url . $status_data['data']['output_url'];
echo "成功! 结果图片: " . $output_url . "\n";
break;
} elseif ($status === 'failed') {
echo "失败: " . ($status_data['data']['error_message'] ?? '未知错误') . "\n";
break;
}
}
if ($elapsed >= $max_wait) {
echo "超时,请稍后手动查询状态\n";
}
import requests
import time
API_KEY = "YOUR_API_KEY"
BASE_URL = "http://your-domain.com"
# 第一步:提交图片
with open("/path/to/your/image.jpg", "rb") as f:
response = requests.post(
f"{BASE_URL}/api/enhance",
files={"file": ("image.jpg", f, "image/jpeg")},
data={"scene": "normal", "output_format": "jpg"},
headers={"X-API-Key": API_KEY},
timeout=30,
)
result = response.json()
if result["code"] != 0:
raise Exception(f"提交失败: {result.get('detail', result.get('msg', '未知错误'))}")
job_id = result["data"]["job_id"]
print(f"任务已提交,job_id: {job_id}")
print(f"剩余积分: {result['data']['credits_remaining']}")
# 第二步:轮询直到完成
max_wait = 120 # 最长等待 120 秒
interval = 2 # 每 2 秒查一次
elapsed = 0
while elapsed < max_wait:
time.sleep(interval)
elapsed += interval
status_resp = requests.get(
f"{BASE_URL}/api/enhance/status/{job_id}",
headers={"X-API-Key": API_KEY},
timeout=10,
)
status_data = status_resp.json()
status = status_data["data"]["status"]
print(f"状态: {status} ({elapsed}秒)")
if status == "done":
output_url = BASE_URL + status_data["data"]["output_url"]
print(f"成功! 结果图片: {output_url}")
break
elif status == "failed":
print(f"失败: {status_data['data'].get('error_message', '未知错误')}")
break
if elapsed >= max_wait:
print("超时,请稍后手动查询状态")
# 第一步:提交图片
curl -X POST http://your-domain.com/api/enhance \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@/path/to/image.jpg" \
-F "scene=normal" \
-F "output_format=webp"
# 返回 {"code":0,"data":{"job_id":"abc123...","status":"pending",...}}
# 第二步:轮询状态 (替换 JOB_ID)
curl -X GET http://your-domain.com/api/enhance/status/JOB_ID \
-H "X-API-Key: YOUR_API_KEY"
# 返回 {"code":0,"data":{"job_id":"abc123...","status":"done","output_url":"/files/xxx.webp",...}}
| 功能 | 端点 | 消耗积分 |
|---|---|---|
| 加载中... | ||
图片放大采用异步处理模式:第一步提交图片即刻返回任务ID;第二步轮询任务状态直到处理完成获取放大后的图片。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 要放大的图片文件,JPG / PNG / WebP |
| output_format | String | 否 (默认 jpg) | 输出格式:jpg / png / webp |
| scale | Int | 否 (默认 2) | 放大倍数:2 = 2倍 / 4 = 4倍 |
| target_resolution | String | 否 (默认 none) | 目标分辨率:none 不指定 / 2K / 4K / 8K / 16K |
第一步响应:
{
"code": 0,
"msg": "任务已提交",
"data": {
"job_id": "a1b2c3d4e5f6...",
"status": "pending",
"credits_remaining": 96
}
}
使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done。
第二步响应(放大完成):
{
"code": 0,
"data": {
"job_id": "...", "status": "done",
"output_url": "/files/xxx_upscaled.jpg",
"error_message": null
}
}
import requests, time
API_KEY = "YOUR_API_KEY"
BASE_URL = "http://your-domain.com"
with open("/path/to/image.jpg", "rb") as f:
resp = requests.post(f"{BASE_URL}/api/upscale",
files={"file": ("image.jpg", f, "image/jpeg")},
data={"output_format": "jpg", "scale": "2", "target_resolution": "none"},
headers={"X-API-Key": API_KEY}, timeout=30)
result = resp.json()
job_id = result["data"]["job_id"]
print(f"任务已提交,job_id: {job_id}")
for i in range(90):
time.sleep(2)
s = requests.get(f"{BASE_URL}/api/upscale/status/{job_id}",
headers={"X-API-Key": API_KEY}).json()
st = s["data"]["status"]
print(f"状态: {st} ({i*2+2}秒)")
if st == "done":
print("成功! " + BASE_URL + s["data"]["output_url"])
break
elif st == "failed":
print("失败: " + s["data"].get("error_message", ""))
break
# 第一步:提交 curl -X POST http://your-domain.com/api/upscale \ -H "X-API-Key: YOUR_API_KEY" \ -F "file=@image.jpg" -F "output_format=jpg" \ -F "scale=2" -F "target_resolution=none" # 第二步:轮询 curl -X GET http://your-domain.com/api/upscale/status/JOB_ID \ -H "X-API-Key: YOUR_API_KEY"
图片去模糊采用异步处理模式:第一步提交模糊图片即刻返回任务ID;第二步轮询任务状态直到处理完成获取去模糊后的图片。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 要去模糊的图片文件,JPG / PNG / WebP |
| output_format | String | 否 (默认 jpg) | 输出格式:jpg / png / webp |
第一步响应:
{
"code": 0,
"msg": "任务已提交",
"data": {
"job_id": "a1b2c3d4e5f6...",
"status": "pending",
"credits_remaining": 96
}
}
使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done。
第二步响应(去模糊完成):
{
"code": 0,
"data": {
"job_id": "...", "status": "done",
"output_url": "/files/xxx_unblurred.jpg",
"error_message": null
}
}
import requests, time
API_KEY = "YOUR_API_KEY"
BASE_URL = "http://your-domain.com"
with open("/path/to/blurry_image.jpg", "rb") as f:
resp = requests.post(f"{BASE_URL}/api/unblur",
files={"file": ("image.jpg", f, "image/jpeg")},
data={"output_format": "jpg"},
headers={"X-API-Key": API_KEY}, timeout=30)
result = resp.json()
job_id = result["data"]["job_id"]
print(f"任务已提交,job_id: {job_id}")
for i in range(90):
time.sleep(2)
s = requests.get(f"{BASE_URL}/api/unblur/status/{job_id}",
headers={"X-API-Key": API_KEY}).json()
st = s["data"]["status"]
print(f"状态: {st} ({i*2+2}秒)")
if st == "done":
print("成功! " + BASE_URL + s["data"]["output_url"])
break
elif st == "failed":
print("失败: " + s["data"].get("error_message", ""))
break
# 第一步:提交 curl -X POST http://your-domain.com/api/unblur \ -H "X-API-Key: YOUR_API_KEY" \ -F "file=@blurry_image.jpg" -F "output_format=jpg" # 第二步:轮询 curl -X GET http://your-domain.com/api/unblur/status/JOB_ID \ -H "X-API-Key: YOUR_API_KEY"
图片锐化采用异步处理模式:第一步提交图片即刻返回任务ID;第二步轮询任务状态直到处理完成获取锐化后的图片。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 要锐化的图片文件,JPG / PNG / WebP |
| output_format | String | 否 (默认 jpg) | 输出格式:jpg / png / webp |
第一步响应:
{
"code": 0,
"msg": "任务已提交",
"data": {
"job_id": "a1b2c3d4e5f6...",
"status": "pending",
"credits_remaining": 99
}
}
使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done。
第二步响应(锐化完成):
{
"code": 0,
"data": {
"job_id": "...", "status": "done",
"output_url": "/files/xxx_sharpened.jpg",
"error_message": null
}
}
import requests, time
API_KEY = "YOUR_API_KEY"
BASE_URL = "http://your-domain.com"
with open("/path/to/image.jpg", "rb") as f:
resp = requests.post(f"{BASE_URL}/api/sharpen",
files={"file": ("image.jpg", f, "image/jpeg")},
data={"output_format": "jpg"},
headers={"X-API-Key": API_KEY}, timeout=30)
result = resp.json()
job_id = result["data"]["job_id"]
for i in range(90):
time.sleep(2)
s = requests.get(f"{BASE_URL}/api/sharpen/status/{job_id}",
headers={"X-API-Key": API_KEY}).json()
st = s["data"]["status"]
if st == "done":
print("成功! " + BASE_URL + s["data"]["output_url"])
break
elif st == "failed":
print("失败: " + s["data"].get("error_message", ""))
break
# 第一步:提交 curl -X POST http://your-domain.com/api/sharpen \ -H "X-API-Key: YOUR_API_KEY" \ -F "file=@image.jpg" -F "output_format=jpg" # 第二步:轮询 curl -X GET http://your-domain.com/api/sharpen/status/JOB_ID \ -H "X-API-Key: YOUR_API_KEY"
文字图片清晰采用异步处理模式:第一步提交包含文字的图片即刻返回任务ID;第二步轮询任务状态直到处理完成获取清晰化后的图片。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 要清晰化的文字图片,JPG / PNG / WebP |
| output_format | String | 否 (默认 jpg) | 输出格式:jpg / png / webp |
第一步响应:
{
"code": 0,
"msg": "任务已提交",
"data": {
"job_id": "a1b2c3d4e5f6...",
"status": "pending",
"credits_remaining": 98
}
}
使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done。
第二步响应(清晰化完成):
{
"code": 0,
"data": {
"job_id": "...", "status": "done",
"output_url": "/files/xxx_unblur_text.jpg",
"error_message": null
}
}
import requests, time
API_KEY = "YOUR_API_KEY"
BASE_URL = "http://your-domain.com"
with open("/path/to/text_image.jpg", "rb") as f:
resp = requests.post(f"{BASE_URL}/api/unblur-text",
files={"file": ("image.jpg", f, "image/jpeg")},
data={"output_format": "jpg"},
headers={"X-API-Key": API_KEY}, timeout=30)
result = resp.json()
job_id = result["data"]["job_id"]
for i in range(90):
time.sleep(2)
s = requests.get(f"{BASE_URL}/api/unblur-text/status/{job_id}",
headers={"X-API-Key": API_KEY}).json()
st = s["data"]["status"]
if st == "done":
print("成功! " + BASE_URL + s["data"]["output_url"])
break
elif st == "failed":
print("失败: " + s["data"].get("error_message", ""))
break
# 第一步:提交 curl -X POST http://your-domain.com/api/unblur-text \ -H "X-API-Key: YOUR_API_KEY" \ -F "file=@text_image.jpg" -F "output_format=jpg" # 第二步:轮询 curl -X GET http://your-domain.com/api/unblur-text/status/JOB_ID \ -H "X-API-Key: YOUR_API_KEY"
背景移除采用异步处理模式:第一步提交图片即刻返回任务ID;第二步轮询任务状态直到处理完成获取去背景后的透明图片。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 要去除背景的图片文件,JPG / PNG / WebP |
| output_format | String | 否 (默认 png) | 输出格式(透明背景):png / webp |
第一步响应:
{
"code": 0,
"msg": "任务已提交",
"data": {
"job_id": "a1b2c3d4e5f6...",
"status": "pending",
"credits_remaining": 99
}
}
使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done。返回的图片为透明背景 PNG/WebP。
第二步响应(移除完成):
{
"code": 0,
"data": {
"job_id": "...", "status": "done",
"output_url": "/files/xxx_bg_removed.png",
"error_message": null
}
}
import requests, time
API_KEY = "YOUR_API_KEY"
BASE_URL = "http://your-domain.com"
with open("/path/to/image.jpg", "rb") as f:
resp = requests.post(f"{BASE_URL}/api/bg-remove",
files={"file": ("image.jpg", f, "image/jpeg")},
data={"output_format": "png"},
headers={"X-API-Key": API_KEY}, timeout=30)
result = resp.json()
job_id = result["data"]["job_id"]
for i in range(90):
time.sleep(2)
s = requests.get(f"{BASE_URL}/api/bg-remove/status/{job_id}",
headers={"X-API-Key": API_KEY}).json()
st = s["data"]["status"]
if st == "done":
print("成功! " + BASE_URL + s["data"]["output_url"])
break
elif st == "failed":
print("失败: " + s["data"].get("error_message", ""))
break
# 第一步:提交 curl -X POST http://your-domain.com/api/bg-remove \ -H "X-API-Key: YOUR_API_KEY" \ -F "file=@image.jpg" -F "output_format=png" # 第二步:轮询 curl -X GET http://your-domain.com/api/bg-remove/status/JOB_ID \ -H "X-API-Key: YOUR_API_KEY"
去除眩光采用异步处理模式:第一步提交图片即刻返回任务ID;第二步轮询任务状态直到处理完成获取去除眩光后的图片。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 要去除眩光的图片文件,JPG / PNG / WebP |
| output_format | String | 否 (默认 jpg) | 输出格式:jpg / png / webp |
| scene | String | 否 (默认 normal) | 眩光场景类型:normal 通用 / glasses 眼镜反光 / harsh_highlights 强光 / flash_spots 闪光点 / outdoor_sunlight 户外阳光 |
第一步响应:
{
"code": 0,
"msg": "任务已提交",
"data": {
"job_id": "a1b2c3d4e5f6...",
"status": "pending",
"credits_remaining": 98
}
}
使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done。
第二步响应(处理完成):
{
"code": 0,
"data": {
"job_id": "...", "status": "done",
"output_url": "/files/xxx_remove_glare.jpg",
"error_message": null
}
}
import requests, time
API_KEY = "YOUR_API_KEY"
BASE_URL = "http://your-domain.com"
with open("/path/to/image.jpg", "rb") as f:
resp = requests.post(f"{BASE_URL}/api/remove-glare",
files={"file": ("image.jpg", f, "image/jpeg")},
data={"output_format": "jpg", "scene": "normal"},
headers={"X-API-Key": API_KEY}, timeout=30)
result = resp.json()
job_id = result["data"]["job_id"]
for i in range(90):
time.sleep(2)
s = requests.get(f"{BASE_URL}/api/remove-glare/status/{job_id}",
headers={"X-API-Key": API_KEY}).json()
st = s["data"]["status"]
if st == "done":
print("成功! " + BASE_URL + s["data"]["output_url"])
break
elif st == "failed":
print("失败: " + s["data"].get("error_message", ""))
break
# 第一步:提交 curl -X POST http://your-domain.com/api/remove-glare \ -H "X-API-Key: YOUR_API_KEY" \ -F "file=@image.jpg" -F "output_format=jpg" -F "scene=normal" # 第二步:轮询 curl -X GET http://your-domain.com/api/remove-glare/status/JOB_ID \ -H "X-API-Key: YOUR_API_KEY"
照片上色采用异步处理模式:第一步提交黑白照片即刻返回任务ID;第二步轮询任务状态直到处理完成获取上色后的彩色图片。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | File | 是 | 要上色的黑白照片,JPG / PNG / WebP |
| output_format | String | 否 (默认 jpg) | 输出格式:jpg / png / webp |
第一步响应:
{
"code": 0,
"msg": "任务已提交",
"data": {
"job_id": "a1b2c3d4e5f6...",
"status": "pending",
"credits_remaining": 98
}
}
使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done。
第二步响应(上色完成):
{
"code": 0,
"data": {
"job_id": "...", "status": "done",
"output_url": "/files/xxx_colorized.jpg",
"error_message": null
}
}
import requests, time
API_KEY = "YOUR_API_KEY"
BASE_URL = "http://your-domain.com"
with open("/path/to/bw_photo.jpg", "rb") as f:
resp = requests.post(f"{BASE_URL}/api/colorize",
files={"file": ("bw_photo.jpg", f, "image/jpeg")},
data={"output_format": "jpg"},
headers={"X-API-Key": API_KEY}, timeout=30)
result = resp.json()
job_id = result["data"]["job_id"]
for i in range(90):
time.sleep(2)
s = requests.get(f"{BASE_URL}/api/colorize/status/{job_id}",
headers={"X-API-Key": API_KEY}).json()
st = s["data"]["status"]
if st == "done":
print("成功! " + BASE_URL + s["data"]["output_url"])
break
elif st == "failed":
print("失败: " + s["data"].get("error_message", ""))
break
# 第一步:提交 curl -X POST http://your-domain.com/api/colorize \ -H "X-API-Key: YOUR_API_KEY" \ -F "file=@bw_photo.jpg" -F "output_format=jpg" # 第二步:轮询 curl -X GET http://your-domain.com/api/colorize/status/JOB_ID \ -H "X-API-Key: YOUR_API_KEY"
图片编辑采用异步处理模式:第一步提交图片和编辑参数即刻返回任务ID;第二步轮询任务状态直到处理完成获取编辑后的图片。通过自定义提示词用自然语言描述修改需求。
POST /api/editor
Content-Type: multipart/form-data
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| file | file | ✅ 是 | 要编辑的图片文件,支持 JPG/PNG/WebP |
| output_format | string | 否 | 输出格式:jpg / png,默认 jpg |
| aspect_ratio | string | 否 | 画面比例:default / 1:1 / 4:3 / 3:2 / 16:9 / 9:16 / 2:3 / 3:4 / 21:9 / 9:21,默认 default |
| prompt | string | 否 | 自定义编辑提示词,用自然语言描述修改需求 |
{
"code": 0,
"msg": "任务已提交",
"data": {
"job_id": "abc123...",
"status": "pending",
"credits_remaining": 97
}
}
GET /api/editor/status/{job_id}
{
"code": 0,
"data": {
"job_id": "abc123...",
"status": "done",
"output_url": "/uploads/xxx.jpg",
"error_message": null,
"created_at": "2025-01-01T00:00:00",
"completed_at": "2025-01-01T00:00:10"
}
}
import time, requests
BASE_URL = "http://your-domain.com"
HEADERS = {"X-API-Key": "YOUR_API_KEY"}
# Step 1: Submit
files = {"file": open("photo.jpg", "rb")}
data = {
"output_format": "jpg",
"aspect_ratio": "default",
"prompt": "添加温暖的电影色调,柔化皮肤",
}
resp = requests.post(
f"{BASE_URL}/api/editor",
files=files, data=data, headers=HEADERS
)
job_id = resp.json()["data"]["job_id"]
print("Job ID:", job_id)
# Step 2: Poll
while True:
s = requests.get(
f"{BASE_URL}/api/editor/status/{job_id}",
headers=HEADERS
).json()["data"]
st = s["status"]
if st == "done":
print("成功! " + BASE_URL + s["output_url"])
break
elif st == "failed":
print("失败: " + s.get("error_message", ""))
break
time.sleep(2)
# 第一步:提交编辑任务 curl -X POST http://your-domain.com/api/editor \ -H "X-API-Key: YOUR_API_KEY" \ -F "file=@photo.jpg" -F "output_format=jpg" \ -F "aspect_ratio=default" -F "prompt=添加温暖的电影色调" # 第二步:轮询 curl -X GET http://your-domain.com/api/editor/status/JOB_ID \ -H "X-API-Key: YOUR_API_KEY"
# 查询积分余额 GET /api/user/credits Header: X-API-Key: YOUR_API_KEY # 查询套餐列表 (无需认证) GET /api/payment/plans # 查询使用记录 GET /api/user/task-history?page=1&limit=20 Header: X-API-Key: YOUR_API_KEY