Looma
Sign in

API Documentation

从登录到团队存储,一页找到可用 API。

按调用者角色组织:先看通用认证,再接入独立用户的文件 API,最后处理企业团队管理员能力。超级管理员和 provider internal 接口不会出现在这里。

Common

通用 API:登录、会话、支付与助手

这些接口是所有角色共用的基础能力。优先用同源 Cookie 会话;需要脚本接入时,登录后拿到的 JWT 可放在 Authorization header 中。

POST/api/auth/send-code

发送登录验证码

向邮箱发送 6 位验证码,用于无密码登录。

公开接口

Request

{"email":"user@example.com"}

Response

{"success":true,"message":"Verification code sent"}
POST/api/auth/verify-login

验证验证码并登录

验证邮箱验证码,创建会话并返回 JWT token。

公开接口

Request

{"email":"user@example.com","code":"123456"}

Response

{"success":true,"user":{"id":"...","email":"user@example.com"},"token":"..."}
GET/api/auth/me

读取当前用户

恢复当前登录态、用户角色、租户和成员关系。

Cookie 会话或 Bearer JWT

Response

{"authenticated":true,"user":{"id":"..."},"memberships":[...]}
POST/api/auth/sync-cookie

同步 Cookie 会话

从 Authorization token 重新签发服务端 Cookie,适合浏览器恢复登录态。

Bearer JWT

Response

{"success":true}
POST/api/auth/current-tenant

切换当前租户

在用户拥有多个租户时,选择后续请求默认使用的租户。

Cookie 会话或 Bearer JWT

Request

{"tenantId":"<TENANT_ID>"}

Response

{"success":true,"tenantId":"<TENANT_ID>"}
POST/api/auth/logout

退出登录

清除当前会话 Cookie。

Cookie 会话

Response

{"success":true}
POST/api/pay/create

创建托管支付链接

为当前登录用户创建 hosted checkout URL。

登录用户

Request

{"productId":"<PRODUCT_ID>","successUrl":"https://example.com/success","cancelUrl":"https://example.com/cancel"}

Response

{"success":true,"checkoutUrl":"https://...","checkoutRequestId":"..."}
POST/api/ai/chat

创建 AI 助手回复

向内置助手发送最多 12 条消息,返回模型回复与用量。

公开接口,建议生产前按业务增加访问控制

Request

{"messages":[{"role":"user","content":"How do I upload a file?"}]}

Response

{"success":true,"reply":"...","model":"...","usage":{...}}

Independent users

面向独立用户:API Key、文件夹、文件与上传

独立用户可以使用租户级 API key 管理自己的文件空间。所有 key 都以当前租户为边界,无法访问管理员专用路由。

GET/api/keys

列出自己的 API Key

查看当前账号创建过的 API key 摘要。

登录会话或 Bearer JWT

Response

{"success":true,"data":{"keys":[...]}}

当前实现不允许用 API key 管理 API key,请先通过登录会话调用。

POST/api/keys

创建 API Key

创建一个租户级 API key;明文 key 只在创建响应中出现一次。

登录会话或 Bearer JWT

Request

{"name":"cli-uploader","expiresAt":"2026-12-31T00:00:00.000Z"}

Response

{"success":true,"data":{"keyId":"...","key":"d1vsk_..."}}
POST/api/keys/:keyId/revoke

撤销自己的 API Key

撤销当前用户拥有的 key。

登录会话或 Bearer JWT

Response

{"success":true,"data":{"revoked":true}}
GET/api/folders

列出文件夹

读取当前租户下可见的文件夹树。

Bearer API key 或登录会话

Response

{"success":true,"data":{"folders":[...]}}
POST/api/folders

创建文件夹

在根目录或父文件夹下创建新文件夹。

Bearer API key 或登录会话

Request

{"name":"images","parentId":null}

Response

{"success":true,"data":{"folder":{...}}}
PATCH/api/folders/:folderId

重命名或移动文件夹

更新文件夹名称或 parentId。

Bearer API key 或登录会话

Request

{"name":"images-2026","parentId":null}

Response

{"success":true,"data":{"folder":{...}}}
DELETE/api/folders/:folderId

删除文件夹

删除空文件夹;有内容时会返回错误。

Bearer API key 或登录会话

Response

{"success":true,"data":{"deleted":true}}
GET/api/files

列出文件

分页查询文件,支持按文件夹、可见性、上传者、MIME、分类和时间排序过滤。

Bearer API key 或登录会话

Response

{"success":true,"data":{"files":[...],"pagination":{"page":1,"limit":20}}}

folderId 是精确匹配,不会递归返回子文件夹内容。

POST/api/files/upload/init

初始化单段上传

为普通文件创建上传 session,并返回可直接 PUT 的 uploadUrl。

Bearer API key 或登录会话

Request

{"filename":"photo.jpg","size":1048576,"mimeType":"image/jpeg","visibility":"private","folderId":"<FOLDER_ID>"}

Response

{"success":true,"data":{"fileId":"...","sessionId":"...","uploadUrl":"..."}}
POST/api/files/upload/multipart/init

初始化分片上传

为大文件创建 multipart session。

Bearer API key 或登录会话

Request

{"filename":"archive.zip","size":52428800,"mimeType":"application/zip","visibility":"private","folderId":null}

Response

{"success":true,"data":{"fileId":"...","sessionId":"...","uploadId":"..."}}
POST/api/files/upload/multipart/part-url

获取分片上传 URL

为指定 partNumber 生成预签名上传地址。

Bearer API key 或登录会话

Request

{"sessionId":"<SESSION_ID>","partNumber":1}

Response

{"success":true,"data":{"uploadUrl":"...","partNumber":1}}
POST/api/files/upload/complete

完成上传

提交上传 session。分片上传需要提交 partNumber 与 etag。

Bearer API key 或登录会话

Request

{"sessionId":"<SESSION_ID>","parts":[{"partNumber":1,"etag":"<ETAG>"}]}

Response

{"success":true,"data":{"file":{...}}}
POST/api/files/upload/abort

取消上传

终止未完成的上传 session。

Bearer API key 或登录会话

Request

{"sessionId":"<SESSION_ID>"}

Response

{"success":true,"data":{"aborted":true}}
GET/api/files/:fileId

读取文件详情

获取文件元数据、可见性、大小和归属信息。

Bearer API key 或登录会话

Response

{"success":true,"data":{"file":{...}}}
PATCH/api/files/:fileId

更新文件可见性

在 private 和 public 之间切换。

Bearer API key 或登录会话

Request

{"visibility":"public"}

Response

{"success":true,"data":{"file":{...}}}
POST/api/files/:fileId/download

创建下载 URL

返回短时可用的下载地址。

Bearer API key 或登录会话

Response

{"success":true,"data":{"downloadUrl":"..."}}
GET/api/files/:fileId/preview

读取文件预览

以内联响应返回可预览文件内容。

Bearer API key 或登录会话

Response

binary response
POST/api/files/:fileId/move

移动文件

把文件移动到目标文件夹,null 表示根目录。

Bearer API key 或登录会话

Request

{"targetFolderId":"<TARGET_FOLDER_ID>"}

Response

{"success":true,"data":{"file":{...}}}
DELETE/api/files/:fileId

移入回收站

软删除文件,之后可恢复或永久删除。

Bearer API key 或登录会话

Response

{"success":true,"data":{"deleted":true}}
GET/api/trash

查看回收站

分页查看已删除文件。

Bearer API key 或登录会话

Response

{"success":true,"data":{"files":[...],"pagination":{...}}}
POST/api/files/:fileId/restore

恢复文件

把文件从回收站恢复到可见列表。

Bearer API key 或登录会话

Response

{"success":true,"data":{"file":{...}}}
DELETE/api/files/:fileId/purge

永久删除单个文件

从数据库和对象存储中永久删除文件。

Bearer API key 或登录会话

Response

{"success":true,"data":{"deleted":true}}
DELETE/api/trash

批量清空回收站

不带 body 时清空全部;传 fileIds 时只清理指定文件。

Bearer API key 或登录会话

Request

{"fileIds":["<FILE_ID>"]}

Response

{"success":true,"data":{"purgedCount":1}}
GET/api/storage/summary

读取存储概览

获取当前空间的容量、分类、相册和分享摘要。

Bearer API key 或登录会话

Response

{"success":true,"data":{...}}
GET/public/files/:fileId

公开文件访问

对 public 文件返回 302 跳转到下载地址。

公开接口,仅 public 文件可用

Response

302 redirect

Team administrators

面向企业客户:团队管理员 API

这些接口面向企业或团队管理员,用来管理团队成员和成员 API key。仅列出团队管理员应使用的能力,不展示超级管理员和 provider internal 路由。

GET/api/dashboard/admin

读取团队管理员仪表盘

获取管理员视角的团队、存储和成员摘要。

团队管理员登录会话或 JWT

Response

{"success":true,"data":{...}}
GET/api/admin/users

列出团队成员

查看当前管理员可管理的成员列表。

团队管理员登录会话或 JWT

Response

{"success":true,"data":{"users":[...]}}
POST/api/admin/users

创建团队成员

为团队创建普通成员,并返回初始 API key。

团队管理员登录会话或 JWT

Request

{"email":"member@example.com","displayName":"Member Name","role":"user"}

Response

{"success":true,"data":{"user":{...},"apiKey":"d1vsk_..."}}

创建管理员角色属于超级管理员能力,此文档不展示。

GET/api/admin/users/:userId/keys

查看成员 API Key

列出指定成员的 API key 摘要。

团队管理员登录会话或 JWT

Response

{"success":true,"data":{"keys":[...]}}
POST/api/admin/users/:userId/disable

禁用成员

禁用成员账号,并撤销该成员所有 API key。

团队管理员登录会话或 JWT

Response

{"success":true,"data":{"user":{...}}}
POST/api/admin/users/:userId/enable

启用成员

恢复被禁用成员的账号状态。

团队管理员登录会话或 JWT

Response

{"success":true,"data":{"user":{...}}}
POST/api/admin/keys/:keyId/revoke

撤销成员 API Key

管理员撤销团队成员的某个 API key。

团队管理员登录会话或 JWT

Response

{"success":true,"data":{"revoked":true}}

Guardrails

本页有意不展示超级管理员 API。

平台运营、超级管理员和 provider 内部接口不适合作为外部客户文档暴露。企业客户只需要团队管理员接口即可完成成员与 key 管理。