CZL 图床 API 文档
- HTML 文档: https://img.czl.net/api-docs.html
- Markdown 文档: https://img.czl.net/api-docs.md
- 旧地址兼容: https://img.czl.net/page/api-docs.html
- API Base URL:
https://img.czl.net/api/v1
接入说明
- 所有接口都返回 JSON。
- 当前版本接口采用「Bearer Token」的方式验证授权,从个人中心获取 Token 后,通过
Authorization请求头传递,例如:Authorization: Bearer 1|1bJbwlqBfnggmOMEZqXT5XusaIwqiZjCDs7r1Ob5。 - 上传接口使用
multipart/form-data,文件字段名固定为file。 POST /upload在未携带Authorization时会按游客上传处理;是否允许游客上传取决于后台配置。GET /strategies在未登录时会返回游客组可用策略;登录后返回当前用户组可用策略。- 文档中接口的请求参数,使用红色「*」符号或"必填=是"标注,则表示为必传项。
统一响应结构
{
"status": true,
"message": "success",
"data": {}
}
| 字段 | 类型 | 说明 |
|---|---|---|
status |
Boolean | 状态,true 或 false |
message |
String | 描述信息 |
data |
Object | 数据,空数据时返回空对象 |
公共请求 headers
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
Authorization |
String | 否 | 授权 Token,例如:Bearer 1|1bJbwlqBfnggmOMEZqXT5XusaIwqiZjCDs7r1Ob5 |
Accept |
String | 是 | 必须设置为 application/json |
公共响应 headers
| 字段 | 类型 | 说明 |
|---|---|---|
X-RateLimit-Limit |
Integer | 当前客户端一分钟内请求配额 |
X-RateLimit-Remaining |
Integer | 当前客户端剩余请求配额 |
响应状态码 HTTP Status Code 说明
| 状态码 | 说明 |
|---|---|
200 |
请求成功 |
401 |
未登录或授权失败 |
403 |
管理员关闭了接口功能或没有该接口权限 |
429 |
超出请求配额,请求受限 |
500 |
服务端出现异常 |
快速示例
获取当前用户资料
curl --request GET "https://img.czl.net/api/v1/profile" \
--header "Accept: application/json" \
--header "Authorization: Bearer YOUR_TOKEN"
上传图片
curl --request POST "https://img.czl.net/api/v1/upload" \
--header "Accept: application/json" \
--header "Authorization: Bearer YOUR_TOKEN" \
--form "file=@/path/to/demo.png" \
--form "strategy_id=1" \
--form "permission=0"
用户相关
GET /profile
获取当前登录用户资料。
- 认证要求: 必须登录
- 请求参数: 无
返回参数:
| 字段 | 类型 | 说明 |
|---|---|---|
status |
Boolean | 状态,true 或 false |
message |
String | 描述信息 |
data |
Object | 数据 |
data.username |
String | 用户名 |
data.name |
String | 昵称 |
data.avatar |
String | 头像地址 |
data.email |
String | 邮箱地址 |
data.capacity |
Float | 总容量 |
data.size |
Float | 已使用容量 |
data.url |
String | 个人主页地址 |
data.image_num |
Integer | 图片数量 |
data.album_num |
Integer | 相册数量 |
data.registered_ip |
String | 注册 IP |
策略相关
GET /strategies
获取当前用户组可用的储存策略列表。
- 认证要求: 可匿名;未登录时返回游客组可用策略,登录时按当前用户组返回
- 请求体类型: 无
请求参数(Query):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
q |
String | 否 | 筛选关键字 |
返回参数:
| 字段 | 类型 | 说明 |
|---|---|---|
status |
Boolean | 状态,true 或 false |
message |
String | 描述信息 |
data |
Object | 数据 |
data.strategies |
Object[] | 策略数据 |
data.strategies[].id |
Integer | 策略 ID |
data.strategies[].name |
String | 策略名称 |
图片相关
POST /images/tokens
生成临时上传 Token。
- 认证要求: 必须登录
- 请求体类型:
application/json或表单均可
请求参数(Body):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
num |
Integer | 是 | 生成数量,最大 100 |
seconds |
Integer | 是 | 有效期(秒),最大 2626560(一个月) |
返回参数:
| 字段 | 类型 | 说明 |
|---|---|---|
status |
Boolean | 状态,true 或 false |
message |
String | 描述信息 |
data |
Object | 数据 |
data.tokens |
Object[] | 临时 Token 列表 |
data.tokens[].token |
String | token |
data.tokens[].expired_at |
String | 到期时间,格式 yyyy-MM-dd HH:mm:ss |
POST /upload
上传图片。
- 认证要求: 可匿名;登录后可使用用户能力、相册、默认策略等
- 请求体类型:
multipart/form-data
Headers:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
Content-Type |
String | 是 | 需要设置为 multipart/form-data |
请求参数(Body):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
file |
File | 是 | 图片文件 |
token |
String | 否 | 临时上传 Token;适合无需长期 Bearer Token 的上传场景 |
permission |
Integer | 否 | 图片广场展示状态,1=展示到图片广场,0=不展示到图片广场;不影响原图 URL 访问 |
image_id |
Integer | 否 | 重新上传并覆盖当前用户已有图片时使用 |
strategy_id |
Integer | 否 | 储存策略 ID |
album_id |
Integer | 否 | 相册 ID |
expired_seconds |
Integer | 否 | 自动删除秒数,最大 15759360(约 6 个月) |
expired_at |
String | 否 | 图片过期时间,格式 yyyy-MM-dd HH:mm:ss |
补充说明:
- 当用户组配置了固定过期时间时,自定义
expired_seconds/expired_at会被系统策略覆盖。 - 自定义删除时间最长不能超过 1 年。
- 如果不传
strategy_id,系统会优先使用用户默认策略,否则回退到当前组的第一个可用策略。
返回参数:
| 字段 | 类型 | 说明 |
|---|---|---|
status |
Boolean | 状态,true 或 false |
message |
String | 描述信息 |
data |
Object | 数据 |
data.key |
String | 图片唯一密钥 |
data.name |
String | 图片名称 |
data.pathname |
String | 图片路径名 |
data.origin_name |
String | 图片原始名 |
data.size |
Float | 图片大小,单位 KB |
data.mimetype |
String | 图片类型 |
data.extension |
String | 图片拓展名 |
data.md5 |
String | 图片 md5 值 |
data.sha1 |
String | 图片 sha1 值 |
data.links |
Object | 链接 |
data.links.url |
String | 图片访问 url |
data.links.html |
String | HTML 嵌入代码 |
data.links.bbcode |
String | BBCode |
data.links.markdown |
String | Markdown 图片语法 |
data.links.markdown_with_link |
String | 带跳转链接的 Markdown |
data.links.thumbnail_url |
String | 缩略图 url |
data.links.delete_url |
String | 图片删除 url |
GET /images
分页获取当前用户的图片列表。
- 认证要求: 必须登录
请求参数(Query):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
page |
Integer | 否 | 页码 |
order |
String | 否 | 排序方式:newest=最新,earliest=最早,utmost=最大,least=最小,like-desc=点赞最多,like-asc=点赞最少,view-desc=浏览最多,view-asc=浏览最少,origin-name-asc=原始名升序,origin-name-desc=原始名降序 |
permission |
String | 否 | 图片广场展示筛选:public=展示到图片广场,private=不展示到图片广场 |
album_id |
Integer | 否 | 相册 ID |
q |
String | 否 | 筛选关键字 |
返回参数:
| 字段 | 类型 | 说明 |
|---|---|---|
status |
Boolean | 状态,true 或 false |
message |
String | 描述信息 |
data |
Object | 数据 |
data.current_page |
Integer | 当前所在页页码 |
data.last_page |
Integer | 最后一页页码 |
data.per_page |
Integer | 每页展示数据数量 |
data.total |
Integer | 图片总数量 |
data.data |
Object[] | 图片列表 |
data.data[].key |
String | 图片唯一密钥 |
data.data[].name |
String | 图片名称 |
data.data[].origin_name |
String | 图片原始名称 |
data.data[].pathname |
String | 图片路径名 |
data.data[].size |
Float | 图片大小,单位 KB |
data.data[].mimetype |
String | 图片类型 |
data.data[].extension |
String | 图片拓展名 |
data.data[].width |
Integer | 图片宽度 |
data.data[].height |
Integer | 图片高度 |
data.data[].md5 |
String | 图片 md5 值 |
data.data[].sha1 |
String | 图片 sha1 值 |
data.data[].human_date |
String | 上传时间(友好格式) |
data.data[].date |
String | 上传日期,格式 yyyy-MM-dd HH:mm:ss |
data.data[].links |
Object | 链接,与上传接口返回参数中的 links 相同 |
DELETE /images/{key}
删除指定图片。
- 认证要求: 必须登录
请求参数(Params):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
key |
String | 是 | 图片密钥 |
返回参数:
| 字段 | 类型 | 说明 |
|---|---|---|
status |
Boolean | 状态,true 或 false |
message |
String | 描述信息 |
data |
Object | 数据 |
相册相关
GET /albums
分页获取当前用户的相册列表。
- 认证要求: 必须登录
请求参数(Query):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
page |
Integer | 否 | 页码 |
order |
String | 否 | 排序方式:newest=最新,earliest=最早,most=图片最多,least=图片最少,like-desc=点赞最多,like-asc=点赞最少,view-desc=浏览最多,view-asc=浏览最少 |
permission |
String | 否 | 权限筛选:public=公开,private=私有 |
q |
String | 否 | 筛选关键字 |
返回参数:
| 字段 | 类型 | 说明 |
|---|---|---|
status |
Boolean | 状态,true 或 false |
message |
String | 描述信息 |
data |
Object | 数据 |
data.current_page |
Integer | 当前所在页页码 |
data.last_page |
Integer | 最后一页页码 |
data.per_page |
Integer | 每页展示数据数量 |
data.total |
Integer | 相册总数量 |
data.data |
Object[] | 相册列表 |
data.data[].id |
Integer | 相册自增 ID |
data.data[].name |
String | 相册名称 |
data.data[].intro |
String | 相册简介 |
data.data[].image_num |
Integer | 相册图片数量 |
DELETE /albums/{id}
删除指定相册。
- 认证要求: 必须登录
请求参数(Params):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
String | 是 | 相册自增 ID |
返回参数:
| 字段 | 类型 | 说明 |
|---|---|---|
status |
Boolean | 状态,true 或 false |
message |
String | 描述信息 |
data |
Object | 数据 |
给 AI / 插件作者的建议
- 优先读取这份 Markdown 文档,而不是解析页面 DOM。
- 上传接口必须使用
multipart/form-data,并确认文件字段名是file。 - 分页接口请按统一响应结构读取
data.current_page、data.last_page、data.total和data.data。 - 如果你在做 WordPress、Obsidian、Raycast、n8n、Dify、Coze、浏览器扩展或自定义 SDK,建议先接通
GET /strategies、POST /upload、GET /images这三条主链路。