REST API
基础地址: https://removecolor.online/api/v1
身份验证
所有请求都需要通过 Authorization 请求头携带 API 密钥。
Authorization: Bearer rc_live_xxxxx正式密钥(rc_live_)会消耗积分。测试密钥(rc_test_)在生产环境会被拒绝。
积分与计费
每次成功的图像操作固定消耗1 个积分 —— remove-color 与 grayscale 费率相同,与图片大小、模式和处理时间无关。新账号注册即赠 100 个免费积分。
- 只有返回HTTP 2xx 且带生成图像的请求才会计费。失败请求(参数校验错误、不支持的图片、超限、限流、服务器错误)一律免费。
- 积分不足时返回 HTTP 402 —— 积分已用尽。可在本站 /settings/credits 购买(Stripe 一次性结账,积分永不过期):
{"code":"INSUFFICIENT_CREDITS","credits_required":1,"credits_available":0} - 成功响应会携带更新后的余额:
X-Credits-Used: 1,X-Credits-Remaining: 97
接口列表
GET
/v1/health返回服务健康状态。无需鉴权。
GET
/v1/capabilities返回支持的格式、限制和可用选项。
POST
/v1/images/remove-color移除图片中的颜色。返回二进制 PNG。
参数(multipart/form-data):
| file | 图片文件(必填) |
| target_color | 十六进制颜色,如 #00FF00(提供 sample_x/y 时可选) |
| sample_x, sample_y | 自动取色的像素坐标(可选) |
| tolerance | 0-100,默认 20 |
| mode | "connected" 或 "global" |
| edge_smooth | 0-10,默认 2 |
POST
/v1/images/grayscale将图片转换为灰度(Rec.709)。返回二进制 PNG。
调用示例
curl
curl -X POST \
https://removecolor.online/api/v1/images/remove-color \
-H "Authorization: Bearer rc_live_xxxxx" \
-F "file=@photo.jpg" \
-F "target_color=#00FF00" \
-F "tolerance=20" \
-F "mode=global" \
-F "edge_smooth=2" \
--output result.pngJavaScript
import fs from 'fs';
const file = fs.readFileSync('photo.jpg');
const form = new FormData();
form.append('file', new Blob([file]), 'photo.jpg');
form.append('target_color', '#00FF00');
form.append('tolerance', '20');
form.append('mode', 'global');
form.append('edge_smooth', '2');
const res = await fetch('https://removecolor.online/api/v1/images/remove-color', {
method: 'POST',
headers: { 'Authorization': 'Bearer rc_live_xxxxx' },
body: form,
});
const png = await res.arrayBuffer();
fs.writeFileSync('result.png', Buffer.from(png));Python
import requests
url = 'https://removecolor.online/api/v1/images/remove-color'
headers = {'Authorization': 'Bearer rc_live_xxxxx'}
files = {'file': ('photo.jpg', open('photo.jpg', 'rb'), 'image/jpeg')}
data = {
'target_color': '#00FF00',
'tolerance': '20',
'mode': 'global',
'edge_smooth': '2',
}
res = requests.post(url, headers=headers, files=files, data=data)
with open('result.png', 'wb') as f:
f.write(res.content)速率限制
默认:每个 API 密钥每分钟 30 次请求(超出返回 HTTP 429),另有每日 5,000 次的安全阀。这些限制是叠加在积分之上的防滥用保护 —— 限流 ≠ 积分余额。积分是使用额度:每次成功请求消耗 1 积分。失败请求会计入限流,但绝不消耗积分。
OpenAPI
完整的 OpenAPI 3.1 规范见 /api/openapi.json /api/openapi.json