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自动取色的像素坐标(可选)
tolerance0-100,默认 20
mode"connected" 或 "global"
edge_smooth0-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.png

JavaScript

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