ArtKit API 接口文档
ArtKit 提供标准的 RESTful API 接口,让你可以轻松将 AI 智能抠图、图片处理、PDF 工具、签名设计等全平台能力集成到任何应用中。
https://artkit.cn
接口介绍
ArtKit API 支持以下核心能力:
- AI 一键去除图片背景,输出透明 PNG
- 批量处理多张图片,返回 ZIP 压缩包
- 智能去水印、图片压缩、添加水印
- 艺术效果:转素描、铅笔画、油画、动漫风格
- 美颜磨皮、降噪清晰化、黑白上色
- 证件照制作与识别、OCR 文字识别
- 头像制作、格式转换、长图拼接、拼图、缩放
- PDF 合并/拆分/压缩/转图片/转文本/OCR
- 二维码生成与解析、条形码生成
- GIF 压缩/分解、视频转 GIF、音频剪切/合并
- 文本去重、排版清理、加密解密、时间戳转换
- JSON 格式化、随机密码生成、单位换算
- 艺术签名设计、电子签名生成
- 支持 JPG / PNG / WebP / TIFF / AVIF 格式,最大 10MB(媒体文件 50MB)
图片类 API 使用 multipart/form-data 方式上传,文本/签名类 API 使用 application/json。所有功能接口均需认证。
鉴权方式
ArtKit API 使用 API Key 进行鉴权。你可以在 控制台 创建和管理 API Key。
认证方式一:HTTP Header(推荐)
在请求头中添加 X-API-Key:
X-API-Key: ak_your_api_key_here
认证方式二:Query 参数
在 URL 中添加 api_key 参数:
POST /api/remove-bg?api_key=ak_your_api_key_here
认证方式三:Bearer Token
使用登录获取的 JWT Token:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
获取 API Key 步骤
方案与限额
| 方案 | 每日限额 | API Key 数量 | 批量上限 |
|---|---|---|---|
| 免费版 | 5 次/天 | 1 个 | 1 张 |
| 专业版(¥29/月) | 不限 | 5 个 | 20 张 |
| 企业版 | 不限 | 20 个 | 100 张 |
请求频率限制:每个 IP 每 15 分钟最多 100 次请求。
注意:同一账号下创建的多个 API Key 共享每日使用次数限制,不会叠加。例如:专业版用户创建了 5 个 Key,5 个 Key 合计每日最多使用 500 次。
API Key 管理接口
以下接口需要使用 JWT Token(Bearer Token)认证,用于管理 API Key。
Content-Type: application/json
{
"email": "user@example.com",
"password": "your_password",
"name": "Your Name"
}
200 成功
{
"message": "注册成功",
"token": "eyJhbGciOiJIUzI1NiIs...",
"user": { "id": "...", "email": "...", "name": "...", "plan": "free" }
}
{ "email": "user@example.com", "password": "your_password" }
200 成功
{ "message": "登录成功", "token": "eyJ...", "user": { ... } }
Header: Authorization: Bearer YOUR_JWT_TOKEN
{ "name": "生产环境" }
200 成功
{
"message": "API Key 创建成功,请妥善保管",
"key": {
"id": "uuid",
"key": "ak_abc123def456...",
"name": "生产环境",
"createdAt": "2026-01-01T00:00:00.000Z"
}
}
Header: Authorization: Bearer YOUR_JWT_TOKEN
{ "keys": [{ "id": "...", "key": "ak_abc1****f456", "name": "...", "usageCount": 42 }] }
Header: Authorization: Bearer YOUR_JWT_TOKEN
将 :id 替换为要删除的 Key ID。
{ "message": "API Key 已删除" }
账号管理
获取用户信息、使用量统计、修改方案及密码管理。
Header: Authorization: Bearer YOUR_JWT_TOKEN
{ "user": { "id": "...", "email": "...", "name": "...", "plan": "free", "usage": { "today": 3, "total": 42 } } }
Header: Authorization: Bearer YOUR_JWT_TOKEN
{ "usage": { "today": 3, "todayDate": "2026-01-15", "total": 42, "limit": 5 } }
Header: Authorization: Bearer YOUR_JWT_TOKEN
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
plan | string | 目标方案:free / pro / enterprise |
{ "user": { ... }, "limits": { "dailyLimit": 500, "batchSize": 20 } }
Header: Authorization: Bearer YOUR_JWT_TOKEN
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
oldPassword | string | 当前密码 | |
newPassword | string | 新密码(至少 6 位) |
{ "message": "密码修改成功" }
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
email | string | 注册邮箱 |
{ "message": "如果该邮箱已注册,重置链接已发送", "token": "abc123..." }
生产环境应通过邮件发送 token,不会在响应中返回。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
token | string | 重置令牌 | |
newPassword | string | 新密码(至少 6 位) |
{ "message": "密码重置成功,请使用新密码登录" }
支付接口
用于管理付费订阅。目前支持支付宝和微信支付(演示模式)。
无需认证。
200 成功{ "plans": [{ "id": "pro_monthly", "plan": "pro", "priceYuan": "29.00", "label": "专业版 - 月付", "duration": 30 }, ...] }
Header: Authorization: Bearer YOUR_JWT_TOKEN
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
priceId | string | 方案 ID:pro_monthly / pro_yearly / enterprise_monthly / enterprise_yearly | |
payMethod | string | 支付方式:alipay / wechat |
{ "order": { "id": "...", "amount": 2900, "status": "pending" }, "qrContent": "artkit-pay://...", "message": "订单创建成功,请扫码支付" }
Header: Authorization: Bearer YOUR_JWT_TOKEN
将 :orderId 替换为订单 ID。确认后自动升级用户方案。
{ "message": "支付成功", "order": { "id": "...", "status": "paid", "plan": "pro" } }
Header: Authorization: Bearer YOUR_JWT_TOKEN
{ "orders": [{ "id": "...", "priceId": "pro_monthly", "amount": 2900, "status": "paid", "paidAt": "..." }] }
Header: Authorization: Bearer YOUR_JWT_TOKEN
{ "order": { "id": "...", "userId": "...", "priceId": "pro_monthly", "amount": 2900, "payMethod": "alipay", "status": "paid", "paidAt": "...", "expiresAt": "..." } }
错误处理
当请求失败时,API 返回 JSON 格式的错误信息:
{
"error": "错误描述信息",
"code": 400
}
| 状态码 | 说明 |
|---|---|
400 | 请求参数错误(文件格式不支持、缺少参数等) |
401 | 未认证或认证已过期(请先登录或提供有效 API Key) |
413 | 文件大小超过限制(图片最大 10MB,媒体文件最大 50MB) |
429 | 请求过于频繁或今日使用次数已达上限 |
500 | 服务器内部错误 |
单图抠图
请求参数
使用 multipart/form-data 编码
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件(JPG/PNG/WebP,最大 10MB) |
bgColor | String | 可选 | 背景颜色:transparent(默认)、white、black、#HEX |
crop | JSON | 可选 | 裁剪参数:{"left":0,"top":0,"width":500,"height":500} |
resize | JSON | 可选 | 调整尺寸:{"width":800,"height":600} |
响应
返回 image/png 二进制流,即去除背景后的透明 PNG 图片。
Content-Type: image/png
Content-Disposition: inline; filename="artkit_1234567890.png"
{
"error": "请上传图片文件",
"code": 400
}
批量抠图
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
images | File[] | 必填 | 多张图片文件(最多 20 张) |
bgColor | String | 可选 | 背景颜色(应用到所有图片) |
响应
返回 application/zip 压缩包,包含所有处理成功的 PNG 文件。如部分图片处理失败,ZIP 中包含 _errors.txt 错误日志。
Content-Type: application/zip
Content-Disposition: attachment; filename="artkit_batch_1234567890.zip"
背景替换
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 前景图片 |
background | File | 可选 | 自定义背景图片 |
bgColor | String | 可选 | 背景颜色(当未上传背景图时使用) |
响应
返回合成后的 image/png 图片。
图片信息
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
响应
{
"width": 1920,
"height": 1080,
"format": "jpeg",
"size": 524288,
"channels": 3,
"hasAlpha": false
}
去水印
请求参数
使用 multipart/form-data 编码
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 原始图片文件(JPG/PNG/WebP) |
mask | File | 必填 | 水印蒙版(白色=水印区域,黑色=保留区域,PNG 格式) |
响应
返回修复后的 image/png 图片,水印区域已被智能填充还原。
Content-Type: image/png
Content-Disposition: inline; filename="artkit_nowm_1234567890.png"
{
"error": "请上传水印蒙版",
"code": 400
}
健康检查
响应
{
"status": "ok",
"aiEngine": "ready",
"timestamp": "2026-03-15T12:00:00.000Z",
"uptime": 3600,
"version": "1.0.0"
}
图片压缩
请求参数
使用 multipart/form-data 编码
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件(JPG/PNG/WebP,最大 10MB) |
quality | Number | 可选 | 压缩质量 1-100,默认 80 |
format | String | 可选 | 输出格式:jpeg(默认)、png、webp |
maxWidth | Number | 可选 | 最大宽度(px),超出自动等比缩小 |
maxHeight | Number | 可选 | 最大高度(px),超出自动等比缩小 |
响应
返回压缩后的图片二进制流。
添加水印
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
text | String | 可选 | 水印文字,默认 ArtKit |
position | String | 可选 | 位置:center(默认)、top-left、top-right、bottom-left、bottom-right |
fontSize | Number | 可选 | 字号(px),默认 36 |
color | String | 可选 | 颜色 HEX 值,默认 #ffffff |
opacity | Number | 可选 | 透明度 0-1,默认 0.5 |
tiled | String | 可选 | 是否平铺:true / false(默认) |
响应
返回添加水印后的 image/png 图片。
图片转动漫
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
响应
返回动漫风格的 image/png 图片。平滑肤色、增强色彩、锐化边缘,打造二次元效果。
老照片修复
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
响应
返回修复后的 image/png 图片。去除划痕噪点、增强清晰度、还原色彩。
图片去模糊
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
strength | Number | 可选 | 锐化强度 1-10,默认 5 |
响应
返回去模糊处理后的 image/png 图片。
黑白照片上色
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
style | String | 可选 | 色调风格:natural(默认)、warm、cool、vintage、vivid |
响应
返回上色后的 image/png 图片。
图片旋转
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
angle | Number | 可选 | 旋转角度 0-360,默认 90 |
flipH | String | 可选 | 水平翻转:true / false(默认) |
flipV | String | 可选 | 垂直翻转:true / false(默认) |
响应
返回旋转后的 image/png 图片。
图片降噪
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
strength | Number | 可选 | 降噪强度 1-10,默认 5 |
sharpenAfter | String | 可选 | 降噪后锐化:true(默认)/ false |
响应
返回降噪处理后的 image/png 图片。
图片缩放
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
width | Number | 可选 | 目标宽度(px),留空保持比例 |
height | Number | 可选 | 目标高度(px),留空保持比例 |
fit | String | 可选 | 缩放模式:inside(默认)、cover、fill、contain |
响应
返回缩放后的 image/png 图片。
图片转素描
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
响应
返回素描风格的 image/png 图片。自动提取轮廓线条,生成逼真的素描画效果。
图片转铅笔画
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
响应
返回铅笔画风格的 image/png 图片。保留细节和纹理,生成具有艺术感的铅笔画。
图片转油画
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
strength | Number | 可选 | 油画强度 3-15,默认 7 |
响应
返回油画风格的 image/png 图片。增强色彩饱和度,模拟画笔笔触效果。
人脸美颜
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
strength | Number | 可选 | 磨皮强度 1-10,默认 5 |
响应
返回美颜处理后的 image/png 图片。平滑肤色去除瑕疵,保留面部细节。
证件照制作
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件(人像照片) |
size | String | 可选 | 证件照尺寸:1inch(默认,25×35mm)、2inch(35×49mm)、small2inch(35×45mm)、passport(33×48mm) |
bgColor | String | 可选 | 背景颜色 HEX 值,默认 #438edb(蓝色) |
响应
返回标准证件照的 image/png 图片。AI 自动抠图 + 背景替换 + 尺寸裁切。
证件照识别
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 证件照文件 |
响应
{
"width": 413,
"height": 579,
"format": "jpeg",
"size": 52488,
"dpi": 300,
"background": { "dominantColor": "#438edb", "name": "蓝色" },
"matchedSpec": "2寸 (35×49mm)"
}
OCR 文字识别
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
lang | String | 可选 | 识别语言:chi_sim+eng(默认,中英文)、chi_sim、eng、jpn、kor |
响应
{
"text": "识别到的文字内容...",
"confidence": 92
}
头像制作
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
size | Number | 可选 | 头像尺寸(px),默认 400 |
shape | String | 可选 | 形状:circle(默认,圆形)、rounded(圆角)、square(方形) |
响应
返回裁切后的 image/png 头像图片。圆形头像带透明边角。
图片格式转换
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 图片文件 |
format | String | 可选 | 目标格式:png(默认)、jpeg、webp、tiff、avif |
quality | Number | 可选 | 输出质量 1-100,默认 90(仅 jpeg/webp/avif 有效) |
响应
返回转换格式后的图片二进制流。Content-Type 对应目标格式。
长图拼接
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
images | File[] | 必填 | 多张图片文件(至少 2 张,最多 20 张) |
direction | String | 可选 | 方向:vertical(默认,纵向)、horizontal(横向) |
gap | Number | 可选 | 图片间距(px),默认 0 |
响应
返回拼接后的 image/png 长图。
# cURL 示例
curl -X POST https://artkit.cn/api/stitch \
-H "X-API-Key: ak_your_key" \
-F "images=@img1.jpg" \
-F "images=@img2.jpg" \
-F "images=@img3.jpg" \
-F "direction=vertical" \
-o stitched.png
拼图
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
images | File[] | 必填 | 多张图片文件(至少 2 张,最多 20 张) |
columns | Number | 可选 | 列数 2-4,默认 2 |
gap | Number | 可选 | 间距(px),默认 10 |
cellSize | Number | 可选 | 单元格大小(px),默认 400 |
响应
返回网格拼图的 image/png 图片。
# cURL 示例
curl -X POST https://artkit.cn/api/collage \
-H "X-API-Key: ak_your_key" \
-F "images=@img1.jpg" \
-F "images=@img2.jpg" \
-F "images=@img3.jpg" \
-F "images=@img4.jpg" \
-F "columns=2" \
-o collage.png
PDF 合并
将多个 PDF 文件合并为一个 PDF。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
files | File[] | 必填 | 多个 PDF 文件,最多 20 个 |
响应
返回合并后的 application/pdf。
PDF 拆分
按页码范围拆分 PDF 文件。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 必填 | PDF 文件 |
pages | String | 可选 | 页码范围,如 1-3 或 1,3,5,默认 1 |
响应
返回拆分后的 application/pdf。
PDF 压缩
压缩 PDF 文件大小。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 必填 | PDF 文件 |
响应
返回压缩后的 application/pdf。
PDF 转图片
将 PDF 每页转换为 PNG 图片,打包为 ZIP 返回。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 必填 | PDF 文件 |
响应
返回 application/zip 包含每页的 PNG 图片。
PDF 转文本
提取 PDF 中的文字内容。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 必填 | PDF 文件 |
响应
{
"text": "提取到的全部文字...",
"pages": 5,
"info": { "Title": "...", "Author": "..." }
}
PDF 扫描件 OCR
对扫描件 PDF 进行 OCR 文字识别。先尝试提取文本,若文本过少则对前 5 页进行 OCR 识别。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 必填 | PDF 文件 |
响应
{
"text": "识别出的文字...",
"method": "text-extraction | ocr",
"pages": 5
}
二维码生成
输入文本或链接生成二维码图片。
请求参数
Content-Type: application/json
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
text | String | 必填 | 要编码的文字或链接 |
width | Number | 可选 | 图片宽度 px,默认 300 |
color | String | 可选 | 前景色,默认 #000000 |
bgColor | String | 可选 | 背景色,默认 #ffffff |
响应
返回 image/png 二维码图片。
二维码解析
从上传的图片中识别并解码二维码。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | File | 必填 | 含二维码的图片 |
响应
{ "text": "https://artkit.cn", "found": true }
条形码生成
生成标准条形码图片。
请求参数
Content-Type: application/json
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
text | String | 必填 | 条码内容 |
type | String | 可选 | code128(默认)、ean13、code39、ean8 |
响应
返回 image/png 条形码图片。
GIF 压缩
压缩 GIF 文件大小,可调整尺寸和色彩数。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 必填 | GIF 文件 |
width | Number | 可选 | 目标宽度 px |
colors | Number | 可选 | 色彩数 64/128/256,默认 128 |
响应
返回压缩后的 image/gif。
GIF 分解
将动态 GIF 拆分为逐帧 PNG 图片。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 必填 | GIF 文件 |
响应
返回 application/zip 包含每帧 PNG。
视频转 GIF
将视频转换为 GIF 动图(需服务器安装 FFmpeg)。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 必填 | 视频文件(MP4/AVI/MOV/MKV/WebM) |
fps | Number | 可选 | 帧率,默认 10 |
width | Number | 可选 | 输出宽度 px,默认 480 |
响应
返回 image/gif 动图文件。
视频提取音频
从视频文件中提取音频轨道。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 必填 | 视频文件 |
format | String | 可选 | mp3(默认)/ wav / aac |
响应
返回音频文件。
音频剪切
截取音频文件的指定时间段。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 必填 | 音频文件 |
start | Number | 可选 | 开始时间(秒),默认 0 |
duration | Number | 可选 | 持续时长(秒),默认 30 |
format | String | 可选 | mp3(默认)/ wav |
响应
返回剪切后的音频文件。
音频合并
将多个音频文件按顺序合并为一个。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
files | File[] | 必填 | 多个音频文件,最多 20 个 |
format | String | 可选 | mp3(默认)/ wav |
响应
返回合并后的音频文件。
音视频格式转换
音视频格式轻量级互转。
请求参数
Content-Type: multipart/form-data
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 必填 | 音频或视频文件 |
format | String | 必填 | 目标格式:mp3 / wav / mp4 / webm / aac / ogg |
响应
返回转换后的音视频文件。
文本去重
按行去除重复内容。
请求参数
Content-Type: application/json
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
text | String | 必填 | 要去重的文本 |
响应
{ "result": "去重后的文本", "originalLines": 10, "uniqueLines": 7, "removedLines": 3 }
排版清理
去空行、去首尾空格、全角转半角、合并连续空格。
请求参数
Content-Type: application/json
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
text | String | 必填 | 要清理的文本 |
trim | Boolean | 可选 | 去首尾空格,默认 true |
removeEmptyLines | Boolean | 可选 | 去多余空行,默认 true |
fullwidthToHalf | Boolean | 可选 | 全角转半角,默认 false |
mergeSpaces | Boolean | 可选 | 合并连续空格,默认 true |
响应
{ "result": "清理后的文本" }
加密解密
MD5、SHA-256、SHA-512 哈希计算和 Base64 编码/解码。
请求参数
Content-Type: application/json
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
text | String | 必填 | 输入文本 |
algorithm | String | 可选 | md5(默认)/ sha256 / sha512 / base64-encode / base64-decode |
响应
{ "result": "e10adc3949ba59abbe56...", "algorithm": "md5", "action": "hash" }
时间戳转换
Unix 时间戳与日期时间双向转换,自动识别输入格式。
请求参数
Content-Type: application/json
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
value | String|Number | 必填 | 时间戳(秒/毫秒)或日期时间字符串 |
响应
{ "timestamp": 1700000000, "timestampMs": 1700000000000, "iso": "2023-11-14T22:13:20.000Z", "local": "2023/11/15 06:13:20", "direction": "timestamp-to-date" }
JSON 格式化
JSON 美化缩进或压缩,自动语法校验。
请求参数
Content-Type: application/json
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
text | String | 必填 | JSON 字符串 |
indent | Number | 可选 | 缩进空格数,0 为压缩,默认 2 |
响应
{ "result": "{\n \"key\": \"value\"\n}", "valid": true }
随机密码生成
生成自定义长度和字符类型的随机密码。
请求参数
Content-Type: application/json
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
length | Number | 可选 | 密码长度,默认 16 |
uppercase | Boolean | 可选 | 包含大写字母,默认 true |
lowercase | Boolean | 可选 | 包含小写字母,默认 true |
numbers | Boolean | 可选 | 包含数字,默认 true |
symbols | Boolean | 可选 | 包含特殊符号,默认 true |
count | Number | 可选 | 生成数量,默认 5 |
响应
{ "passwords": ["Xy$3kQ9...", "aB!7mN2..."], "length": 16, "count": 5 }
单位换算
长度、重量、温度等常用单位换算。
请求参数
Content-Type: application/json
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
value | Number | 必填 | 数值 |
from | String | 必填 | 源单位(如 km、kg、C) |
to | String | 必填 | 目标单位 |
type | String | 必填 | length / weight / temperature |
响应
{ "value": 1, "from": "km", "to": "m", "result": 1000, "type": "length" }
艺术签名设计
生成多种风格的艺术签名图片,支持优雅、粗犷、手写、印章、艺术等风格。
请求参数
Content-Type: application/json
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | String | 必填 | 签名文字(姓名) |
style | String | 可选 | 风格:elegant(优雅,默认)、bold(粗犷)、handwriting(手写)、seal(印章)、artistic(艺术) |
color | String | 可选 | 签名颜色(默认 #1a1a2e) |
bgColor | String | 可选 | 背景颜色(默认 transparent) |
width | Number | 可选 | 图片宽度(默认 600px) |
height | Number | 可选 | 图片高度(默认 200px) |
fontSize | Number | 可选 | 字号(默认 72) |
响应
返回 image/png 二进制流。
电子签名
生成手写风格电子签名图片,可用于合同、文档等电子签名场景。
请求参数
Content-Type: application/json
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | String | 必填 | 签名文字(姓名) |
color | String | 可选 | 签名颜色(默认 #000000) |
bgColor | String | 可选 | 背景颜色(默认 transparent) |
width | Number | 可选 | 图片宽度(默认 400px) |
height | Number | 可选 | 图片高度(默认 150px) |
fontSize | Number | 可选 | 字号(默认 48) |
lineWidth | Number | 可选 | 签名下划线粗细(默认 2) |
响应
返回 image/png 二进制流。
代码示例 - cURL
# 单图抠图(使用 API Key 鉴权)
curl -X POST https://artkit.cn/api/remove-bg \
-H "X-API-Key: ak_your_api_key_here" \
-F "image=@photo.jpg" \
-o result.png
# 指定白色背景
curl -X POST https://artkit.cn/api/remove-bg \
-H "X-API-Key: ak_your_api_key_here" \
-F "image=@photo.jpg" \
-F "bgColor=white" \
-o result.png
# 去水印
curl -X POST https://artkit.cn/api/remove-watermark \
-H "X-API-Key: ak_your_api_key_here" \
-F "image=@photo.jpg" \
-F "mask=@mask.png" \
-o result_clean.png
# 批量抠图
curl -X POST https://artkit.cn/api/batch-remove-bg \
-H "X-API-Key: ak_your_api_key_here" \
-F "images=@photo1.jpg" \
-F "images=@photo2.jpg" \
-F "images=@photo3.jpg" \
-o result.zip
# 健康检查(无需鉴权)
curl https://artkit.cn/api/health
# 注册账户
curl -X POST https://artkit.cn/api/auth/register \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","password":"your_password","name":"YourName"}'
# 创建 API Key
curl -X POST https://artkit.cn/api/auth/api-keys \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"生产环境"}'
# ── PDF 工具 ──
# PDF 合并
curl -X POST https://artkit.cn/api/pdf-merge \
-H "X-API-Key: ak_your_api_key_here" \
-F "files=@doc1.pdf" \
-F "files=@doc2.pdf" \
-o merged.pdf
# PDF 拆分
curl -X POST https://artkit.cn/api/pdf-split \
-H "X-API-Key: ak_your_api_key_here" \
-F "file=@document.pdf" \
-F "pages=1-3,5" \
-o split.pdf
# ── 二维码/条码 ──
# 生成二维码
curl -X POST https://artkit.cn/api/qr-generate \
-H "X-API-Key: ak_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"text":"https://artkit.cn","width":300}' \
-o qrcode.png
# ── GIF/音视频 ──
# GIF 压缩
curl -X POST https://artkit.cn/api/gif-compress \
-H "X-API-Key: ak_your_api_key_here" \
-F "file=@animation.gif" \
-o compressed.gif
# 视频提取音频
curl -X POST https://artkit.cn/api/extract-audio \
-H "X-API-Key: ak_your_api_key_here" \
-F "file=@video.mp4" \
-F "format=mp3" \
-o audio.mp3
# ── 文本工具 ──
# 文本去重
curl -X POST https://artkit.cn/api/text-dedup \
-H "X-API-Key: ak_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"text":"line1\nline2\nline1"}'
# 加密(MD5)
curl -X POST https://artkit.cn/api/crypto \
-H "X-API-Key: ak_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"text":"hello","algorithm":"md5"}'
# ── 签名工具 ──
# 艺术签名
curl -X POST https://artkit.cn/api/art-signature \
-H "X-API-Key: ak_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"name":"张三","style":"elegant","color":"#1a1a2e"}' \
-o signature.png
# 电子签名
curl -X POST https://artkit.cn/api/e-signature \
-H "X-API-Key: ak_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"name":"张三","color":"#000000"}' \
-o esign.png
代码示例 - Python
import requests
API_KEY = "ak_your_api_key_here"
HEADERS = {"X-API-Key": API_KEY}
# 单图抠图
def remove_background(image_path, output_path="result.png", bg_color="transparent"):
with open(image_path, "rb") as f:
resp = requests.post(
"https://artkit.cn/api/remove-bg",
headers=HEADERS,
files={"image": f},
data={"bgColor": bg_color}
)
if resp.status_code == 200:
with open(output_path, "wb") as out:
out.write(resp.content)
print(f" 已保存到 {output_path}")
else:
print(f" 错误: {resp.json()['error']}")
# 调用
remove_background("photo.jpg")
remove_background("photo.jpg", "white_bg.png", "white")
# 批量抠图
def batch_remove(image_paths, output_zip="batch.zip"):
files = [("images", open(p, "rb")) for p in image_paths]
resp = requests.post(
"https://artkit.cn/api/batch-remove-bg",
headers=HEADERS,
files=files
)
if resp.status_code == 200:
with open(output_zip, "wb") as out:
out.write(resp.content)
print(f" 批量结果已保存到 {output_zip}")
batch_remove(["photo1.jpg", "photo2.jpg", "photo3.jpg"])
# ── PDF 合并 ──
def merge_pdfs(pdf_paths, output="merged.pdf"):
files = [("files", open(p, "rb")) for p in pdf_paths]
resp = requests.post(
"https://artkit.cn/api/pdf-merge",
headers=HEADERS,
files=files
)
if resp.status_code == 200:
with open(output, "wb") as out:
out.write(resp.content)
print(f" 合并完成: {output}")
merge_pdfs(["doc1.pdf", "doc2.pdf"])
# ── 二维码生成 ──
def generate_qr(text, width=300, output="qr.png"):
resp = requests.post(
"https://artkit.cn/api/qr-generate",
headers={**HEADERS, "Content-Type": "application/json"},
json={"text": text, "width": width}
)
if resp.status_code == 200:
with open(output, "wb") as out:
out.write(resp.content)
print(f" 二维码已生成: {output}")
generate_qr("https://artkit.cn")
# ── 艺术签名 ──
def art_signature(name, style="elegant", color="#1a1a2e", output="sign.png"):
resp = requests.post(
"https://artkit.cn/api/art-signature",
headers={**HEADERS, "Content-Type": "application/json"},
json={"name": name, "style": style, "color": color}
)
if resp.status_code == 200:
with open(output, "wb") as out:
out.write(resp.content)
print(f" 签名已生成: {output}")
art_signature("张三", style="handwriting")
# ── 文本加密 ──
def crypto_text(text, algorithm="md5"):
resp = requests.post(
"https://artkit.cn/api/crypto",
headers={**HEADERS, "Content-Type": "application/json"},
json={"text": text, "algorithm": algorithm}
)
if resp.status_code == 200:
data = resp.json()
print(f" {algorithm.upper()}: {data['result']}")
return resp.json()
crypto_text("hello", "sha256")
代码示例 - Node.js
import fs from 'fs';
import FormData from 'form-data';
import fetch from 'node-fetch';
const API_KEY = 'ak_your_api_key_here';
// 单图抠图
async function removeBg(imagePath, outputPath = 'result.png') {
const form = new FormData();
form.append('image', fs.createReadStream(imagePath));
form.append('bgColor', 'transparent');
const resp = await fetch('https://artkit.cn/api/remove-bg', {
method: 'POST',
headers: { 'X-API-Key': API_KEY },
body: form,
});
if (resp.ok) {
const buffer = Buffer.from(await resp.arrayBuffer());
fs.writeFileSync(outputPath, buffer);
console.log(` 已保存到 ${outputPath}`);
} else {
const err = await resp.json();
console.error(` 错误: ${err.error}`);
}
}
removeBg('photo.jpg');
// 批量抠图
async function batchRemoveBg(imagePaths, outputZip = 'batch.zip') {
const form = new FormData();
imagePaths.forEach(p => form.append('images', fs.createReadStream(p)));
const resp = await fetch('https://artkit.cn/api/batch-remove-bg', {
method: 'POST',
body: form,
});
if (resp.ok) {
const buffer = Buffer.from(await resp.arrayBuffer());
fs.writeFileSync(outputZip, buffer);
console.log(` 批量结果已保存到 ${outputZip}`);
}
}
batchRemoveBg(['photo1.jpg', 'photo2.jpg']);
// ── 二维码生成 ──
async function generateQR(text, width = 300, outputPath = 'qr.png') {
const resp = await fetch('https://artkit.cn/api/qr-generate', {
method: 'POST',
headers: { 'X-API-Key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ text, width }),
});
if (resp.ok) {
const buffer = Buffer.from(await resp.arrayBuffer());
fs.writeFileSync(outputPath, buffer);
console.log(` 二维码已生成: ${outputPath}`);
}
}
generateQR('https://artkit.cn');
// ── 艺术签名 ──
async function artSignature(name, style = 'elegant', outputPath = 'sign.png') {
const resp = await fetch('https://artkit.cn/api/art-signature', {
method: 'POST',
headers: { 'X-API-Key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ name, style, color: '#1a1a2e' }),
});
if (resp.ok) {
const buffer = Buffer.from(await resp.arrayBuffer());
fs.writeFileSync(outputPath, buffer);
console.log(` 签名已生成: ${outputPath}`);
}
}
artSignature('张三', 'handwriting');
// ── 文本加密 ──
async function cryptoText(text, algorithm = 'md5') {
const resp = await fetch('https://artkit.cn/api/crypto', {
method: 'POST',
headers: { 'X-API-Key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ text, algorithm }),
});
if (resp.ok) {
const data = await resp.json();
console.log(` ${algorithm.toUpperCase()}: ${data.result}`);
}
}
cryptoText('hello', 'sha256');
代码示例 - Java
import java.net.http.*;
import java.net.URI;
import java.nio.file.*;
public class ArtKitAPI {
private static final String BASE_URL = "https://artkit.cn";
private static final String API_KEY = "ak_your_api_key_here";
public static byte[] removeBg(String imagePath) throws Exception {
String boundary = "----ArtKit" + System.currentTimeMillis();
byte[] fileBytes = Files.readAllBytes(Path.of(imagePath));
String fileName = Path.of(imagePath).getFileName().toString();
String body = "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"image\"; filename=\"" + fileName + "\"\r\n"
+ "Content-Type: image/jpeg\r\n\r\n";
String end = "\r\n--" + boundary + "--\r\n";
byte[] bodyBytes = body.getBytes();
byte[] endBytes = end.getBytes();
byte[] payload = new byte[bodyBytes.length + fileBytes.length + endBytes.length];
System.arraycopy(bodyBytes, 0, payload, 0, bodyBytes.length);
System.arraycopy(fileBytes, 0, payload, bodyBytes.length, fileBytes.length);
System.arraycopy(endBytes, 0, payload, bodyBytes.length + fileBytes.length, endBytes.length);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(BASE_URL + "/api/remove-bg"))
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.header("X-API-Key", API_KEY)
.POST(HttpRequest.BodyPublishers.ofByteArray(payload))
.build();
HttpResponse<byte[]> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofByteArray());
if (response.statusCode() == 200) {
Files.write(Path.of("result.png"), response.body());
System.out.println(" 已保存到 result.png");
}
return response.body();
}
public static void main(String[] args) throws Exception {
removeBg("photo.jpg");
// 二维码生成
generateQR("https://artkit.cn");
// 艺术签名
artSignature("张三", "elegant");
}
// 二维码生成
public static void generateQR(String text) throws Exception {
String json = "{\"text\":\"" + text + "\",\"width\":300}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(BASE_URL + "/api/qr-generate"))
.header("X-API-Key", API_KEY)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<byte[]> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofByteArray());
if (response.statusCode() == 200) {
Files.write(Path.of("qr.png"), response.body());
System.out.println(" 二维码已生成");
}
}
// 艺术签名
public static void artSignature(String name, String style) throws Exception {
String json = "{\"name\":\"" + name + "\",\"style\":\"" + style + "\",\"color\":\"#1a1a2e\"}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(BASE_URL + "/api/art-signature"))
.header("X-API-Key", API_KEY)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<byte[]> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofByteArray());
if (response.statusCode() == 200) {
Files.write(Path.of("signature.png"), response.body());
System.out.println(" 签名已生成");
}
}
}
ArtKit AI 智能抠图平台 · API v1.0.0 · 返回首页