Base:NEXT_PUBLIC_API_URL(本地 http://localhost:8000)。
面向终端用户的注册、登录与重置密码。鉴权后请求带 Authorization: Bearer <token>(登录 JWT,或设置页创建的 sv_… 密钥)。
邮箱注册
先发验证码,再带验证码注册。邀请码选填。
POST /v1/auth/send-code
Content-Type: application/json
{ "email": "user@example.com", "purpose": "register" }
成功:200 { "ok": true, "retry_after": 60 }。同一邮箱 60 秒内只能发一次。
| 码 | 说明 |
|---|---|
400 | 邮箱无效 |
409 | 邮箱已注册 |
429 | 请稍后再试 / 发送过于频繁 |
502 | 邮件发送失败 |
503 | 名额已满 / 邮件服务未配置 |
POST /v1/auth/register
Content-Type: application/json
{
"email": "user@example.com",
"password": "至少6位",
"email_code": "123456",
"invite_code": ""
}
成功:201,响应与登录相同(含 access_token)。
| 码 | 说明 |
|---|---|
400 | 邮箱无效、验证码错误、邀请码无效/过期/用完 |
409 | 邮箱已注册 |
503 | 用户名额已满 |
重置密码
purpose 用 reset。未注册邮箱也返回 200,不暴露是否存在。
POST /v1/auth/send-code
{ "email": "user@example.com", "purpose": "reset" }
POST /v1/auth/reset-password
{
"email": "user@example.com",
"email_code": "123456",
"password": "新密码至少6位"
}
成功后直接登录。验证码 10 分钟内有效。
登录
POST /v1/auth/login
Content-Type: application/json
{ "email": "user@example.com", "password": "…" }
成功:200
{
"access_token": "<jwt>",
"token_type": "bearer",
"user": { "id": "<user-uuid>", "email": "…", "display_name": "…" }
}
失败:401。
后续请求:Authorization: Bearer <access_token>。也可在设置页创建 sv_… 密钥,用法相同。
Node 示例
const API = process.env.LLMWIKI_API_URL; // http://localhost:8000
const login = await fetch(`${API}/v1/auth/login`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
email: process.env.USER_EMAIL,
password: process.env.USER_PASSWORD,
}),
});
if (!login.ok) throw new Error(await login.text());
const { access_token, user } = await login.json();
相关
HTTP API 总览 · 空间 · 论文相关接口 · 场景示例