API 文档

通过 RESTful API 将 AI 图片增强能力集成到您的应用中

认证方式

所有 API 请求需要携带 API Key,在请求头 X-API-Key 中传入。登录后在控制台可创建和管理你的 Key。

# 请求头示例
X-API-Key: YOUR_API_KEY_HERE

图片增强(异步两步流程)

图片增强采用异步处理模式:第一步提交图片即刻返回任务ID;第二步轮询任务状态直到处理完成获取结果图片。

第一步:提交图片 POST /api/enhance

提交图片进行 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
  }
}

第二步:查询任务状态 GET /api/enhance/status/{job_id}

使用第一步返回的 job_id 轮询任务状态,建议每 2-3 秒查询一次,直到 status 变为 donefailed

参数名类型必填说明
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;第二步轮询任务状态直到处理完成。

第一步:提交照片 POST /api/restore

参数名类型必填说明
fileFile老照片文件,JPG / PNG / WebP
output_formatString否 (默认 webp)输出格式:webp / png / jpg
is_colorizeInt否 (默认 1)智能上色:1 开 / 0
filter_styleString否 (默认 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 }
}

第二步:查询任务状态 GET /api/restore/status/{job_id}

使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done

第二步响应(修复完成):

{
  "code": 0,
  "data": {
    "job_id": "...", "status": "done",
    "output_url": "/files/xxx_restored.webp",
    "error_message": null
  }
}

老照片修复代码示例

Python (requests) — 两步轮询

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

# 第一步:提交
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 (cURL) — 两步轮询

<?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";
}

Python (requests) — 两步轮询

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 (命令行) — 两步操作

# 第一步:提交图片
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;第二步轮询任务状态直到处理完成获取放大后的图片。

第一步:提交图片 POST /api/upscale

参数名类型必填说明
fileFile要放大的图片文件,JPG / PNG / WebP
output_formatString否 (默认 jpg)输出格式:jpg / png / webp
scaleInt否 (默认 2)放大倍数:2 = 2倍 / 4 = 4倍
target_resolutionString否 (默认 none)目标分辨率:none 不指定 / 2K / 4K / 8K / 16K

第一步响应:

{
  "code": 0,
  "msg": "任务已提交",
  "data": {
    "job_id": "a1b2c3d4e5f6...",
    "status": "pending",
    "credits_remaining": 96
  }
}

第二步:查询任务状态 GET /api/upscale/status/{job_id}

使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done

第二步响应(放大完成):

{
  "code": 0,
  "data": {
    "job_id": "...", "status": "done",
    "output_url": "/files/xxx_upscaled.jpg",
    "error_message": null
  }
}

图片放大代码示例

Python (requests) — 两步轮询

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

# 第一步:提交
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;第二步轮询任务状态直到处理完成获取去模糊后的图片。

第一步:提交图片 POST /api/unblur

参数名类型必填说明
fileFile要去模糊的图片文件,JPG / PNG / WebP
output_formatString否 (默认 jpg)输出格式:jpg / png / webp

第一步响应:

{
  "code": 0,
  "msg": "任务已提交",
  "data": {
    "job_id": "a1b2c3d4e5f6...",
    "status": "pending",
    "credits_remaining": 96
  }
}

第二步:查询任务状态 GET /api/unblur/status/{job_id}

使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done

第二步响应(去模糊完成):

{
  "code": 0,
  "data": {
    "job_id": "...", "status": "done",
    "output_url": "/files/xxx_unblurred.jpg",
    "error_message": null
  }
}

图片去模糊代码示例

Python (requests) — 两步轮询

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

# 第一步:提交
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;第二步轮询任务状态直到处理完成获取锐化后的图片。

第一步:提交图片 POST /api/sharpen

参数名类型必填说明
fileFile要锐化的图片文件,JPG / PNG / WebP
output_formatString否 (默认 jpg)输出格式:jpg / png / webp

第一步响应:

{
  "code": 0,
  "msg": "任务已提交",
  "data": {
    "job_id": "a1b2c3d4e5f6...",
    "status": "pending",
    "credits_remaining": 99
  }
}

第二步:查询任务状态 GET /api/sharpen/status/{job_id}

使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done

第二步响应(锐化完成):

{
  "code": 0,
  "data": {
    "job_id": "...", "status": "done",
    "output_url": "/files/xxx_sharpened.jpg",
    "error_message": null
  }
}

图片锐化代码示例

Python (requests)

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

# 第一步:提交
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;第二步轮询任务状态直到处理完成获取清晰化后的图片。

第一步:提交图片 POST /api/unblur-text

参数名类型必填说明
fileFile要清晰化的文字图片,JPG / PNG / WebP
output_formatString否 (默认 jpg)输出格式:jpg / png / webp

第一步响应:

{
  "code": 0,
  "msg": "任务已提交",
  "data": {
    "job_id": "a1b2c3d4e5f6...",
    "status": "pending",
    "credits_remaining": 98
  }
}

第二步:查询任务状态 GET /api/unblur-text/status/{job_id}

使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done

第二步响应(清晰化完成):

{
  "code": 0,
  "data": {
    "job_id": "...", "status": "done",
    "output_url": "/files/xxx_unblur_text.jpg",
    "error_message": null
  }
}

文字图片清晰代码示例

Python (requests)

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

# 第一步:提交
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;第二步轮询任务状态直到处理完成获取去背景后的透明图片。

第一步:提交图片 POST /api/bg-remove

参数名类型必填说明
fileFile要去除背景的图片文件,JPG / PNG / WebP
output_formatString否 (默认 png)输出格式(透明背景):png / webp

第一步响应:

{
  "code": 0,
  "msg": "任务已提交",
  "data": {
    "job_id": "a1b2c3d4e5f6...",
    "status": "pending",
    "credits_remaining": 99
  }
}

第二步:查询任务状态 GET /api/bg-remove/status/{job_id}

使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done。返回的图片为透明背景 PNG/WebP。

第二步响应(移除完成):

{
  "code": 0,
  "data": {
    "job_id": "...", "status": "done",
    "output_url": "/files/xxx_bg_removed.png",
    "error_message": null
  }
}

背景移除代码示例

Python (requests)

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

# 第一步:提交
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;第二步轮询任务状态直到处理完成获取去除眩光后的图片。

第一步:提交图片 POST /api/remove-glare

参数名类型必填说明
fileFile要去除眩光的图片文件,JPG / PNG / WebP
output_formatString否 (默认 jpg)输出格式:jpg / png / webp
sceneString否 (默认 normal)眩光场景类型:
normal 通用 / glasses 眼镜反光 / harsh_highlights 强光 / flash_spots 闪光点 / outdoor_sunlight 户外阳光

第一步响应:

{
  "code": 0,
  "msg": "任务已提交",
  "data": {
    "job_id": "a1b2c3d4e5f6...",
    "status": "pending",
    "credits_remaining": 98
  }
}

第二步:查询任务状态 GET /api/remove-glare/status/{job_id}

使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done

第二步响应(处理完成):

{
  "code": 0,
  "data": {
    "job_id": "...", "status": "done",
    "output_url": "/files/xxx_remove_glare.jpg",
    "error_message": null
  }
}

去除眩光代码示例

Python (requests)

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

# 第一步:提交
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;第二步轮询任务状态直到处理完成获取上色后的彩色图片。

第一步:提交图片 POST /api/colorize

参数名类型必填说明
fileFile要上色的黑白照片,JPG / PNG / WebP
output_formatString否 (默认 jpg)输出格式:jpg / png / webp

第一步响应:

{
  "code": 0,
  "msg": "任务已提交",
  "data": {
    "job_id": "a1b2c3d4e5f6...",
    "status": "pending",
    "credits_remaining": 98
  }
}

第二步:查询任务状态 GET /api/colorize/status/{job_id}

使用第一步返回的 job_id 轮询,建议每 2 秒一次,直到 status 变为 done

第二步响应(上色完成):

{
  "code": 0,
  "data": {
    "job_id": "...", "status": "done",
    "output_url": "/files/xxx_colorized.jpg",
    "error_message": null
  }
}

照片上色代码示例

Python (requests)

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

# 第一步:提交
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

参数类型必需说明
filefile✅ 是要编辑的图片文件,支持 JPG/PNG/WebP
output_formatstring输出格式:jpg / png,默认 jpg
aspect_ratiostring画面比例:default / 1:1 / 4:3 / 3:2 / 16:9 / 9:16 / 2:3 / 3:4 / 21:9 / 9:21,默认 default
promptstring自定义编辑提示词,用自然语言描述修改需求

第一步 - 响应

{
  "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"
  }
}

代码示例

Python

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

# 第一步:提交编辑任务
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"

其他 API 端点

# 查询积分余额
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