开发文档
为开发者提供 API 接入与错误处理说明
快速开始
欢迎使用图床云开放平台。通过我们的 API 和开发工具,您可以轻松地将图片托管能力集成到您的应用、博客或工作流中。
获取 API 密钥
前往 个人中心 -> 开发者设置 申请您的 API Key。请妥善保管,不要在前端代码中直接暴露。
API 接口参考
鉴权方式
所有开放 API 都需要在请求头中传递 `X-Api-Key` 和 `X-Api-Secret` 两个字段。
| Header | 必选 | 说明 |
|---|---|---|
| X-Api-Key | 是 | 个人中心创建的 API Key |
| X-Api-Secret | 是 | 个人中心对应 API Key 的 API Secret |
POST 图片上传接口
https://api.tuchuang.cloud/v1/upload支持上传本地文件、粘贴图片或通过 URL 远程拉取。
| 参数名 | 类型 | 必选 | 描述 |
|---|---|---|---|
| file | File | 是 | 图片二进制数据 |
| tag | String | 否 | 图片标签,最长 30 个字符 |
请求示例:cURL
curl -X POST 'https://api.tuchuang.cloud/v1/upload' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'X-Api-Secret: YOUR_API_SECRET' \
-F 'file=@/path/to/image.png' \
-F 'tag=demo-tag'请求示例:fetch
const formData = new FormData();
formData.append('file', file);
formData.append('tag', 'demo-tag');
const response = await fetch('https://api.tuchuang.cloud/v1/upload', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'X-Api-Secret': 'YOUR_API_SECRET',
},
body: formData,
});
const result = await response.json();响应示例
{
code: 0,
data: {
url: 'https://cdn.tuchuang.cloud/image/xxxxxxxxxxxxxxx.png',
},
message: 'success',
}POST 图片列表接口
https://api.tuchuang.cloud/v1/image/list支持分页查询、关键字筛选、标签筛选与排序。
请求示例:cURL
curl -X POST 'https://api.tuchuang.cloud/v1/image/list' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'X-Api-Secret: YOUR_API_SECRET' \
-d '{
"keyword": "",
"tag": null,
"pageSize": 20,
"current": 1,
"sortBy": "createdAt",
"order": "DESC"
}'请求示例:fetch
const response = await fetch('https://api.tuchuang.cloud/v1/image/list', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Api-Key': 'YOUR_API_KEY',
'X-Api-Secret': 'YOUR_API_SECRET',
},
body: JSON.stringify({
keyword: '',
tag: null,
pageSize: 20,
current: 1,
sortBy: 'createdAt',
order: 'DESC',
}),
});
const result = await response.json();响应示例
{
code: 0,
data: {
list: [
{
id: '123456789012345',
name: 'demo.png',
url: 'https://cdn.tuchuang.cloud/image/demo.png',
size: 102400,
type: 'image/png',
viewCount: 12,
tag: 'demo',
createdAt: '2026-01-01T00:00:00.000Z',
updatedAt: '2026-01-01T00:00:00.000Z'
}
],
total: 1,
pageSize: 20,
current: 1
},
message: 'success'
}POST 图片删除接口
https://api.tuchuang.cloud/v1/image/delete支持批量删除,`ids` 传入图片 ID 数组即可。
请求示例:cURL
curl -X POST 'https://api.tuchuang.cloud/v1/image/delete' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'X-Api-Secret: YOUR_API_SECRET' \
-d '{
"ids": ["123456789012345", "123456789012346"]
}'请求示例:fetch
const response = await fetch('https://api.tuchuang.cloud/v1/image/delete', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Api-Key': 'YOUR_API_KEY',
'X-Api-Secret': 'YOUR_API_SECRET',
},
body: JSON.stringify({
ids: ['123456789012345', '123456789012346'],
}),
});
const result = await response.json();响应示例
{
code: 0,
data: {
deletedCount: 2
},
message: 'success'
}错误代码表
接口统一返回 `code`、`data`、`message` 三个字段。除 `0` 表示上传成功外,其余负数错误码均表示请求校验、权限或上传限制异常。
| 错误码 | 常量 | 含义 | 触发场景 |
|---|---|---|---|
| 0 | STATUS.SUCCESS | 上传成功。 | 文件上传到 R2 或 R2_TEMP 成功,并返回图片 URL。 |
| -3 | STATUS.SERVER_ERROR | 服务端异常。 | 接口内部抛出未预期错误,比如数据库、存储或运行时异常。 |
| -8 | STATUS.USER_BLOCKED | 用户已被封禁。 | 通过 X-Api-Key / X-Api-Secret 找到的用户状态为 INACTIVE。 |
| -11 | STATUS.API_KEY_REQUIRED | 缺少 API Key。 | 请求头里没有传入 X-Api-Key。 |
| -12 | STATUS.API_KEY_INVALID | API Key 无效。 | 保留兼容错误码,当前开放接口主要通过 X-Api-Key + X-Api-Secret 校验。 |
| -22 | STATUS.API_SECRET_REQUIRED | 缺少 API Secret。 | 请求头里没有传入 X-Api-Secret。 |
| -23 | STATUS.API_SECRET_INVALID | API Secret 无效。 | X-Api-Key 或 X-Api-Secret 不匹配,数据库中找不到对应凭证。 |
| -13 | STATUS.FILE_REQUIRED | 缺少上传文件。 | formData 中没有 file,或者 file 不是文件对象。 |
| -14 | STATUS.TAG_TOO_LONG | 标签过长。 | tag 长度超过 30 个字符。 |
| -15 | STATUS.DEVELOPER_PERMISSION_REQUIRED | 没有开发者权限。 | 用户所属权限组未开启 allowDeveloper。 |
| -16 | STATUS.UPLOAD_DISABLED | 没有上传权限。 | 用户所属权限组未开启 allowUpload。 |
| -17 | STATUS.FILE_TOO_LARGE | 文件大小超限。 | 上传文件大小超过权限配置里的 maxImageSize。 |
| -18 | STATUS.FILE_TYPE_NOT_ALLOWED | 文件格式不支持。 | 文件 MIME 类型不在 allowedImageFormats 允许列表中。 |
| -19 | STATUS.UPLOAD_LIMIT_EXCEEDED | 上传次数超限。 | 用户当天上传次数达到 dailyUploadLimit 上限。 |
| -20 | STATUS.STORAGE_INSUFFICIENT | 存储空间不足。 | 当前已用空间加本次文件大小后,超过权限配置的 spaceSize。 |
| -21 | STATUS.INVALID_CONTENT_TYPE | 请求体类型错误。 | 请求头 Content-Type 不是 multipart/form-data。 |