xBookvideo API
图书转视频 SaaS API — 上传图书,自动分集规划,AI 生成短视频。
Base URL: https://xbookvideo.com
Version: 1.0.0
认证方式
方式一:API Key(推荐,程序化调用)
在请求头中传递 API Key,支持两种 header:
# 方式 A: X-API-Key header
curl -H "X-API-Key: xbk_your_api_key_here" \
https://xbookvideo.com/api/v1/auth/me
# 方式 B: Authorization Bearer
curl -H "Authorization: Bearer xbk_your_api_key_here" \
https://xbookvideo.com/api/v1/auth/me
API Key 格式:xbk_ 前缀 + 32 位随机字符。
🔑 在 设置 → API Keys 中创建管理 API Key。
注意:API Key 明文仅在创建时显示一次,请妥善保存。如遗失,需创建新 Key。
方式二:JWT Token(Web 前端)
curl -H "Authorization: Bearer " \
https://xbookvideo.com/api/v1/auth/me
JWT Token 有效期 72 小时,通过 /api/v1/auth/login 获取。
权限范围(Scopes)
| Scope | 说明 |
read | 读取项目/视频/计划 |
write | 创建/更新项目内容 |
render | 触发渲染(规划、Demo、完整渲染) |
限流规则
| 套餐 | 每分钟请求数 | 高消耗端点 |
| Free | 10 | 10/min |
| Standard | 30 | 10/min |
| Premium / Creator / Pro | 60 | 10/min |
| Studio / Enterprise | 120 | 10/min |
限流响应包含以下 header:
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1721820000
超出限制时返回 429 Too Many Requests。
API 端点列表
认证 & API Key
| 方法 | 路径 | 说明 |
| POST | /api/v1/auth/register | 用户注册 |
| POST | /api/v1/auth/login | 用户登录 |
| GET | /api/v1/auth/me | 获取当前用户信息 |
| GET | /api/v1/auth/projects | 用户项目列表 |
| POST | /api/v1/api-keys | 创建 API Key |
| GET | /api/v1/api-keys | 列出 API Keys |
| DELETE | /api/v1/api-keys/{id} | 删除 API Key |
| PATCH | /api/v1/api-keys/{id}/toggle | 启用/禁用 API Key |
图书上传 & 写书
| 方法 | 路径 | 说明 |
| POST | /api/v1/upload | 上传图书文件 (PDF/DOCX/TXT/EPUB) |
| POST | /api/v1/create-text | 在线写书创建项目 |
| GET | /api/v1/projects/{id}/content | 获取文本内容 |
| GET | /api/v1/write-limits | 获取字数限制 |
分集规划 & 渲染
| 方法 | 路径 | 说明 |
| POST | /api/v1/plan | 生成分集规划(异步) |
| GET | /api/v1/projects/{id}/plan | 获取分集规划结果 |
| POST | /api/v1/generate-demo | 生成 Demo(前2集免费) |
| GET | /api/v1/projects/{id}/status | 查询渲染进度 |
| GET | /api/v1/queue/status | 渲染队列状态 |
视频 & 下载
| 方法 | 路径 | 说明 |
| GET | /api/v1/projects/{id}/videos | 获取视频列表 |
| GET | /api/v1/projects/{id}/videos/{ep}/stream | 视频流播放 |
| GET | /api/v1/projects/{id}/videos/{ep}/download | 下载视频(需付费) |
支付
| 方法 | 路径 | 说明 |
| POST | /api/v1/payment/create | 创建支付订单 |
| POST | /api/v1/payment/creem-webhook | Creem 支付回调 |
分享 & 压缩
| 方法 | 路径 | 说明 |
| POST | /api/v1/projects/{id}/share/compress | 压缩视频 (YouTube/TikTok/微信) |
| GET | /api/v1/projects/{id}/share/text | 获取分享文案 |
| GET | /api/v1/projects/{id}/share/card | 生成分享卡片 |
知识索引 & 搜索
| 方法 | 路径 | 说明 |
| POST | /api/v1/projects/{id}/index | 向量化索引 |
| POST | /api/v1/projects/{id}/search | 项目内语义搜索 |
| POST | /api/v1/search | 跨项目搜索 |
Google Books & 公有领域
| 方法 | 路径 | 说明 |
| GET | /api/v1/google-books/search | Google Books 搜索 |
| GET | /api/v1/public-domain/search | 公有领域书籍搜索 |
| GET | /api/v1/public-domain/import | 公有领域书籍导入 |
代码示例
Python
import httpx
API_KEY = "xbk_your_api_key_here"
BASE_URL = "https://xbookvideo.com"
# 1. 上传图书
with open("book.pdf", "rb") as f:
resp = httpx.post(
f"{BASE_URL}/api/v1/upload",
headers={"X-API-Key": API_KEY},
files={"file": ("book.pdf", f, "application/pdf")},
)
project_id = resp.json()["project_id"]
# 2. 生成分集规划
httpx.post(
f"{BASE_URL}/api/v1/plan",
headers={"X-API-Key": API_KEY, "Content-Type": "application/json"},
json={"project_id": project_id, "total_episodes": 12},
)
# 3. 轮询规划进度
import time
while True:
status = httpx.get(
f"{BASE_URL}/api/v1/projects/{project_id}/status",
headers={"X-API-Key": API_KEY},
).json()
if status["status"] in ("planned", "demo_ready", "completed"):
break
time.sleep(5)
# 4. 生成 Demo
httpx.post(
f"{BASE_URL}/api/v1/generate-demo",
headers={"X-API-Key": API_KEY, "Content-Type": "application/json"},
json={"project_id": project_id, "episode_indices": [0, 1]},
)
# 5. 获取视频列表
videos = httpx.get(
f"{BASE_URL}/api/v1/projects/{project_id}/videos",
headers={"X-API-Key": API_KEY},
).json()
for v in videos["videos"]:
print(f"Episode {v['episode']}: {v['title']} ({v['duration']:.0f}s)")
cURL — 创建 API Key
# 先用 JWT 登录获取 token
TOKEN=$(curl -s -X POST https://xbookvideo.com/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"your_username","password":"your_password"}' \
| python3 -c "import sys,json; print(json.load(sys.stdin)['token'])")
# 创建 API Key
curl -X POST https://xbookvideo.com/api/v1/api-keys \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"My Production Key","scopes":"read,write,render"}'
# 列出 API Keys
curl https://xbookvideo.com/api/v1/api-keys \
-H "Authorization: Bearer $TOKEN"
JavaScript (Node.js)
const API_KEY = "xbk_your_api_key_here";
const BASE = "https://xbookvideo.com";
// 上传图书
const formData = new FormData();
formData.append("file", fs.createReadStream("book.pdf"));
const uploadRes = await fetch(`${BASE}/api/v1/upload`, {
method: "POST",
headers: { "X-API-Key": API_KEY },
body: formData,
});
const { project_id } = await uploadRes.json();
// 生成分集规划
await fetch(`${BASE}/api/v1/plan`, {
method: "POST",
headers: {
"X-API-Key": API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ project_id, total_episodes: 12 }),
});
// 查询进度
const status = await fetch(
`${BASE}/api/v1/projects/${project_id}/status`,
{ headers: { "X-API-Key": API_KEY } }
).then(r => r.json());
console.log("Status:", status.status, "Progress:", status.progress);
错误码
| HTTP Status | 含义 | 常见原因 |
| 400 | Bad Request | 参数缺失/格式错误 |
| 401 | Unauthorized | API Key 无效/过期/未提供 |
| 403 | Forbidden | 权限不足(如非 Studio 访问白标功能) |
| 404 | Not Found | 项目/视频/Key 不存在 |
| 429 | Too Many Requests | 超出限流 |
| 503 | Service Unavailable | LLM/图片/支付服务未配置 |
xBookvideo API ·
Interactive Swagger Docs ·
← Back to App