本文档定义产品化阶段建议新增或调整的 API,覆盖:
设计原则:
成功:
{
"success": true,
"data": {}
}
失败:
{
"success": false,
"error": {
"code": "quota_exceeded",
"message": "今日配额已用尽"
}
}
POST /api/auth/register
请求体:
{
"username": "demo_user",
"password": "strong_password",
"email": "demo@example.com"
}
返回:
{
"success": true,
"data": {
"user_id": 1001
}
}
POST /api/auth/login
请求体:
{
"username": "demo_user",
"password": "strong_password",
"remember_me": true
}
返回:
{
"success": true,
"data": {
"username": "demo_user",
"is_admin": false,
"plan_code": "free"
}
}
POST /api/auth/logout
GET /api/auth/me
返回:
{
"success": true,
"data": {
"id": 1001,
"username": "demo_user",
"is_admin": false,
"is_active": true,
"plan": {
"code": "free",
"name": "免费版"
}
}
}
POST /api/auth/change-password
请求体:
{
"old_password": "oldpass",
"new_password": "newpass"
}
POST /api/files/upload
表单:
file返回:
{
"success": true,
"data": {
"file_id": 2001,
"file_name": "sample.pdf",
"file_url": "/static/files/demo_user/sample.pdf"
}
}
限制建议:
GET /api/files
返回:
{
"success": true,
"data": {
"items": [
{
"file_id": 2001,
"file_name": "sample.pdf",
"file_url": "/static/files/demo_user/sample.pdf",
"updated_at": "2026-04-30 12:00:00"
}
]
}
}
DELETE /api/files/{file_id}
POST /api/reader/progress
请求体:
{
"file_path": "/static/files/demo_user/sample.pdf",
"page": 12
}
GET /api/reader/progress?file_path=...
POST /api/tts/generate
适合:
请求体:
{
"text": "This is a test sentence.",
"voice": "af_sky",
"speed": 1.0,
"file_path": "/static/files/demo_user/sample.pdf",
"page": 12,
"sentence_index": 4
}
返回头建议:
X-Cache-Hit: 1/0X-Request-Id: xxx返回体:
audio/wavPOST /api/tts/tasks
请求体:
{
"text": "very long content ...",
"voice": "af_sky",
"speed": 1.0,
"file_path": "/static/files/demo_user/sample.pdf",
"page": 12
}
返回:
{
"success": true,
"data": {
"task_id": "task_123456",
"status": "queued"
}
}
GET /api/tts/tasks/{task_id}
返回:
{
"success": true,
"data": {
"task_id": "task_123456",
"status": "processing",
"progress": 60,
"audio_url": null
}
}
GET /api/tts/tasks/{task_id}/result
返回:
GET /api/tts/quota
返回:
{
"success": true,
"data": {
"plan_code": "free",
"daily_tts_chars_used": 5200,
"daily_tts_chars_limit": 10000,
"monthly_tts_chars_used": 23000,
"monthly_tts_chars_limit": 100000
}
}
GET /api/me/usage/summary
返回:
{
"success": true,
"data": {
"today_requests": 21,
"today_chars": 5200,
"today_audio_seconds": 910,
"month_requests": 210,
"month_chars": 23000
}
}
GET /api/me/plan
GET /api/admin/dashboard
返回:
{
"success": true,
"data": {
"today_active_users": 18,
"today_tts_requests": 540,
"today_cache_hit_rate": 0.63,
"running_tasks": 3,
"failed_tasks_today": 6
}
}
GET /api/admin/users?page=1&page_size=20&keyword=demo
GET /api/admin/users/{user_id}
返回建议包含:
POST /api/admin/users
POST /api/admin/users/{user_id}/status
请求体:
{
"is_active": false
}
POST /api/admin/users/{user_id}/reset-password
GET /api/admin/plans
POST /api/admin/plans
请求体:
{
"code": "pro_monthly",
"name": "专业版月付",
"daily_tts_chars": 50000,
"monthly_tts_chars": 500000,
"daily_tts_requests": 200,
"max_text_length": 3000,
"max_parallel_tasks": 2,
"price_month": 29.00
}
POST /api/admin/users/{user_id}/plan
请求体:
{
"plan_code": "pro_monthly",
"start_at": "2026-05-01 00:00:00",
"end_at": "2026-06-01 00:00:00"
}
GET /api/admin/tts-logs?page=1&page_size=20&status=failed&user_id=1001
GET /api/admin/tasks?page=1&page_size=20&status=processing
POST /api/admin/tasks/{task_id}/retry
GET /api/admin/cache/summary
返回建议:
POST /api/admin/cache/cleanup
请求体:
{
"mode": "expired_only"
}
可选值:
expired_onlyleast_recently_usedallGET /api/health
返回:
{
"success": true,
"data": {
"app": "ok",
"db": "ok",
"tts_upstream": "ok",
"redis": "ok"
}
}
GET /api/admin/system/metrics
返回建议:
request_id/api/auth/*/api/files/*/api/reader/progress/api/tts/generate/api/tts/quota/api/me/usage/summary/api/health/api/tts/tasks/api/tts/tasks/{task_id}/api/admin/dashboard/api/admin/tts-logs/api/admin/users/{user_id}/planAPI 设计的目标不是一次做大,而是先把“认证、文件、TTS、配额、后台”这五条主链路跑通。第一批接口上线后,你就已经具备一个可运营的基础版 SaaS 雏形。