# LEAPERone (/zh/docs)
一个 API Key,调用主流 AI 模型和开发者服务。
```bash title="第一次 API 调用"
curl -X POST https://api.leaper.one/v1/chat/completions \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'
```
LEAPERone 是什么? [#leaperone-是什么]
LEAPERone 是统一的 AI API 网关。你可以用一个 API Key 调用对话补全、图片生成、音频转写等服务。
* **兼容 OpenAI** — 可直接替换现有接口,无需修改业务代码
* **按量计费** — 使用透明的点数计费
* **CLI 与控制台** — 管理 API Key、查询余额和查看用量
下一步 [#下一步]
获取 API Key,并在几分钟内完成第一次请求。
了解认证、模型和各个 API 端点。
查看所有端点的完整参数说明。
# 快速开始 (/zh/docs/quickstart)
1\. 创建账户 [#1-创建账户]
前往 [Dashboard](https://dashboard.leaper.one/signin),使用 GitHub 或 Google 登录。
2\. 获取 API Key [#2-获取-api-key]
进入 **Dashboard → Settings → API Keys** 并创建新的 Key。API Key 以 `sk-` 开头。
请安全保存 API Key。完整 Key 只会显示一次。
3\. 发起第一次请求 [#3-发起第一次请求]
```bash title="Chat Completion"
curl -X POST https://api.leaper.one/v1/chat/completions \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [
{"role": "user", "content": "Hello!"}
]
}'
```
你会收到类似下面的响应:
```json title="响应"
{
"id": "chatcmpl-abc123",
"choices": [
{
"message": {
"role": "assistant",
"content": "Hello! How can I help you today?"
}
}
]
}
```
4\. 查询余额 [#4-查询余额]
先通过控制面 CLI 登录,获取具有明确权限范围的控制令牌:
```bash
npx @leaperone/cli auth login
npx @leaperone/cli credit balance
```
服务集成可以使用带有 `credits:read` 权限的控制令牌:
```bash
curl https://api.leaper.one/api/v1/credits/balance \
-H "Authorization: Bearer lpc-your-control-token"
```
接下来 [#接下来]
* [身份认证](/zh/docs/guides/authentication) — 了解 API Key 管理
* [Chat Completions](/zh/docs/guides/chat-completions) — 流式响应、工具调用和 JSON 模式
* [图片生成](/zh/docs/guides/image-generation) — 异步图片生成流程
* [Seedance 2.0](/zh/docs/api-reference/video-generation) — CDN 图片引用、状态轮询和 MP4 下载
# CLI (/zh/docs/advanced/cli)
LEAPERone CLI 让你可以直接在终端中管理 API 密钥、查询余额并浏览文档。
安装 [#安装]
无需安装,直接通过 `npx` 运行:
```bash
npx @leaperone/cli
```
也可以全局安装:
```bash
npm install -g @leaperone/cli
```
全局安装后,可以使用 `leaperone` 命令及其短别名 `lpr`。
身份验证 [#身份验证]
登录并将 CLI 连接到你的 LEAPERone 账户:
```bash
npx @leaperone/cli auth login
```
该命令会打开浏览器完成身份验证。如果你使用无界面服务器或远程机器,请使用设备授权流程:
```bash
npx @leaperone/cli auth login --device
```
查看当前身份验证状态:
```bash
npx @leaperone/cli auth status
```
退出登录并删除已保存的凭据:
```bash
npx @leaperone/cli auth logout
```
命令 [#命令]
API 密钥 [#api-密钥]
```bash
# List all API keys
npx @leaperone/cli apikey list
# Create a new API key
npx @leaperone/cli apikey create -n "my-app-key"
# Revoke an API key by name
npx @leaperone/cli apikey revoke -n "my-app-key"
```
新建的 API 密钥只会显示一次,请立即妥善保存。
余额 [#余额]
```bash
# Check your current credit balance
npx @leaperone/cli credit balance
# View recent usage history
npx @leaperone/cli credit usage
# Show last 50 records
npx @leaperone/cli credit usage -l 50
```
文档 [#文档]
无需离开终端即可浏览 API 端点、模型和价格:
```bash
# List all API endpoints
npx @leaperone/cli docs endpoints
# List available models and pricing
npx @leaperone/cli docs models
# Show the quick start guide
npx @leaperone/cli docs quickstart
```
升级 [#升级]
如果你全局安装了 CLI,可以直接在终端中升级:
```bash
# Upgrade the global install
leaperone upgrade
# Short alias also works
lpr upgrade
```
如果你使用 `npx`,直接运行最新版本的软件包:
```bash
npx @leaperone/cli@latest
```
JSON 输出 [#json-输出]
所有命令都支持 `--json` 参数,可输出机器可读格式,适合脚本和 CI 流程:
```bash
npx @leaperone/cli credit balance --json
lpr credit balance --json
```
```json title="JSON 输出示例"
{
"paid": 10.0,
"gift": 5.0,
"total": 15.0,
"giftExpiresAt": "2026-04-01T00:00:00.000Z"
}
```
Agent Skills [#agent-skills]
LEAPERone CLI 内置了 [Agent Skills](https://skills.sh/)。这是一组可复用的指令集,能帮助 AI 编程助手(Claude Code、Cursor、Codex、Windsurf 等)理解如何使用 LEAPERone。
快速安装 [#快速安装]
```bash
# View install guide
npx @leaperone/cli skills
# Auto-discover from node_modules (recommended)
npx skills-npm
# Or install via skills CLI
npx skills add $(npx @leaperone/cli skills path)
# Or manual copy (Claude Code)
cp -r $(npx @leaperone/cli skills path)/leaperone-cli ~/.claude/skills/
```
功能 [#功能]
安装后,你的 AI agent 将能够:
* 完成身份验证并管理 API 密钥
* 查询余额和用量
* 通过 OpenAI 兼容端点发送 API 请求
* 浏览文档并检查端点状态
支持的 Agent [#支持的-agent]
Skills 支持 40 多种 AI 编程助手,包括 Claude Code、Cursor、Codex、GitHub Copilot、Windsurf、Gemini CLI 等。
环境变量 [#环境变量]
除了使用 `auth login`,你也可以通过环境变量设置 API 密钥来完成身份验证:
```bash
export LEAPERONE_API_KEY=sk-your-api-key
npx @leaperone/cli credit balance
```
# 错误代码 (/zh/docs/advanced/error-codes)
所有 API 错误都会返回包含 `error` 对象的 JSON 响应体。请结合 HTTP 状态码和 `error.code` 字段判断错误原因。
错误响应格式 [#错误响应格式]
```json title="错误响应示例"
{
"error": {
"message": "Rate limit exceeded. Please slow down.",
"type": "rate_limit_error",
"code": "rate_limit_exceeded"
}
}
```
错误代码参考 [#错误代码参考]
| 状态码 | 含义 | 处理方法 |
| --- | ------ | ------------------------------------------------------ |
| 400 | 请求错误 | 检查请求体格式和必填字段。 |
| 401 | 未授权 | 检查 API 密钥是否有效,并确认已放入 `Authorization` 请求头。 |
| 402 | 余额不足 | 前往 [Dashboard](https://dashboard.leaper.one) 充值。 |
| 404 | 未找到 | 检查端点 URL 和相关资源 ID。 |
| 410 | 资源已失效 | 资源已经过期,例如超过 30 天的图像生成任务。 |
| 429 | 触发速率限制 | 降低请求速度并实现退避重试。参阅[速率限制](/zh/docs/advanced/rate-limits)。 |
| 500 | 服务器错误 | 稍后重试。如果问题持续存在,请联系支持团队。 |
重试策略 [#重试策略]
并非所有错误都适合重试。可以参考下表:
| 状态码 | 可重试? | 说明 |
| --- | ---- | ---------------------------- |
| 400 | 否 | 修正请求后再重试。 |
| 401 | 否 | 修正 API 密钥或身份验证配置。 |
| 402 | 否 | 充值后再重试。 |
| 404 | 否 | 修正 URL 或资源 ID。 |
| 410 | 否 | 资源已经永久失效。 |
| 429 | 是 | 按照 `Retry-After` 请求头指定的时长等待。 |
| 500 | 是 | 使用指数退避。 |
指数退避 [#指数退避]
对于可重试错误,请使用指数退避,避免给 API 造成过大压力:
```javascript title="使用指数退避重试"
async function requestWithRetry(fn, maxRetries = 5) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const response = await fn();
if (response.ok) return response;
// Only retry on 429 or 5xx
if (response.status !== 429 && response.status < 500) {
throw new Error(`Request failed with status ${response.status}`);
}
if (attempt < maxRetries) {
const backoff = Math.min(1000 * 2 ** attempt, 30000);
const jitter = Math.random() * 1000;
await new Promise((r) => setTimeout(r, backoff + jitter));
}
}
throw new Error("Max retries exceeded");
}
```
退避等待时间应始终加入随机抖动,避免大量客户端在同一时刻同时重试。
# 速率限制 (/zh/docs/advanced/rate-limits)
LEAPERone 使用类似 OpenAI 的分级速率限制系统。你的等级决定了每个端点每分钟允许的最大请求数(RPM)。
用量等级 [#用量等级]
等级由累计消费金额和账户使用时长决定。随着 API 使用量增加,你会自动获得更高等级。
| 等级 | 达标条件 | 对话 RPM | 图像 RPM | 音频 RPM | 视频 RPM |
| ----- | ------------------ | ------ | ------ | ------ | ------ |
| 0(免费) | 默认等级 | 5 | 2 | 2 | 3 |
| 1(入门) | 累计消费 $5 | 20 | 5 | 5 | 10 |
| 2(标准) | 累计消费 $50 且满 7 天 | 40 | 10 | 10 | 20 |
| 3(专业) | 累计消费 $100 且满 7 天 | 60 | 20 | 10 | 30 |
| 4(商业) | 累计消费 $250 且满 14 天 | 100 | 30 | 20 | 50 |
| 5(企业) | 累计消费 $1000 且满 30 天 | 200 | 60 | 30 | 100 |
“天数”从首次付款开始计算,不是从账户创建日期开始计算。等级会自动升级,且不会降级。
你可以在 [Dashboard](https://dashboard.leaper.one/dashboard/settings/credit-and-usage) 中查看当前等级和限制。
自定义 API 密钥限制 [#自定义-api-密钥限制]
你可以为单个 API 密钥设置低于账户等级上限的自定义 RPM。这适合控制不同应用的用量。
前往 [API 密钥设置](https://dashboard.leaper.one/dashboard/settings/api-keys),点击任意密钥的 RPM 标记即可设置。
速率限制响应头 [#速率限制响应头]
请求触发速率限制时,`429` 响应会包含以下请求头:
| 请求头 | 说明 |
| ----------------------- | ------------------------- |
| `X-RateLimit-Limit` | 当前时间窗口允许的最大请求数。 |
| `X-RateLimit-Remaining` | 当前时间窗口内剩余的请求数。 |
| `X-RateLimit-Reset` | 当前时间窗口重置时的 Unix 时间戳(秒)。 |
| `Retry-After` | 距离可以重试的秒数,仅在 `429` 响应中出现。 |
处理 429 响应 [#处理-429-响应]
超过速率限制时,API 会返回 `429` 状态码:
```json title="429 响应"
{
"error": {
"message": "Rate limit exceeded. Please slow down.",
"type": "rate_limit_error",
"code": "rate_limit_exceeded"
}
}
```
请根据 `Retry-After` 请求头判断发送下一次请求前需要等待多久。
指数退避 [#指数退避]
处理速率限制时,推荐使用带随机抖动的指数退避:
```javascript title="感知速率限制的 fetch"
async function fetchWithBackoff(url, options, maxRetries = 5) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.ok) return response;
if (response.status === 429) {
const retryAfter = response.headers.get("Retry-After");
const waitMs = retryAfter
? parseInt(retryAfter, 10) * 1000
: Math.min(1000 * 2 ** attempt, 30000);
const jitter = Math.random() * 1000;
console.warn(
`Rate limited. Retrying in ${Math.round((waitMs + jitter) / 1000)}s...`
);
await new Promise((r) => setTimeout(r, waitMs + jitter));
continue;
}
// Non-retryable error
throw new Error(`Request failed with status ${response.status}`);
}
throw new Error("Max retries exceeded");
}
```
最佳实践 [#最佳实践]
* **监控响应头。** 主动检查 `X-RateLimit-Remaining`,在剩余次数降为零之前降低请求速度。
* **请求排队。** 批量发送大量请求时,使用队列将请求均匀分散到整个时间窗口。
* **加入随机抖动。** 退避等待时间始终加入随机抖动,避免多个客户端同步重试。
* **缓存响应。** 使用相同参数重复调用同一端点时,缓存结果以减少不必要的请求。
# Webhook (/zh/docs/advanced/webhooks)
你无需持续轮询结果。异步任务(例如图像生成)完成后,可以让 LEAPERone 主动向你的服务器推送通知。
工作方式 [#工作方式]
在请求中加入 `callbackUrl`。任务完成或失败后,LEAPERone 会向该 URL 发送 JSON 格式的 `POST` 请求。
```json title="包含 callbackUrl 的请求"
{
"model": "gpt-4o-image",
"prompt": "A neon-lit cyberpunk cityscape",
"callbackUrl": "https://your-server.com/webhook/image"
}
```
`callbackUrl` 必须使用 HTTPS,且不能指向私有或内部网络地址。
Webhook 负载 [#webhook-负载]
任务结束后,LEAPERone 会发送一个带 JSON 请求体的 `POST` 请求:
```json title="成功负载"
{
"id": "img-abc123",
"status": "completed",
"images": [
{
"id": "img-file-1",
"url": "https://cdn.leaper.one/images/abc123.png"
}
]
}
```
```json title="失败负载"
{
"id": "img-abc123",
"status": "failed",
"error": "Content policy violation"
}
```
负载字段 [#负载字段]
| 字段 | 类型 | 说明 |
| -------- | ------ | -------------------------------------- |
| `id` | string | 生成任务 ID。 |
| `status` | string | 可取 `completed`、`uploading` 或 `failed`。 |
| `images` | array | 成功时出现,每项包含 `id` 和 `url`。 |
| `error` | string | 失败时出现,用于说明错误原因。 |
自动重试 [#自动重试]
如果你的端点返回非 2xx 状态码,或请求超过 10 秒后超时,LEAPERone 会使用指数退避重试,最多重试 **5 次**(从 2 秒开始,最长等待 30 秒)。
所有重试都失败后,回调会被标记为失败。你仍可以轮询 `GET /v1/images/generations/:id` 端点来获取结果。
验证 Webhook 来源 [#验证-webhook-来源]
Webhook 当前没有用于验证签名的请求头。你可以通过以下方式保护端点:
* 使用难以猜测的秘密路径,例如 `https://your-server.com/webhook/a8f3b2c1`。
* 调用 `GET /v1/images/generations/:id` 验证负载中的 `id`,确认任务存在且信息匹配。
* 如果基础设施支持,可以只允许已知 IP 范围访问。
最佳实践 [#最佳实践]
* **快速响应。** 收到负载后立即返回 `200` 状态码,并在服务端异步处理数据,避免请求超时。
* **处理重复通知。** 少数情况下,前一次请求成功后,重试请求仍可能到达。请使用 `id` 字段去重。
* **及时下载图像。** 图像 URL 是临时地址,会在 1 小时后过期。
# 语音合成 API (/zh/docs/api-reference/audio-speech)
把文本合成为语音音频。支持预设音色和自定义声音克隆。
端点 [#端点]
```
POST https://api.leaper.one/v1/audio/speech
```
模型 [#模型]
| 模型 | 价格 | 说明 |
| --------------- | ---------------- | -------------- |
| `moss-tts-nano` | 0.005 点数 / 1K 字符 | 支持声音克隆的多语言 TTS |
参数 [#参数]
JSON Body(预设音色) [#json-body预设音色]
| 参数 | 类型 | 必填 | 说明 |
| ---------------- | ------ | -- | -------------------------------------- |
| model | string | 否 | 使用的模型。默认:`"moss-tts-nano"` |
| input | string | 是 | 要合成的文本,最多 4096 个字符 |
| voice | string | 否 | 预设音色名称。默认:`"nova"`(中文)。参阅[可用音色](#可用音色) |
| response\_format | string | 否 | 输出格式:`"wav"` 或 `"pcm"`。默认:`"wav"` |
Multipart Form(声音克隆) [#multipart-form声音克隆]
| 参数 | 类型 | 必填 | 说明 |
| ---------------- | ------ | -- | --------------------------------------- |
| model | string | 否 | 使用的模型。默认:`"moss-tts-nano"` |
| input | string | 是 | 要合成的文本,最多 4096 个字符 |
| voice | string | 否 | 预设音色名称,作为克隆的基础音色 |
| prompt\_audio | file | 否 | 声音克隆参考音频,最大 1MB。支持 mp3、wav、flac、m4a、ogg |
| response\_format | string | 否 | 输出格式:`"wav"` 或 `"pcm"`。默认:`"wav"` |
请求 [#请求]
使用预设音色 [#使用预设音色]
```bash
curl -X POST https://api.leaper.one/v1/audio/speech \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "moss-tts-nano",
"input": "Hello, welcome to LEAPERone.",
"voice": "alloy"
}' \
--output speech.wav
```
使用自定义音频克隆声音 [#使用自定义音频克隆声音]
```bash
curl -X POST https://api.leaper.one/v1/audio/speech \
-H "Authorization: Bearer sk-your-api-key" \
-F model=moss-tts-nano \
-F input="This text will be spoken in the cloned voice." \
-F voice=alloy \
-F prompt_audio=@reference.mp3 \
--output cloned.wav
```
使用 OpenAI SDK [#使用-openai-sdk]
```python
from openai import OpenAI
client = OpenAI(
base_url="https://api.leaper.one/v1",
api_key="sk-your-api-key"
)
response = client.audio.speech.create(
model="moss-tts-nano",
input="Hello, welcome to LEAPERone.",
voice="alloy"
)
response.stream_to_file("speech.wav")
```
声音克隆必须使用 `multipart/form-data` 上传参考音频。OpenAI SDK 不支持这种请求,请使用 `curl` 或自定义 HTTP 请求。
响应 [#响应]
接口直接返回音频字节。`Content-Type` 响应头表示音频格式:
| 格式 | Content-Type |
| ----- | -------------------------- |
| `wav` | `audio/wav` |
| `pcm` | `application/octet-stream` |
PCM 是 48kHz、16-bit、双声道的原始音频。
可用音色 [#可用音色]
兼容 OpenAI 的别名 [#兼容-openai-的别名]
| 音色 | 语言 | 风格 |
| --------- | -- | ------- |
| `alloy` | 英语 | 欢迎 / 中性 |
| `echo` | 英语 | 新闻播报 |
| `fable` | 英语 | 温和提醒 |
| `onyx` | 英语 | 学术 / 讲座 |
| `nova` | 中文 | 欢迎 / 中性 |
| `shimmer` | 中文 | 轻柔 / 温和 |
中文音色 [#中文音色]
| 音色 | 风格 |
| ------------ | ------- |
| `zh-welcome` | 中性欢迎 |
| `zh-gentle` | 深夜轻柔 |
| `zh-taiwan` | 台湾口音 |
| `zh-beijing` | 北京方言 |
| `zh-culture` | 正式 / 文化 |
| `zh-yangmi` | 名人音色 |
英文音色 [#英文音色]
| 音色 | 风格 |
| ------------ | ------- |
| `en-welcome` | 中性欢迎 |
| `en-lesson` | 学术讲座 |
| `en-news` | 新闻播报 |
| `en-gentle` | 温和提醒 |
| `en-taylor` | 名人音色 |
| `en-quiet` | 平静 / 沉思 |
其他语言 [#其他语言]
| 音色 | 语言 |
| --------- | ---- |
| `ja-news` | 日语 |
| `ko-news` | 韩语 |
| `es-news` | 西班牙语 |
| `fr-news` | 法语 |
| `de-news` | 德语 |
| `it-news` | 意大利语 |
| `ru-news` | 俄语 |
还可以直接传入 `demo-1` 到 `demo-29`,使用全部 MOSS 预设音色。
注意事项 [#注意事项]
* 按字符数计费,每 1,000 个字符 0.005 点数。
* 声音克隆使用 CPU 推理,速度明显慢于预设音色。短文本通常需要 20-60 秒。
* `prompt_audio` 应使用清晰的人声样本,建议时长为 5-15 秒。
* 输入最多 4,096 个字符。
# 音频转写 API (/zh/docs/api-reference/audio-transcriptions)
把音频转写为文本。支持直接上传文件或传入 URL。
端点 [#端点]
```
POST https://api.leaper.one/v1/audio/transcriptions
```
模型 [#模型]
| 模型 | 价格 | 说明 |
| ----------- | ----------- | ----------------- |
| `rapid` | 0.006 点数/分钟 | 快速转写,支持 file\_uri |
| `whisper-1` | 0.006 点数/分钟 | 高精度转写,支持 prompt |
参数 [#参数]
| 参数 | 类型 | 必填 | 说明 |
| ---------------- | ------ | ---------------- | --------------------------------------------------------------------- |
| file | file | 与 `file_uri` 二选一 | 要转写的音频文件,以 multipart 方式上传 |
| file\_uri | string | 与 `file` 二选一 | 要转写的音频文件 URL |
| model | string | 否 | 使用的模型:`"rapid"` 或 `"whisper-1"`。默认:`"rapid"` |
| response\_format | string | 否 | 输出格式:`"text"`、`"json"`、`"verbose_json"`、`"srt"` 或 `"vtt"`。默认:`"json"` |
| language | string | 否 | ISO 639-1 语言代码,例如 `"en"`、`"zh"`。指定后可提升准确度 |
| prompt | string | 否 | 用于提升转写质量的提示文本 |
| temperature | number | 否 | 0 到 1 之间的采样温度,仅支持 `whisper-1` |
请求 [#请求]
上传文件 [#上传文件]
```bash
curl -X POST https://api.leaper.one/v1/audio/transcriptions \
-H "Authorization: Bearer sk-your-api-key" \
-F file=@recording.mp3 \
-F model=rapid \
-F response_format=json
```
传入 URL(大文件推荐) [#传入-url大文件推荐]
```bash
curl -X POST https://api.leaper.one/v1/audio/transcriptions \
-H "Authorization: Bearer sk-your-api-key" \
-F file_uri=https://example.com/audio.mp3 \
-F model=rapid \
-F language=zh \
-F response_format=verbose_json
```
使用 `file_uri` 可以避免通过你的网络上传大文件。服务端会直接拉取音频,`rapid` 和 `whisper-1` 都支持这种方式。
使用带 prompt 的 whisper-1 [#使用带-prompt-的-whisper-1]
```bash
curl -X POST https://api.leaper.one/v1/audio/transcriptions \
-H "Authorization: Bearer sk-your-api-key" \
-F file=@recording.mp3 \
-F model=whisper-1 \
-F response_format=json \
-F prompt="LEAPERone, GTC, NVIDIA"
```
请求字幕格式 [#请求字幕格式]
```bash
curl -X POST https://api.leaper.one/v1/audio/transcriptions \
-H "Authorization: Bearer sk-your-api-key" \
-F file=@recording.mp3 \
-F model=whisper-1 \
-F response_format=srt
```
响应 [#响应]
```json
{
"text": "Hello, this is a sample transcription of the audio file."
}
```
使用 `verbose_json` 时,响应会包含时间戳和分段:
```json
{
"task": "transcribe",
"language": "en",
"duration": 42.5,
"text": "Hello, this is a sample transcription of the audio file.",
"segments": [
{ "start": 0.0, "end": 2.4, "text": "Hello, this is a sample transcription." }
]
}
```
使用 `srt` 时,响应是纯文本字幕:
```text
1
00:00:00,000 --> 00:00:02,400
Hello, this is a sample transcription.
```
使用 `vtt` 时,响应采用 WebVTT 格式:
```text
WEBVTT
00:00:00.000 --> 00:00:02.400
Hello, this is a sample transcription.
```
支持的音频格式 [#支持的音频格式]
`mp3`、`mp4`、`mpeg`、`mpga`、`m4a`、`wav`、`webm`、`opus`
直接上传文件的大小上限为 25 MB。使用 `file_uri` 时没有大小限制。
注意事项 [#注意事项]
* 按音频时长和上表中的模型单价计费。
* 未指定 `model` 时,默认使用 `rapid`。
* 当前不支持流式转写(`stream=true`)。
# Chat Completions API (/zh/docs/api-reference/chat-completions)
创建对话补全。此端点兼容 OpenAI,并支持流式响应、工具调用和 JSON 模式。
端点 [#端点]
```
POST https://api.leaper.one/v1/chat/completions
```
参数 [#参数]
| 参数 | 类型 | 必填 | 说明 |
| ---------------- | ---------------- | -- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| model | string | 是 | 模型 ID。内置模型:`"auto"`、`"gpt-5-nano"`、`"gpt-5.4"`、`"gpt-5.4-mini"`、`"gpt-5.5"`、`"claude-fable-5"`、`"claude-opus-4-{6,7,8}"`、`"claude-sonnet-{5,4-6}"`、`"claude-haiku-4-5"`、`"deepseek-v4-flash"`、`"deepseek-v4-pro"`。也可以使用 `"openrouter/{provider}/{model}"` 调用 OpenRouter 的 350 多个模型 |
| messages | array | 是 | 消息对象数组,每项包含 `"role"`(`system`/`user`/`assistant`)和 `"content"` |
| stream | boolean | 否 | 为 `true` 时通过 SSE 返回增量消息。默认:`false` |
| temperature | number | 否 | 0-2 之间的采样温度。默认:`0.7` |
| top\_p | number | 否 | 核采样参数。默认:`1` |
| max\_tokens | integer | 否 | 最多生成的 token 数 |
| stop | string \| array | 否 | 最多 4 个停止序列 |
| tools | array | 否 | 模型可以调用的工具定义列表 |
| tool\_choice | string \| object | 否 | `"none"`、`"auto"`,或指定某个函数 |
| response\_format | object | 否 | JSON 模式使用 `{ "type": "json_object" }` |
请求 [#请求]
```bash
curl -X POST https://api.leaper.one/v1/chat/completions \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "What is LEAPERone?" }
],
"temperature": 0.7,
"max_tokens": 256
}'
```
响应 [#响应]
```json
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1700000000,
"model": "gpt-5-nano",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "LEAPERone is a unified AI API gateway that gives you access to multiple AI models through a single API key."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 22,
"total_tokens": 47
}
}
```
注意事项 [#注意事项]
* `"auto"` 默认路由到 `gpt-5-nano`。
* `stream` 为 `true` 时,接口通过 **Server-Sent Events**(SSE)返回增量内容,并以 `[DONE]` 消息结束。
* 按最终解析出的模型和实际 token 用量计费。
* **OpenRouter 模型**:使用 `"openrouter/{provider}/{model}"`(例如 `"openrouter/anthropic/claude-sonnet-4.6"`)调用 350 多个模型。价格透传自 OpenRouter。详情参阅 [Chat Completions 指南](/zh/docs/guides/chat-completions#openrouter-模型)。
# 图片生成(创建任务) (/zh/docs/api-reference/images-create)
提交异步图片生成请求。接口返回任务 ID,你可以通过[图片生成状态](/zh/docs/api-reference/images-status)端点轮询结果。
端点 [#端点]
```
POST https://api.leaper.one/v1/images/generations
```
参数 [#参数]
| 参数 | 类型 | 必填 | 说明 |
| --------------- | ------------------- | -- | ------------------------------------------------------------------------ |
| prompt | string | 是 | 要生成图片的文本描述 |
| model | string | 是 | 模型 ID。支持:`"gpt-4o-image"`、`"gpt-image-2"`、`"gemini-3-pro-image-preview"` |
| referenceImages | string \| string\[] | 否 | 用于风格或内容参考的图片 URL |
| number | number | 否 | 生成图片数量,范围 1-4。默认:`1` |
| size | string | 否 | 图片尺寸,例如 `"1024x1024"`;或宽高比,例如 `"9:16"`。具体支持情况取决于模型 |
| callbackUrl | string | 否 | 生成完成后接收 POST 请求的 Webhook URL |
支持的模型 [#支持的模型]
| 模型 | 说明 |
| ---------------------------- | ---------------------------------------------- |
| `gpt-4o-image` | OpenAI GPT-4o 图片生成,适合通用场景。 |
| `gpt-image-2` | OpenAI GPT Image 2,支持 `"9:16"` 等宽高比形式的 `size`。 |
| `gemini-3-pro-image-preview` | Google Gemini 3 Pro Image。 |
请求 [#请求]
```bash
curl -X POST https://api.leaper.one/v1/images/generations \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-image",
"prompt": "A cat astronaut floating in space, digital art",
"number": 1,
"size": "1024x1024"
}'
```
响应 [#响应]
```json
{
"code": 0,
"msg": "success",
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}
```
注意事项 [#注意事项]
* 每张图片消耗 **0.5 点数**,创建任务时扣除。
* 余额不足时,API 返回 **402 Payment Required**。
* 使用返回的 `id` 通过[状态端点](/zh/docs/api-reference/images-status)轮询结果。
# 图片生成(查询状态) (/zh/docs/api-reference/images-status)
查询图片生成任务状态,并在任务完成后获取生成的图片。
端点 [#端点]
```
GET https://api.leaper.one/v1/images/generations/:id
```
参数 [#参数]
| 参数 | 类型 | 必填 | 说明 |
| -- | ------------ | -- | ------------------------------------------------------------- |
| id | string(路径参数) | 是 | 图片生成任务 UUID,由[创建任务端点](/zh/docs/api-reference/images-create)返回 |
请求 [#请求]
```bash
curl https://api.leaper.one/v1/images/generations/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H "Authorization: Bearer sk-your-api-key"
```
响应 [#响应]
```json
{
"code": 0,
"msg": "success",
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "completed",
"images": [
{
"id": "image-abc123",
"url": "https://s3.bitiful.net/leaperone/images/generated/abc123?X-Amz-Expires=3600&..."
}
]
}
}
```
状态值 [#状态值]
| 状态 | 说明 |
| ------------ | ---------------- |
| `pending` | 任务已进入队列,等待开始 |
| `processing` | 正在生成图片 |
| `uploading` | 正在把生成的图片上传到存储 |
| `partial` | 部分图片已就绪,其他图片仍在处理 |
| `completed` | 所有图片都可以下载 |
| `failed` | 生成失败,请查看响应中的错误详情 |
注意事项 [#注意事项]
* 每次查询状态时都会重新签名图片 URL,URL 在 **1 小时**后过期。过期后再次轮询即可获取新 URL。
* 超过 **30 天**的任务会被删除。查询已删除的任务会返回 **410 Gone**。
# Messages API(Anthropic 原生) (/zh/docs/api-reference/messages)
使用 Anthropic 原生协议调用 Claude 或 DeepSeek V4 模型。兼容官方 [Anthropic Python / TypeScript SDK](https://docs.anthropic.com/en/api/getting-started),只需把 `base_url` 指向 LEAPERone。
端点 [#端点]
```
POST https://api.leaper.one/v1/messages
```
身份认证 [#身份认证]
使用与兼容 OpenAI 端点相同的 LEAPERone API Key。以下两种请求头都可以使用:
* `Authorization: Bearer sk-your-leaperone-key`
* `x-api-key: sk-your-leaperone-key`(Anthropic 风格)
还必须提供:
* `anthropic-version: 2023-06-01`
参数 [#参数]
请求体遵循标准 Anthropic Messages 格式。完整结构参阅[官方文档](https://docs.anthropic.com/en/api/messages)。
| 参数 | 类型 | 必填 | 说明 |
| ------------ | --------------- | -- | ----------------------------------------------------- |
| model | string | 是 | 兼容 Anthropic 的模型 ID,见下表 |
| max\_tokens | integer | 是 | 最多生成的 token 数 |
| messages | array | 是 | `{ role, content }` 数组 |
| system | string \| array | 否 | 系统提示词或内容块 |
| stream | boolean | 否 | Anthropic 事件格式的 SSE 流 |
| temperature | number | 否 | 0-1 |
| tools | array | 否 | 工具定义 |
| tool\_choice | object | 否 | `auto` / `any` / `tool` |
| thinking | object | 否 | 使用 `{ "type": "enabled", "budget_tokens": N }` 开启扩展思考 |
支持的模型 [#支持的模型]
| 模型 ID | 说明 |
| ------------------- | ------------- |
| `claude-fable-5` | 旗舰模型 |
| `claude-opus-4-8` | |
| `claude-opus-4-7` | |
| `claude-opus-4-6` | |
| `claude-sonnet-5` | |
| `claude-sonnet-4-6` | 默认均衡模型 |
| `claude-haiku-4-5` | 最快 / 最便宜 |
| `deepseek-v4-flash` | DeepSeek 官方端点 |
| `deepseek-v4-pro` | DeepSeek 官方端点 |
价格与 Chat Completions 网关一致,单位为每 100 万 token 的美元价格。参阅[模型列表](/zh/docs/api-reference/models)。
请求(curl) [#请求curl]
```bash
curl -X POST https://api.leaper.one/v1/messages \
-H "Authorization: Bearer sk-your-leaperone-key" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "Hello!" }
]
}'
```
请求(Anthropic Python SDK) [#请求anthropic-python-sdk]
```python
import anthropic
client = anthropic.Anthropic(
api_key="sk-your-leaperone-key",
base_url="https://api.leaper.one",
)
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}],
)
print(message.content[0].text)
```
响应 [#响应]
```json
{
"id": "msg_01Abc...",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-4-6",
"content": [
{ "type": "text", "text": "Hi there!" }
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 12,
"output_tokens": 8,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
}
}
```
流式响应 [#流式响应]
设置 `"stream": true` 后,接口会返回 Anthropic SSE 事件流,包括 `message_start`、`content_block_start`、`content_block_delta`、`message_delta`、`message_stop`。用量从 `message_start` 的 `input_tokens` 和 `message_delta` 的 `output_tokens` 中累计;LEAPERone 按最终合并的用量计费。
注意事项 [#注意事项]
* GPT 和 Auto 路由仍使用 [`/v1/chat/completions`](/zh/docs/api-reference/chat-completions)。
* Claude 的工具调用、视觉输入(图片内容块)和扩展思考会原样透传。DeepSeek 能力取决于其上游兼容 Anthropic 的 API。
* 扩展思考和大上下文等长请求目前共用 120 秒上游超时。接近限制时请拆分重任务。
# 模型列表 (/zh/docs/api-reference/models)
列出所有可用模型。此端点公开访问,不需要身份认证。
端点 [#端点]
```
GET https://api.leaper.one/v1/models
```
响应 [#响应]
返回模型对象列表,其中包括内置模型和通过 OpenRouter 提供的 350 多个模型。
```json
{
"object": "list",
"data": [
{
"id": "auto",
"object": "model",
"created": 0,
"owned_by": "leaperone",
"name": "Auto"
},
{
"id": "gpt-5-nano",
"object": "model",
"created": 0,
"owned_by": "leaperone",
"name": "GPT-5 Nano",
"pricing": {
"prompt_per_1m": 0.05,
"completion_per_1m": 0.4
}
},
{
"id": "openrouter/anthropic/claude-sonnet-4.6",
"object": "model",
"created": 1700000000,
"owned_by": "openrouter",
"name": "Anthropic: Claude Sonnet 4.6",
"context_length": 200000,
"pricing": {
"prompt_per_1m": 3.0,
"completion_per_1m": 15.0
}
}
]
}
```
模型字段 [#模型字段]
| 字段 | 类型 | 说明 |
| --------------- | ------ | ------------------------------------------------------------ |
| id | string | 在 `model` 参数中使用的模型 ID |
| object | string | 固定为 `"model"` |
| created | number | Unix 时间戳 |
| owned\_by | string | 内置模型为 `"leaperone"`,OpenRouter 模型为 `"openrouter"` |
| name | string | 便于阅读的模型名称 |
| context\_length | number | 最大上下文窗口,仅 OpenRouter 模型提供 |
| pricing | object | 每 100 万 token 的美元价格,包含 `prompt_per_1m` 和 `completion_per_1m` |
注意事项 [#注意事项]
* 内置模型(`owned_by: "leaperone"`)可以直接使用 ID,例如 `"gpt-5-nano"`、`"claude-sonnet-4-6"`、`"gpt-5.5"`。
* OpenRouter 模型(`owned_by: "openrouter"`)必须使用完整 ID,例如 `"openrouter/anthropic/claude-sonnet-4.6"`。
* Claude 系列和 `gpt-5.5` / `gpt-5.4-mini` 也可以通过 Anthropic 原生的 [`POST /v1/messages`](/zh/docs/api-reference/messages) 端点调用,以使用完整的工具、视觉和扩展思考能力。
* 模型列表会缓存,并每小时刷新一次。
* 此端点不需要身份认证。
# Responses (/zh/docs/api-reference/responses)
创建模型响应。Responses API 是 Chat Completions 的替代方案,采用更简单的输入格式。
端点 [#端点]
```
POST https://api.leaper.one/v1/responses
```
参数 [#参数]
| 参数 | 类型 | 必填 | 说明 |
| ------ | --------------- | -- | ----------------------------------- |
| model | string | 是 | 模型 ID。支持:`"gpt-5-nano"`、`"gpt-5.4"` |
| input | string \| array | 是 | 用于生成响应的文本字符串或输入对象数组 |
| stream | boolean | 否 | 为 `true` 时通过 SSE 返回增量内容。默认:`false` |
请求 [#请求]
```bash
curl -X POST https://api.leaper.one/v1/responses \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5-nano",
"input": "What is LEAPERone?"
}'
```
响应 [#响应]
```json
{
"id": "resp-abc123",
"object": "response",
"created_at": 1700000000,
"model": "gpt-5-nano",
"output": [
{
"type": "message",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "LEAPERone is a unified AI API gateway that gives you access to multiple AI models through a single API key."
}
]
}
],
"usage": {
"input_tokens": 12,
"output_tokens": 22,
"total_tokens": 34
}
}
```
# Seedance 2.0 (/zh/docs/api-reference/video-generation)
通过国际即梦渠道异步生成 Seedance 2.0 视频。先提交任务,轮询状态,再从 LEAPERone 下载完成的 MP4 文件。
通过 CLI 查阅 [#通过-cli-查阅]
CLI 和网站展示同一份文档。文档可以公开阅读;`endpoints` 命令需要先执行 `auth login` 或设置 `LEAPERONE_API_KEY`。
```bash
npx @leaperone/cli@latest endpoints
npx @leaperone/cli@latest docs read api-reference/video-generation
```
创建任务 [#创建任务]
```bash
curl -X POST https://api.leaper.one/v1/videos \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0",
"prompt": "A cinematic 9:16 video of a cat running through warm sunlight.",
"seconds": 15,
"aspect_ratio": "9:16"
}'
```
```json
{
"id": "video_01234567-89ab-cdef-0123-456789abcdef",
"object": "video",
"model": "seedance-2.0",
"status": "queued",
"progress": 0
}
```
参数 [#参数]
| 参数 | 类型 | 必填 | 说明 |
| -------------- | ---------------- | -- | ------------------------------- |
| `model` | string | 是 | 当前固定为 `seedance-2.0` |
| `prompt` | string | 是 | 描述主体、动作、镜头、风格和输出限制 |
| `seconds` | integer 或 string | 否 | `5`、`10` 或 `15`;默认 `15` |
| `aspect_ratio` | string | 否 | `16:9`、`9:16` 或 `1:1`;默认 `9:16` |
| `images` | string\[] | 否 | 最多 4 个公开图片 URL 或 base64 data 图片 |
| `videos` | string\[] | 否 | 最多 3 个公开视频 URL |
| `audios` | string\[] | 否 | 最多 1 个公开音频 URL |
JSON 中不能使用本地文件路径。请先把参考文件上传到公开 URL;支持的图片也可以使用 base64 data URL。
使用 LEAPERone 生成参考图片 [#使用-leaperone-生成参考图片]
如果还没有公开图片 URL,可以先调用图片生成 API。任务完成后会返回签名 URL,Seedance 可以在 1 小时内下载该图片。
```bash
export LEAPERONE_API_KEY="sk-your-api-key"
IMAGE_CREATE=$(curl -sS --fail-with-body https://api.leaper.one/v1/images/generations \
-H "Authorization: Bearer $LEAPERONE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-image",
"prompt": "A bright red paper airplane on a white windowsill in warm morning sunlight, no text",
"number": 1,
"size": "9:16"
}')
IMAGE_ID=$(printf '%s' "$IMAGE_CREATE" | jq -er '.data.id')
for attempt in $(seq 1 120); do
IMAGE_STATUS=$(curl -sS --fail-with-body \
"https://api.leaper.one/v1/images/generations/$IMAGE_ID" \
-H "Authorization: Bearer $LEAPERONE_API_KEY")
IMAGE_STATE=$(printf '%s' "$IMAGE_STATUS" | jq -r '.data.status')
case "$IMAGE_STATE" in
completed|partial)
IMAGE_URL=$(printf '%s' "$IMAGE_STATUS" | jq -er '.data.images[0].url')
break
;;
failed) exit 1 ;;
esac
sleep 5
done
[ -n "${IMAGE_URL:-}" ] || exit 1
```
使用 CDN 图片作为参考 [#使用-cdn-图片作为参考]
Seedance 会从 `images` 中的 URL 下载参考图片。提交任务前,请确认 CDN URL:
* 未认证的 `GET` 请求会返回 `200`;
* 返回 `image/png`、`image/jpeg` 或 `image/webp` 等图片 `Content-Type`;
* 不依赖 Cookie、浏览器会话,或 Seedance 无法发送的自定义请求头;
* 在生成完成前持续有效。签名 URL 的有效期至少应为 30 分钟。
先验证图片:
```bash
export IMAGE_URL="https://cdn.example.com/reference.png"
curl -fsSL -o /dev/null -D - "$IMAGE_URL"
```
然后提交图生视频任务。下面是使用 `curl` 和 `jq` 的完整 Shell 示例。
```bash
export LEAPERONE_API_KEY="sk-your-api-key"
CREATE_RESPONSE=$(curl -sS --fail-with-body https://api.leaper.one/v1/videos \
-H "Authorization: Bearer $LEAPERONE_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg image "$IMAGE_URL" '{
model: "seedance-2.0",
prompt: "Add subtle natural motion and a slow cinematic camera push-in. Preserve the original composition.",
seconds: 5,
aspect_ratio: "16:9",
images: [$image]
}')")
echo "$CREATE_RESPONSE"
VIDEO_ID=$(printf '%s' "$CREATE_RESPONSE" | jq -er '.id')
```
每 10 秒轮询一次,直到任务进入终态:
```bash
for attempt in $(seq 1 180); do
STATUS_RESPONSE=$(curl -sS --fail-with-body \
"https://api.leaper.one/v1/videos/$VIDEO_ID" \
-H "Authorization: Bearer $LEAPERONE_API_KEY")
echo "$STATUS_RESPONSE"
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.status')
case "$STATUS" in
completed) break ;;
failed|cancelled) exit 1 ;;
esac
sleep 10
done
[ "$STATUS" = "completed" ] || exit 1
```
下载完成的视频:
```bash
curl -fL "https://api.leaper.one/v1/videos/$VIDEO_ID/content" \
-H "Authorization: Bearer $LEAPERONE_API_KEY" \
-o result.mp4
```
如果任务返回 `failed`,请更换参考图片或提示词并创建新任务。常见原因包括 CDN URL 已过期、URL 需要认证,或内容审核未通过。失败和取消的任务不会计费。
轮询状态 [#轮询状态]
```bash
curl https://api.leaper.one/v1/videos/video_01234567-89ab-cdef-0123-456789abcdef \
-H "Authorization: Bearer sk-your-api-key"
```
状态值包括 `queued`、`processing`、`completed`、`failed` 和 `cancelled`。
下载视频 [#下载视频]
```bash
curl -L https://api.leaper.one/v1/videos/video_01234567-89ab-cdef-0123-456789abcdef/content \
-H "Authorization: Bearer sk-your-api-key" \
-o result.mp4
```
计费和日志 [#计费和日志]
* 提交任务时会预留点数。
* 每个成功的视频任务固定消耗 1 点数($1.00),请求 5、10 或 15 秒均为相同价格。人民币充值使用平台固定汇率,并可能包含渠道费用。
* 只有任务进入 `completed` 后才会结算费用。
* 失败和取消的任务会释放预留点数。
* 用量历史会记录请求 ID、API Key、公开模型、时长、渠道和最终费用。
* 每个响应都包含 `X-Request-Id`。联系支持时请保留该值。
* API 响应和用量日志不会暴露提示词、参考媒体内容、上游任务 ID、上游 URL 或凭据。
* 任务 ID 只对所属 LEAPERone 账户有效。其他用户查询时会收到 `404`。
# 音频转写指南 (/zh/docs/guides/audio-transcription)
音频转写端点可以将语音转换为文字。你可以上传音频文件,也可以传入文件 URL。
模型 [#模型]
| 模型 | 价格 | 适用场景 |
| ----------- | ----------------- | ---------- |
| `rapid`(默认) | 0.006 credits/min | 快速、通用的音频转写 |
| `whisper-1` | 0.006 credits/min | 高准确率,支持提示词 |
快速开始 [#快速开始]
```bash title="POST /v1/audio/transcriptions"
curl -X POST https://api.leaper.one/v1/audio/transcriptions \
-H "Authorization: Bearer sk-your-api-key" \
-F file=@meeting.mp3
```
```json title="响应"
{
"text": "Welcome to today's meeting. Let's start with the agenda..."
}
```
使用 file_uri [#使用-file_uri]
除了上传文件,你也可以传入 URL。音频文件较大或已经托管在线时,推荐使用这种方式。
```bash title="从 URL 转写"
curl -X POST https://api.leaper.one/v1/audio/transcriptions \
-H "Authorization: Bearer sk-your-api-key" \
-F file_uri=https://example.com/podcast-episode.mp3 \
-F language=en \
-F response_format=verbose_json
```
`file_uri` 支持任何可公开访问的音频 URL,包括 mp3、opus、m4a、wav 等格式。使用 URL 时没有文件大小限制。
选择模型 [#选择模型]
rapid(默认) [#rapid默认]
适合无需额外配置的快速转写。不需要传入 `model` 参数,支持 `language` 和 `prompt` 参数。
```bash title="使用 rapid"
curl -X POST https://api.leaper.one/v1/audio/transcriptions \
-H "Authorization: Bearer sk-your-api-key" \
-F file=@meeting.mp3 \
-F language=zh \
-F response_format=json
```
whisper-1 [#whisper-1]
OpenAI 的 Whisper 模型。支持通过 `prompt` 提高特定术语的识别准确率,也支持通过 `verbose_json` 返回词级时间戳。
```bash title="使用带提示词的 whisper-1"
curl -X POST https://api.leaper.one/v1/audio/transcriptions \
-H "Authorization: Bearer sk-your-api-key" \
-F file=@meeting.mp3 \
-F model=whisper-1 \
-F response_format=verbose_json \
-F prompt="LEAPERone, API, transcription"
```
支持的格式 [#支持的格式]
| 格式 | 扩展名 |
| ---- | ---------------- |
| MP3 | `.mp3` |
| MP4 | `.mp4` |
| MPEG | `.mpeg`, `.mpga` |
| M4A | `.m4a` |
| WAV | `.wav` |
| WebM | `.webm` |
| Opus | `.opus` |
响应格式 [#响应格式]
通过 `response_format` 控制输出格式:
| 值 | 说明 |
| -------------- | -------------------------- |
| `json` | 包含 `text` 字段的 JSON 对象,默认值。 |
| `text` | 纯文本转写结果。 |
| `verbose_json` | 包含时间戳、分段和元数据的 JSON。 |
| `srt` | SubRip 字幕格式。 |
| `vtt` | WebVTT 字幕格式。 |
费用按照音频时长计算。各模型价格请参阅 [API 参考](/zh/docs/api-reference/audio-transcriptions)。
# 身份验证 (/zh/docs/guides/authentication)
LEAPERone 对模型流量和账户控制面操作使用不同的凭据。
基础 URL [#基础-url]
```
https://api.leaper.one
```
模型 API 密钥(`sk-`) [#模型-api-密钥sk-]
调用 `/v1/*` 下兼容 OpenAI 的模型端点时,请使用 API 密钥,并通过 `Authorization` 请求头传入:
```bash title="Bearer Token"
curl https://api.leaper.one/v1/chat/completions \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello"}]}'
```
X-API-Key 请求头 [#x-api-key-请求头]
也可以使用 `X-API-Key` 请求头:
```bash title="X-API-Key 请求头"
curl https://api.leaper.one/v1/chat/completions \
-H "X-API-Key: sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello"}]}'
```
控制令牌(`lpc_`) [#控制令牌lpc_]
CLI、EnvX、账户自动化、用量查询、工单和组织操作使用 `/api/v1/*` 下具有明确权限范围的控制令牌。请通过 Dashboard 授权界面登录:
```bash
npx @leaperone/cli auth login
npx @leaperone/cli auth status
```
控制令牌具有明确的权限范围,例如 `api_keys:read`、`credits:read`、`usage:read` 或 `envx:write`。不要长期使用模型 API 密钥代替控制令牌。
创建 API 密钥 [#创建-api-密钥]
你可以通过以下两种方式创建和管理密钥:
**Dashboard** — 前往 **Settings > API Keys**,点击 **Create Key**。
**CLI** — 在终端中列出现有密钥:
```bash
npx @leaperone/cli apikey list
```
API 密钥只会在创建时显示一次,请妥善保存。
错误代码 [#错误代码]
| 状态码 | 含义 |
| ----- | ---------------- |
| `401` | 凭据无效、已过期、已撤销或缺失。 |
| `403` | 控制令牌不包含所需权限范围。 |
| `402` | 余额不足,请充值后继续。 |
完整的错误响应结构请参阅 [API 参考](/zh/docs/api-reference/chat-completions)。
# 对话补全指南 (/zh/docs/guides/chat-completions)
对话补全端点完全兼容 OpenAI。将现有 OpenAI SDK 或 HTTP 客户端指向 LEAPERone,即可直接使用。
基础请求 [#基础请求]
```bash title="POST /v1/chat/completions"
curl -X POST https://api.leaper.one/v1/chat/completions \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [
{"role": "user", "content": "Explain quantum computing in one paragraph."}
]
}'
```
```json title="响应"
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Quantum computing uses qubits..."
},
"finish_reason": "stop"
}
]
}
```
将 `model` 设置为 `"auto"` 后,系统会自动把请求路由到当前最合适的模型。你也可以明确指定模型,例如 `"gpt-5-nano"`。
流式输出 [#流式输出]
设置 `stream: true` 后,结果会通过服务器发送事件(SSE)返回。Token 会在生成过程中逐步发送。
```bash title="流式请求"
curl -X POST https://api.leaper.one/v1/chat/completions \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"stream": true,
"messages": [
{"role": "user", "content": "Write a haiku about APIs."}
]
}'
```
每个 SSE 事件都包含一行 `data:`,后面是一个 JSON 数据块:
```
data: {"id":"chatcmpl-abc123","choices":[{"delta":{"content":"Endpoints"},"index":0}]}
data: {"id":"chatcmpl-abc123","choices":[{"delta":{"content":" await"},"index":0}]}
data: [DONE]
```
工具调用 / 函数调用 [#工具调用--函数调用]
你可以传入 `tools` 数组,让模型调用你定义的函数。模型判断需要调用函数时,会返回 `tool_calls`。其格式与 OpenAI 函数调用 API 相同。
```json title="tools 参数(节选)"
{
"model": "auto",
"messages": [{"role": "user", "content": "What's the weather in Tokyo?"}],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}
}
]
}
```
完整参数列表和响应结构请参阅 [API 参考](/zh/docs/api-reference/chat-completions)。
OpenRouter 模型 [#openrouter-模型]
除了内置模型,你还可以通过 [OpenRouter](https://openrouter.ai) 使用来自主要提供商(Anthropic、Google、Meta、Mistral 等)的 **350 多个模型**。请使用 `openrouter/` 前缀,后接 OpenRouter 模型 ID:
```bash title="使用 OpenRouter 模型"
curl -X POST https://api.leaper.one/v1/chat/completions \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "openrouter/anthropic/claude-sonnet-4.6",
"messages": [
{"role": "user", "content": "Hello!"}
]
}'
```
OpenRouter 模型采用上游价格透传,费用与 OpenRouter 上游提供商的价格相同。完整模型列表和价格请参阅 [OpenRouter 模型](https://openrouter.ai/models)。
示例 [#示例]
| 模型 | `model` 值 |
| ----------------- | ---------------------------------------------- |
| Claude Sonnet 4.6 | `openrouter/anthropic/claude-sonnet-4.6` |
| Gemini 2.5 Flash | `openrouter/google/gemini-2.5-flash-preview` |
| Llama 3.3 70B | `openrouter/meta-llama/llama-3.3-70b-instruct` |
| DeepSeek V3 | `openrouter/deepseek/deepseek-chat` |
# 图像生成指南 (/zh/docs/guides/image-generation)
图像生成采用异步两步流程:先**创建任务**,再**轮询结果**。
支持的模型 [#支持的模型]
* `gpt-4o-image` — OpenAI GPT-4o 图像生成模型。
* `gpt-image-2` — OpenAI GPT Image 2。除固定尺寸外,还支持 `"9:16"` 等宽高比 `size` 值。
* `gemini-3-pro-image-preview` — Google Gemini 3 Pro Image。
第 1 步:创建任务 [#第-1-步创建任务]
```bash title="POST /v1/images/generations"
curl -X POST https://api.leaper.one/v1/images/generations \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-image",
"prompt": "A watercolor painting of a mountain lake at sunrise"
}'
```
```json title="响应"
{
"code": 0,
"msg": "success",
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}
```
第 2 步:轮询状态 [#第-2-步轮询状态]
使用返回的 `id` 查询任务进度:
```bash title="GET /v1/images/generations/:id"
curl https://api.leaper.one/v1/images/generations/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H "Authorization: Bearer sk-your-api-key"
```
```json title="完成响应"
{
"code": 0,
"msg": "success",
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "completed",
"images": [
{
"id": "image-abc123",
"url": "https://s3.bitiful.net/leaperone/images/generated/abc123?X-Amz-Expires=3600&..."
}
]
}
}
```
状态值 [#状态值]
| 状态 | 含义 |
| ------------ | ----------------- |
| `pending` | 任务已进入队列,尚未开始。 |
| `processing` | 模型正在生成图像。 |
| `uploading` | 图像正在上传到存储服务。 |
| `partial` | 部分图像已经就绪,适用于多图请求。 |
| `completed` | 所有图像都已就绪。 |
| `failed` | 生成失败。 |
Webhook 回调 [#webhook-回调]
除了轮询,你也可以传入 `callbackUrl`,在任务结束时接收 POST 通知:
```json title="带回调的请求"
{
"model": "gpt-4o-image",
"prompt": "A neon-lit cyberpunk cityscape",
"callbackUrl": "https://your-server.com/webhook/image"
}
```
每张生成图像消耗 **0.5 credits**。
轮询任务时返回的图像 URL 带有签名,会在 **1 小时**后过期。请使用 `data.images[].url` 中的最新值;需要新 URL 时,请再次轮询任务。
完整参数列表和响应结构请参阅 [API 参考](/zh/docs/api-reference/images-create)。
# 文本转语音指南 (/zh/docs/guides/text-to-speech)
文本转语音端点可以根据输入文本生成语音音频。你可以从多语言预设音色中选择,也可以通过一段简短的音频样本克隆任意音色。
模型 [#模型]
| 模型 | 价格 | 适用场景 |
| --------------- | ------------------------ | -------------- |
| `moss-tts-nano` | 0.005 credits / 1K chars | 支持音色克隆的多语言语音生成 |
快速开始 [#快速开始]
```bash title="POST /v1/audio/speech"
curl -X POST https://api.leaper.one/v1/audio/speech \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"input": "Hello world!", "voice": "alloy"}' \
--output hello.wav
```
响应是一个可以直接播放的 WAV 音频文件。
使用 OpenAI SDK [#使用-openai-sdk]
该端点兼容 OpenAI,因此可以使用官方 SDK:
```python title="Python"
from openai import OpenAI
client = OpenAI(
base_url="https://api.leaper.one/v1",
api_key="sk-your-api-key"
)
response = client.audio.speech.create(
model="moss-tts-nano",
input="Welcome to LEAPERone. This is a text to speech demo.",
voice="alloy"
)
response.stream_to_file("welcome.wav")
```
```typescript title="Node.js"
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.leaper.one/v1",
apiKey: "sk-your-api-key",
});
const response = await client.audio.speech.create({
model: "moss-tts-nano",
input: "Welcome to LEAPERone.",
voice: "alloy",
});
const buffer = Buffer.from(await response.arrayBuffer());
await fs.promises.writeFile("welcome.wav", buffer);
```
选择音色 [#选择音色]
OpenAI 兼容音色 [#openai-兼容音色]
如果你正在从 OpenAI 迁移,可以继续使用熟悉的音色名称:
| 音色 | 对应风格 |
| --------- | ------- |
| `alloy` | 英语,中性 |
| `echo` | 英语,新闻主播 |
| `fable` | 英语,温和 |
| `onyx` | 英语,学术风格 |
| `nova` | 中文,中性 |
| `shimmer` | 中文,柔和 |
特定语言音色 [#特定语言音色]
音色按语言和风格命名,例如 `zh-gentle`、`en-news`、`ja-news`。
```bash title="中文温和音色"
curl -X POST https://api.leaper.one/v1/audio/speech \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"input": "晚安,祝你做个好梦。", "voice": "zh-gentle"}' \
--output goodnight.wav
```
```bash title="日语新闻音色"
curl -X POST https://api.leaper.one/v1/audio/speech \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"input": "本日のニュースをお伝えします。", "voice": "ja-news"}' \
--output news_ja.wav
```
完整音色列表请参阅 [API 参考](/zh/docs/api-reference/audio-speech)。
音色克隆 [#音色克隆]
上传一段简短的音频样本,即可克隆任意音色。该功能需要使用 `multipart/form-data`,不能使用 JSON。
```bash title="克隆音色"
curl -X POST https://api.leaper.one/v1/audio/speech \
-H "Authorization: Bearer sk-your-api-key" \
-F input="This sentence will be spoken in the cloned voice." \
-F prompt_audio=@my-voice-sample.mp3 \
--output cloned.wav
```
**获得良好音色克隆效果的建议:**
* 使用 5 到 15 秒的清晰人声录音
* 尽量减少背景噪声
* 音频文件必须小于 1MB,支持 mp3、wav、flac、m4a、ogg
* 音色克隆在 CPU 上运行,需要 20 到 60 秒
OpenAI SDK 不支持音色克隆,因为该功能需要同时上传文件和文本参数。请使用 `curl` 或直接发送 HTTP 请求。
输出格式 [#输出格式]
| 格式 | 使用场景 |
| --------- | -------------------------------- |
| `wav`(默认) | 可以直接播放的音频文件 |
| `pcm` | 用于后续处理的原始音频(48kHz、16-bit、stereo) |
```bash title="获取 PCM 输出"
curl -X POST https://api.leaper.one/v1/audio/speech \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"input": "Raw PCM output.", "voice": "alloy", "response_format": "pcm"}' \
--output raw.pcm
```
费用按照字符数计算。价格详情请参阅 [API 参考](/zh/docs/api-reference/audio-speech)。
# 视频解析指南 (/zh/docs/guides/video-extract)
从社交媒体分享链接中提取视频下载信息。传入 URL 或原始分享文本,一次请求即可获得多清晰度视频流、音轨、封面图和元数据。
快速开始 [#快速开始]
获取 API 密钥 [#获取-api-密钥]
前往 [Dashboard](https://dashboard.leaper.one/dashboard/settings/api-keys) 创建 API 密钥。
发送请求 [#发送请求]
通过 `url` 参数传入任意受支持的视频 URL:
```bash title="GET /v1/social-media/video/extract"
curl -G "https://api.leaper.one/v1/social-media/video/extract" \
--data-urlencode "url=https://v.douyin.com/L4FJNR3/" \
-H "Authorization: Bearer sk-your-api-key"
```
获取结果 [#获取结果]
响应包含统一格式的元数据和多清晰度下载选项:
```json title="响应"
{
"platform": "douyin",
"data": {
"videoId": "6918273131559881997",
"title": "骑白马的也可以是公主#百万转场变身",
"author": "Real机智张",
"duration": 10,
"videos": [
{ "url": "https://...mp4", "quality": "1080p", "format": "mp4", "width": 1080, "height": 1920 },
{ "url": "https://...mp4", "quality": "720p", "format": "mp4", "width": 720, "height": 1280 }
],
"audios": [
{ "url": "https://...mp3", "format": "mp3" }
]
}
}
```
支持的平台 [#支持的平台]
| 平台 | URL 格式 | 视频 | 音频 | 说明 |
| -------- | ------------------------------------- | --------------------- | --------- | -------------- |
| **抖音** | `v.douyin.com/*` | 多清晰度(1080p/720p/540p) | 背景音乐 MP3 | 与 TikTok 共用解析器 |
| **快手** | `v.kuaishou.com/*`, `*.gifshow.com/*` | 多清晰度 | 支持 | — |
| **哔哩哔哩** | `bilibili.com/video/BV*`, `b23.tv/*` | DASH 多码流 | DASH 独立音轨 | 需要使用 ffmpeg 合并 |
| **小红书** | `xiaohongshu.com/*`, `xhslink.com/*` | H.264/H.265 | — | 支持多种编码 |
| **微博** | `weibo.com/*`, `weibo.cn/*` | 720p/HD/LD | — | — |
| **西瓜视频** | `ixigua.com/*` | 支持 | — | — |
| **皮皮虾** | `pipix.com/*`, `pipixia.com/*` | 高/低清晰度 | — | — |
| 平台 | URL 格式 | 视频 | 音频 | 说明 |
| ------------- | ------------------------------------------------------------- | --------------------- | -------- | ------------ |
| **TikTok** | `tiktok.com/@user/video/*` | 多清晰度(1080p/720p/540p) | 背景音乐 MP3 | 与抖音共用解析器 |
| **YouTube** | `youtube.com/watch?v=*`, `youtu.be/*`, `youtube.com/shorts/*` | 360p–4K、mp4/webm | m4a/weba | 最多返回 20 多种格式 |
| **Instagram** | `instagram.com/reel/*` | 多分辨率 | — | — |
| **Twitter/X** | `x.com/*/status/*`, `twitter.com/*/status/*` | 多码率 | — | 按码率排序 |
**音频说明**:“—”表示音频内嵌在视频文件中,此时 `audios` 返回空数组。哔哩哔哩和 YouTube 使用音视频分离的 DASH 格式,需要使用 ffmpeg 合并。抖音和 TikTok 的 `audios` 是独立的背景音乐文件。
试用地址 [#试用地址]
复制下面任意 URL,即可直接调用 API:
```bash title="抖音"
curl -G "https://api.leaper.one/v1/social-media/video/extract" \
--data-urlencode "url=https://v.douyin.com/L4FJNR3/" \
-H "Authorization: Bearer sk-your-api-key"
```
返回 4 种清晰度选项(1080p 到 540p)和 1 个背景音乐 MP3。
```bash title="TikTok"
curl -G "https://api.leaper.one/v1/social-media/video/extract" \
--data-urlencode "url=https://www.tiktok.com/@bellapoarch/video/6862153058223197445" \
-H "Authorization: Bearer sk-your-api-key"
```
返回 4 种清晰度选项和背景音乐,与抖音使用相同的混合解析器。
```bash title="快手"
curl -G "https://api.leaper.one/v1/social-media/video/extract" \
--data-urlencode "url=https://v.kuaishou.com/dEHKhN" \
-H "Authorization: Bearer sk-your-api-key"
```
返回多清晰度视频流。
```bash title="哔哩哔哩"
curl -G "https://api.leaper.one/v1/social-media/video/extract" \
--data-urlencode "url=https://www.bilibili.com/video/BV1cAQqBqEpT/" \
-H "Authorization: Bearer sk-your-api-key"
```
返回 DASH 格式:6 个不同分辨率的视频流和 3 个不同编码的音频流。使用以下命令合并:
```bash title="使用 ffmpeg 合并"
ffmpeg -i video.mp4 -i audio.m4a -c copy output.mp4
```
```bash title="YouTube"
curl -G "https://api.leaper.one/v1/social-media/video/extract" \
--data-urlencode "url=https://www.youtube.com/watch?v=dQw4w9WgXcQ" \
-H "Authorization: Bearer sk-your-api-key"
```
返回 20 多种视频格式(360p–4K、mp4/webm)和 4 个音轨(m4a/weba)。
直接粘贴分享文本 [#直接粘贴分享文本]
无需手动提取 URL,直接粘贴任意应用生成的原始分享文本:
```bash title="抖音分享文本"
curl -G "https://api.leaper.one/v1/social-media/video/extract" \
--data-urlencode "url=5.61 复制打开抖音,看看【某某的作品】标题 https://v.douyin.com/xxxxx/ g@B.tE 08/23" \
-H "Authorization: Bearer sk-your-api-key"
```
```bash title="小红书分享文本"
curl -G "https://api.leaper.one/v1/social-media/video/extract" \
--data-urlencode "url=25 【标题 - 作者 | 小红书】 😆 xxxxx 😆 https://www.xiaohongshu.com/discovery/item/xxxxx" \
-H "Authorization: Bearer sk-your-api-key"
```
API 会自动从文本中提取 `https://` 链接并进行解析。
使用场景 [#使用场景]
获取多种分辨率的无水印视频,让用户选择所需清晰度。
提取音轨,再通过音频转写将语音转换为文字。
获取视频标题、作者信息和描述,用于内容再利用或翻译。
从 videos 数组中选择最佳清晰度,并转载到其他平台。
价格 [#价格]
每次成功请求消耗 **$0.01 credit**,失败请求不计费。
视频和音频 URL **具有时效性**,通常在数小时到数天后失效。获取后请及时下载。
完整参数规格和响应结构请参阅 [API 参考](/zh/docs/api-reference/social-media/video-extract)。
# 地址分析 (/zh/docs/api-reference/address/analysis)
`classify-poi` — 地址类型分类 [#classify-poi--地址类型分类]
将地址划分到三级 POI 类目体系中。
```bash
curl -X POST https://api.leaper.one/v1/address/classify-poi \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "北京市朝阳区建国路93号万达广场"}'
```
```json title="Data"
{
"poi_category": "购物#商场#购物中心",
"status": "OK"
}
```
分类结果使用 `#` 分隔三级类目。
***
`predict-poi` — POI 预测 [#predict-poi--poi-预测]
预测与地址关联的详细 POI 信息,并评估置信度。
```bash
curl -X POST https://api.leaper.one/v1/address/predict-poi \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "北京市朝阳区建国路93号万达广场"}'
```
# 基础服务 (/zh/docs/api-reference/address/basic)
`extract` — 地址提取 [#extract--地址提取]
从自然文本中提取地址片段,并移除非地址内容。
```bash
curl -X POST https://api.leaper.one/v1/address/extract \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "张三13812345678北京市朝阳区建国路93号万达广场"}'
```
```json title="Data"
{
"location_extract": [
{ "start": 13, "end": 29, "type": "LOC", "word": "北京市朝阳区建国路93号万达广场" }
]
}
```
***
`extract-name` — 姓名提取 [#extract-name--姓名提取]
从物流文本中识别并提取人员姓名。
```bash
curl -X POST https://api.leaper.one/v1/address/extract-name \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "张三13812345678北京市朝阳区建国路93号"}'
```
```json title="Data"
{
"person_extract": [
{ "start": 0, "end": 2, "word": "张三" }
]
}
```
***
`extract-phone` — 手机号提取 [#extract-phone--手机号提取]
从文本中识别并提取手机号码。
```bash
curl -X POST https://api.leaper.one/v1/address/extract-phone \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "张三13812345678北京市朝阳区建国路93号"}'
```
```json title="Data"
{
"phone_extract": [
{ "start": 2, "end": 13, "word": "13812345678" }
]
}
```
***
`division-code` — 行政区划代码 [#division-code--行政区划代码]
识别给定地址的行政区划代码,包括省、市、区县和街道。
```bash
curl -X POST https://api.leaper.one/v1/address/division-code \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "北京市朝阳区建国路93号"}'
```
```json title="Data"
{
"division_info": {
"divcode": "110105001000",
"division_province": "北京市",
"division_city": "北京市",
"division_district": "朝阳区",
"division_street": "建外街道"
}
}
```
***
`zipcode` — 邮政编码查询 [#zipcode--邮政编码查询]
返回给定地址对应的邮政编码。
```bash
curl -X POST https://api.leaper.one/v1/address/zipcode \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "北京市朝阳区建国路93号"}'
```
```json title="Data"
{
"zipcode": "100011",
"status": "OK"
}
```
# 地址清洗 (/zh/docs/api-reference/address/cleansing)
`structure` — 地址结构化 [#structure--地址结构化]
将地址解析为省、市、区县、街道、道路、门牌号等 23 个结构化字段。
```bash
curl -X POST https://api.leaper.one/v1/address/structure \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "浙江省杭州市余杭区文一西路969号"}'
```
```json title="Data"
{
"structure": "prov=浙江省\tcity=杭州市\tdistrict=余杭区\troad=文一西路\troadNo=969号",
"status": "OK"
}
```
结构化结果使用制表符分隔的 `key=value` 格式。
***
`correct` — 地址纠错 [#correct--地址纠错]
修正地址中的拼写错误,例如错误的行政区名称。
```bash
curl -X POST https://api.leaper.one/v1/address/correct \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "浙江省杭洲市余杭区文一西路969号"}'
```
```json title="Data (corrected 杭洲 → 杭州)"
{
"address_correct": ["浙江省=prov\t杭州市=city\t余杭区=district\t文一西路=road\t969号=roadNo"]
}
```
***
`complete` — 地址补全 [#complete--地址补全]
补全缺失的行政区、道路名称和门牌号。
```bash
curl -X POST https://api.leaper.one/v1/address/complete \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "余杭区文一西路969号"}'
```
```json title="Data (auto-completed province, city, and town)"
{
"complete": "prov=浙江省\tcity=杭州市\tdistrict=余杭区\ttown=五常街道\troad=文一西路\troadNo=969号",
"status": "OK"
}
```
***
`standardize` — 地址标准化 [#standardize--地址标准化]
纠正并补全地址信息,生成规范化的标准地址。
```bash
curl -X POST https://api.leaper.one/v1/address/standardize \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "杭州市余杭区文一西路969号阿里巴巴西溪园区"}'
```
***
`assessment` — 地址异常检测 [#assessment--地址异常检测]
检测地址中的问题,例如非地址文本、地址片段缺失、数字位数错误等。
```bash
curl -X POST https://api.leaper.one/v1/address/assessment \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "随便写的不是地址"}'
```
# 地理编码 (/zh/docs/api-reference/address/geo)
`geocode` — POI 级地理编码 [#geocode--poi-级地理编码]
返回给定地址的经纬度坐标。
```bash
curl -X POST https://api.leaper.one/v1/address/geocode \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "北京市朝阳区建国路93号万达广场"}'
```
```json title="Data"
{
"offline_geocode": {
"wgs84": "116.465328,39.908812",
"gcj02": "116.471607,39.910660"
}
}
```
***
`hp-geocode` — 楼栋级地理编码 [#hp-geocode--楼栋级地理编码]
返回楼栋级高精度经纬度坐标。
```bash
curl -X POST https://api.leaper.one/v1/address/hp-geocode \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "北京市朝阳区建国路93号万达广场"}'
```
***
`transfer-coord` — 坐标系转换 [#transfer-coord--坐标系转换]
在 GCJ02、WGS84、CGCS2000 和 BD09 坐标系之间转换。
此端点的 `text` 参数接收坐标而不是地址,并且必须额外提供 `srcCoord` 参数。
附加参数 [#附加参数]
| 参数 | 类型 | 必填 | 说明 |
| -------- | ------ | -- | -------------------------------------- |
| text | string | 是 | `"longitude,latitude"` 格式的坐标 |
| srcCoord | string | 是 | 源坐标系:`gcj02`、`wgs84`、`cgcs2000`、`bd09` |
| dstCoord | string | 否 | 目标坐标系,省略时返回所有坐标系 |
```bash
curl -X POST https://api.leaper.one/v1/address/transfer-coord \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "116.465,39.909", "srcCoord": "gcj02"}'
```
```json title="Data"
{
"coord_transfer": {
"BD09": "116.471607,39.914660",
"CGCS2000": "116.458867,39.907680",
"WGS84": "116.458867,39.907680",
"GCJ02": "116.465000,39.909000"
}
}
```
# 地址净化 (/zh/docs/api-reference/address)
LEAPERone 通过统一的 RESTful JSON API 提供 22 个地址净化端点,涵盖地址提取、标准化、地理编码等能力。
端点 [#端点]
```
POST https://api.leaper.one/v1/address/:action
```
将 `:action` 替换为具体的 API 操作名称。
身份验证 [#身份验证]
```
Authorization: Bearer sk-your-api-key
```
通用参数 [#通用参数]
所有端点共用以下 JSON 请求体参数:
| 参数 | 类型 | 必填 | 说明 |
| --------------- | ------ | -- | ---------------- |
| text | string | 是 | 需要处理的文本内容 |
| defaultProvince | string | 否 | 默认省份(例如 `"浙江省"`) |
| defaultCity | string | 否 | 默认城市(例如 `"杭州市"`) |
| defaultDistrict | string | 否 | 默认区县(例如 `"余杭区"`) |
通用响应 [#通用响应]
```json
{
"RequestId": "xxx-xxx-xxx",
"Data": "{ ... }"
}
```
`Data` 字段是 JSON 字符串。你需要调用 `JSON.parse(response.Data)` 进行解析。
操作参考 [#操作参考]
| 操作 | 端点 | 说明 | 价格(积分/次) |
| ----------------- | ----------------------------- | --------- | -------- |
| `extract` | `/v1/address/extract` | 地址提取 | $0.004 |
| `extract-name` | `/v1/address/extract-name` | 姓名提取 | $0.004 |
| `extract-phone` | `/v1/address/extract-phone` | 手机号提取 | $0.004 |
| `division-code` | `/v1/address/division-code` | 行政区划代码 | $0.004 |
| `zipcode` | `/v1/address/zipcode` | 邮政编码查询 | $0.004 |
| `structure` | `/v1/address/structure` | 地址结构化 | $0.008 |
| `correct` | `/v1/address/correct` | 地址纠错 | $0.008 |
| `complete` | `/v1/address/complete` | 地址补全 | $0.008 |
| `standardize` | `/v1/address/standardize` | 地址标准化 | $0.008 |
| `assessment` | `/v1/address/assessment` | 地址异常检测 | $0.008 |
| `extract-express` | `/v1/address/extract-express` | 快递面单提取 | $0.008 |
| `search` | `/v1/address/search` | 地址搜索 | $0.008 |
| `input-search` | `/v1/address/input-search` | 地址自动补全 | $0.008 |
| `similarity` | `/v1/address/similarity` | 多地址相似度 | $0.008 |
| `one-id` | `/v1/address/one-id` | 多源地址统一 | $0.008 |
| `geocode` | `/v1/address/geocode` | POI 级地理编码 | $0.008 |
| `hp-geocode` | `/v1/address/hp-geocode` | 楼栋级地理编码 | $0.008 |
| `transfer-coord` | `/v1/address/transfer-coord` | 坐标系转换 | $0.008 |
| `classify-poi` | `/v1/address/classify-poi` | 地址类型分类 | $0.008 |
| `predict-poi` | `/v1/address/predict-poi` | POI 预测 | $0.008 |
| `asr` | `/v1/address/asr` | 语音地址识别 | $0.008 |
| `inference` | `/v1/address/inference` | 对话式地址推理 | $0.008 |
错误代码 [#错误代码]
| HTTP 状态码 | 代码 | 说明 |
| -------- | ---------------------- | ---------- |
| 400 | InvalidParameter | 参数无效 |
| 401 | missing\_api\_key | 未提供 API 密钥 |
| 402 | insufficient\_credits | 余额不足 |
| 403 | Forbidden.NoPermission | 无权访问此端点 |
| 429 | Throttling.User | 超出速率限制 |
| 500 | InternalError | 上游内部错误 |
| 504 | Timeout | 上游请求超时 |
# 智能应用 (/zh/docs/api-reference/address/smart-application)
`similarity` — 多地址相似度 [#similarity--多地址相似度]
判断两个地址是否指向同一地点,并返回相似度分数和距离信息。
由于上游服务问题,此端点目前可能返回 500 错误。
```bash
curl -X POST https://api.leaper.one/v1/address/similarity \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "北京市朝阳区建国路93号\t北京朝阳建国路93号"}'
```
***
`one-id` — 多源地址统一 [#one-id--多源地址统一]
规范化来自不同来源的地址并返回唯一标识符(oneID)。支持 POI 级和房间级统一。
```bash
curl -X POST https://api.leaper.one/v1/address/one-id \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "北京市朝阳区建国路93号万达广场"}'
```
# 智能输入 (/zh/docs/api-reference/address/smart-input)
`extract-express` — 快递面单提取 [#extract-express--快递面单提取]
通过一次调用从快递面单文本中提取姓名、手机号和地址。
```bash
curl -X POST https://api.leaper.one/v1/address/extract-express \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "张三13812345678浙江省杭州市余杭区文一西路969号"}'
```
```json title="Data"
{
"express_extract": {
"person_info": "张三",
"phone_info": "13812345678",
"prov_info": "浙江省",
"city_info": "杭州市",
"district_info": "余杭区",
"road_info": "文一西路",
"road_no_info": "969号",
"poi_info": ""
}
}
```
***
`search` — 地址搜索 [#search--地址搜索]
使用拼音或汉字进行搜索,返回最相关的 5 个 POI 结果。
```bash
curl -X POST https://api.leaper.one/v1/address/search \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "万达广场"}'
```
***
`input-search` — 地址自动补全 [#input-search--地址自动补全]
为搜索框自动补全提供详细的地址建议。支持拼音、汉字和其他输入形式。
```bash
curl -X POST https://api.leaper.one/v1/address/input-search \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "万达"}'
```
# 语音与对话 (/zh/docs/api-reference/address/voice)
`asr` — 语音地址识别 [#asr--语音地址识别]
处理 ASR(自动语音识别)转写的地址文本,并输出标准化地址信息。适合对语音输入的地址进行后处理。
```bash
curl -X POST https://api.leaper.one/v1/address/asr \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "杭州余杭文一西路九六九号"}'
```
***
`inference` — 对话式地址推理 [#inference--对话式地址推理]
通过多轮对话推理识别地址,并返回最相关的 3 个候选结果。适合智能客服、语音助手和其他对话场景。
```bash
curl -X POST https://api.leaper.one/v1/address/inference \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"text": "杭州那个阿里巴巴在的地方"}'
```
# 社交媒体数据 API (/zh/docs/api-reference/social-media/data-api)
通过一个 API 访问 **16 个社交媒体平台的 800 多个端点**。你可以获取视频、用户资料、评论、搜索结果、直播、热门内容等数据。
端点 [#端点]
```
GET https://api.leaper.one/v1/social-media/data/{platform}/{interface}/{action}
```
所有查询参数都会转发给上游服务,响应以原始格式返回。
快速开始 [#快速开始]
```bash
curl -G "https://api.leaper.one/v1/social-media/data/bilibili/web/fetch_one_video" \
--data-urlencode "url=https://www.bilibili.com/video/BV1GJ411x7h7" \
-H "Authorization: Bearer sk-your-api-key"
```
支持的平台 [#支持的平台]
| 平台 | 前缀 | 端点数 | 功能 |
| --------- | -------------- | --- | ---------------------- |
| 抖音 | `douyin/` | 248 | 视频、用户、搜索、直播、榜单、创作者数据分析 |
| TikTok | `tiktok/` | 109 | 视频、用户、搜索、热门内容、评论、话题标签 |
| Bilibili | `bilibili/` | 41 | 视频、用户、搜索、直播、弹幕、字幕 |
| YouTube | `youtube/` | 25 | 视频、频道、搜索、评论、播放列表 |
| Instagram | `instagram/` | 52 | 帖子、Reels、快拍、用户资料、搜索 |
| Twitter/X | `twitter/` | 28 | 推文、用户、搜索、趋势、Spaces |
| 微博 | `weibo/` | 30 | 帖子、用户、搜索、热门内容 |
| 小红书 | `xiaohongshu/` | 38 | 笔记、用户、搜索 |
| 快手 | `kuaishou/` | 29 | 视频、用户、搜索、直播 |
| 微信 | `wechat/` | 8 | 公众号、视频号 |
| Threads | `threads/` | 11 | 帖子、用户资料 |
| LinkedIn | `linkedin/` | 4 | 用户资料、帖子 |
| 知乎 | `zhihu/` | 6 | 回答、文章、用户 |
| Lemon8 | `lemon8/` | 8 | 帖子、用户 |
| 网易云音乐 | `netease/` | 12 | 歌曲、播放列表、用户 |
| Reddit | `reddit/` | 9 | 帖子、子版块、评论 |
| 混合模式 | `hybrid/` | 2 | 从 URL 自动识别平台 |
如需查看所有端点及其参数的完整列表,请获取 `GET https://api.leaper.one/openapi.json` 提供的 OpenAPI 规范。该规范包含每个可用端点和完整的参数定义。
平台示例 [#平台示例]
Bilibili [#bilibili]
```bash
# Get video details
curl -G "https://api.leaper.one/v1/social-media/data/bilibili/web/fetch_video_detail" \
--data-urlencode "bvid=BV1GJ411x7h7" \
-H "Authorization: Bearer sk-your-api-key"
# Get video play URL (for downloading)
curl -G "https://api.leaper.one/v1/social-media/data/bilibili/web/fetch_video_playurl" \
--data-urlencode "bvid=BV1GJ411x7h7" \
--data-urlencode "cid=171776208" \
-H "Authorization: Bearer sk-your-api-key"
# Get user profile
curl -G "https://api.leaper.one/v1/social-media/data/bilibili/web/fetch_user_profile" \
--data-urlencode "uid=546195" \
-H "Authorization: Bearer sk-your-api-key"
# Search videos
curl -G "https://api.leaper.one/v1/social-media/data/bilibili/web/fetch_general_search" \
--data-urlencode "keyword=programming" \
-H "Authorization: Bearer sk-your-api-key"
# Get video comments
curl -G "https://api.leaper.one/v1/social-media/data/bilibili/web/fetch_video_comments" \
--data-urlencode "bvid=BV1GJ411x7h7" \
-H "Authorization: Bearer sk-your-api-key"
# Get video danmaku (bullet comments)
curl -G "https://api.leaper.one/v1/social-media/data/bilibili/web/fetch_video_danmaku" \
--data-urlencode "cid=171776208" \
-H "Authorization: Bearer sk-your-api-key"
# Get video subtitles
curl -G "https://api.leaper.one/v1/social-media/data/bilibili/web/fetch_video_subtitle" \
--data-urlencode "bvid=BV1GJ411x7h7" \
-H "Authorization: Bearer sk-your-api-key"
```
**Bilibili 主要端点:**
| 端点 | 说明 |
| ------------------------------------- | -------------- |
| `bilibili/web/fetch_one_video` | 通过 URL 获取视频 |
| `bilibili/web/fetch_video_detail` | 通过 BV 号获取视频详情 |
| `bilibili/web/fetch_video_playurl` | 获取视频播放或下载地址 |
| `bilibili/web/fetch_video_comments` | 获取视频评论 |
| `bilibili/web/fetch_video_danmaku` | 获取弹幕 |
| `bilibili/web/fetch_video_subtitle` | 获取字幕 |
| `bilibili/web/fetch_user_profile` | 获取用户资料 |
| `bilibili/web/fetch_user_post_videos` | 获取用户上传的视频 |
| `bilibili/web/fetch_general_search` | 搜索视频 |
| `bilibili/web/fetch_hot_search` | 获取热门搜索 |
| `bilibili/web/fetch_live_room_detail` | 获取直播间信息 |
| `bilibili/web/bv_to_aid` | 将 BV 号转换为 AV 号 |
抖音 [#抖音]
```bash
# Get video by share URL
curl -G "https://api.leaper.one/v1/social-media/data/douyin/web/fetch_one_video_by_share_url" \
--data-urlencode "url=https://v.douyin.com/L4FJNR3/" \
-H "Authorization: Bearer sk-your-api-key"
# Get video by aweme_id
curl -G "https://api.leaper.one/v1/social-media/data/douyin/web/fetch_one_video" \
--data-urlencode "aweme_id=7123456789" \
-H "Authorization: Bearer sk-your-api-key"
# Search videos
curl -G "https://api.leaper.one/v1/social-media/data/douyin/web/fetch_general_search_result" \
--data-urlencode "keyword=cooking" \
-H "Authorization: Bearer sk-your-api-key"
```
TikTok [#tiktok]
```bash
# Get video details
curl -G "https://api.leaper.one/v1/social-media/data/tiktok/web/fetch_post_detail" \
--data-urlencode "aweme_id=7123456789" \
-H "Authorization: Bearer sk-your-api-key"
# Get user profile
curl -G "https://api.leaper.one/v1/social-media/data/tiktok/web/fetch_user_profile" \
--data-urlencode "secUid=MS4wLjABAAAA..." \
-H "Authorization: Bearer sk-your-api-key"
# Search
curl -G "https://api.leaper.one/v1/social-media/data/tiktok/web/fetch_search_video" \
--data-urlencode "keyword=dance" \
-H "Authorization: Bearer sk-your-api-key"
```
YouTube [#youtube]
```bash
# Get video info
curl -G "https://api.leaper.one/v1/social-media/data/youtube/web/get_video_info" \
--data-urlencode "video_id=dQw4w9WgXcQ" \
-H "Authorization: Bearer sk-your-api-key"
# Get channel info
curl -G "https://api.leaper.one/v1/social-media/data/youtube/web/get_channel_info" \
--data-urlencode "channel_id=UCuAXFkgsw1L7xaCfnd5JJOw" \
-H "Authorization: Bearer sk-your-api-key"
```
Instagram [#instagram]
```bash
# Get post by URL
curl -G "https://api.leaper.one/v1/social-media/data/instagram/v1/fetch_post_by_url" \
--data-urlencode "url=https://www.instagram.com/p/ABC123/" \
-H "Authorization: Bearer sk-your-api-key"
# Get user profile
curl -G "https://api.leaper.one/v1/social-media/data/instagram/web/fetch_user_info_by_username" \
--data-urlencode "username=instagram" \
-H "Authorization: Bearer sk-your-api-key"
```
Twitter/X [#twitterx]
```bash
# Get tweet details
curl -G "https://api.leaper.one/v1/social-media/data/twitter/web/fetch_tweet_detail" \
--data-urlencode "tweet_id=1234567890" \
-H "Authorization: Bearer sk-your-api-key"
# Get user profile
curl -G "https://api.leaper.one/v1/social-media/data/twitter/web/fetch_user_profile" \
--data-urlencode "screen_name=elonmusk" \
-H "Authorization: Bearer sk-your-api-key"
```
混合模式(自动识别平台) [#混合模式自动识别平台]
```bash
# Auto-detect platform from any social media URL
curl -G "https://api.leaper.one/v1/social-media/data/hybrid/video_data" \
--data-urlencode "url=https://v.douyin.com/L4FJNR3/" \
-H "Authorization: Bearer sk-your-api-key"
```
响应格式 [#响应格式]
通用响应结构如下:
```json
{
"code": 200,
"data": {
// Platform-specific data
}
}
```
`code: 200` 或 `code: 0` 表示请求成功。
错误响应 [#错误响应]
路径无效(400) [#路径无效400]
```json
{ "error": { "message": "Invalid path", "type": "invalid_request_error" } }
```
平台不可用(403) [#平台不可用403]
```json
{ "error": { "message": "Platform \"admin\" is not available", "type": "invalid_request_error" } }
```
上游超时(504) [#上游超时504]
```json
{ "error": { "message": "Upstream request timed out", "type": "server_error" } }
```
上游不可用(503) [#上游不可用503]
```json
{ "error": { "message": "Failed to reach upstream service", "type": "server_error" } }
```
价格 [#价格]
**每次成功请求 $0.01。** 请求失败(HTTP 4xx/5xx)不会计费。
与视频解析 API 的比较 [#与视频解析-api-的比较]
| 功能 | 视频解析 API | 社交媒体数据 API |
| ---- | ------------------------------------ | ----------------------------- |
| 端点 | `GET /v1/social-media/video/extract` | `GET /v1/social-media/data/*` |
| 输入 | 任意社交媒体 URL | 平台专用 API 路径和参数 |
| 响应 | 标准化格式 | 上游原始响应 |
| 使用场景 | 快速下载视频 | 访问完整的平台 API |
| 范围 | 仅视频解析 | 覆盖 16 个平台的 800 多个端点 |
| 价格 | $0.01/次 | $0.01/次 |
**提示:** 如果只需要通过 URL 下载视频,请使用 [视频解析 API](/zh/docs/api-reference/social-media/video-extract),它的接口更简单,响应格式也经过标准化。需要用户资料、搜索、评论、直播等完整平台功能时,请使用社交媒体数据 API。
注意事项 [#注意事项]
* 所有端点都使用 GET 请求,并通过查询字符串传递参数。
* 媒体 URL(视频、图片)通常具有时效性。获取后请尽快下载。
* 部分端点可能需要平台专用 ID。如有需要,请先调用相应的搜索或查询端点。
* 如需包含所有参数的完整端点目录,请将 [OpenAPI 规范](/openapi.json) 导入 Postman 或 Swagger UI。
# 视频解析 API (/zh/docs/api-reference/social-media/video-extract)
从社交媒体分享链接中提取视频下载信息,包括多清晰度视频流、独立音频流、封面图片和元数据。
端点 [#端点]
```
GET https://api.leaper.one/v1/social-media/video/extract
```
参数 [#参数]
| 参数 | 类型 | 必填 | 说明 |
| ----- | ------ | -- | -------------------- |
| `url` | string | 是 | 视频 URL 或包含 URL 的分享文本 |
`url` 参数既可以接收视频直链,也可以接收从平台复制的原始分享文本。API 会自动从文本中提取 URL。
支持的平台 [#支持的平台]
| 平台 | URL 格式 | `paramName` | 视频输出 | 音频输出 |
| --------- | ------------------------------------- | ---------------- | -------------------- | --------- |
| 抖音 | `v.douyin.com/*`、`*.douyin.com/*` | `url` | 多清晰度 1080p/720p/540p | 背景音乐 MP3 |
| TikTok | `*.tiktok.com/*` | `url` | 多清晰度 | 背景音乐 MP3 |
| 快手 | `*.kuaishou.com/*`、`*.gifshow.com/*` | `url` | 多清晰度 | 有 |
| 小红书 | `*.xiaohongshu.com/*`、`xhslink.com/*` | `share_text` | H.264/H.265 | — |
| Instagram | `*.instagram.com/*` | `post_url` | 多分辨率 | — |
| Bilibili | `bilibili.com/video/BV*`、`b23.tv/*` | `url`(提取 BV 号) | DASH 多流 | DASH 独立音频 |
| YouTube | `youtube.com/watch?v=*`、`youtu.be/*` | `video_id`(自动提取) | 360p–4K、mp4/webm | m4a/weba |
| Twitter/X | `x.com/*/status/*`、`twitter.com/*` | `tweet_id`(自动提取) | 多码率 MP4 | — |
| 微博 | `weibo.com/*`、`weibo.cn/*` | `id`(自动提取) | 720p/HD/LD | — |
| 西瓜视频 | `ixigua.com/*` | `item_id`(自动提取) | 有 | — |
| 皮皮虾 | `pipix.com/*`、`pipixia.com/*` | `cell_id`(自动提取) | 高/低清晰度 | — |
“—”表示音频已嵌入视频文件中(`audios` 为空数组)。Bilibili 和 YouTube 使用音视频分离的 DASH 格式,下载后需要使用 ffmpeg 合并。
请求 [#请求]
```bash title="GET /v1/social-media/video/extract"
curl -G "https://api.leaper.one/v1/social-media/video/extract" \
--data-urlencode "url=https://v.douyin.com/L4FJNR3/" \
-H "Authorization: Bearer sk-your-api-key"
```
响应示例 [#响应示例]
返回多种清晰度的视频选项和背景音乐 MP3。
```json title="Response"
{
"platform": "douyin",
"data": {
"platform": "douyin",
"videoId": "6918273131559881997",
"title": "骑白马的也可以是公主#百万转场变身",
"author": "Real机智张",
"authorId": "MS4wLjABAAAA...",
"coverUrl": "https://p3-sign.douyinpic.com/...webp",
"duration": 10,
"videos": [
{ "url": "https://...mp4", "quality": "adapt_lowest_1080_1", "format": "mp4", "width": 1080, "height": 1920, "size": 3455733 },
{ "url": "https://...mp4", "quality": "adapt_lowest_720_1", "format": "mp4", "width": 720, "height": 1280, "size": 2205160 },
{ "url": "https://...mp4", "quality": "adapt_540_1", "format": "mp4", "width": 576, "height": 1024, "size": 1681820 }
],
"audios": [
{ "url": "https://sf6-cdn-tos.douyinstatic.com/...mp3", "format": "mp3" }
]
}
}
```
使用音视频分离的 DASH 格式。请使用 ffmpeg 合并。
```json title="Response"
{
"platform": "bilibili",
"data": {
"platform": "bilibili",
"videoId": "BV1cAQqBqEpT",
"title": "《万历黑诏书》第七十一话:帝王之术",
"author": "虾仁耶YE",
"authorId": "21741349",
"coverUrl": "http://i1.hdslb.com/bfs/archive/...jpg",
"duration": 545,
"videos": [
{ "url": "https://...bilivideo.com/...mp4", "quality": "480p", "format": "mp4", "codec": "avc1.640033", "width": 852, "height": 480 }
],
"audios": [
{ "url": "https://...bilivideo.com/...m4s", "format": "m4a", "codec": "mp4a.40.2" }
]
}
}
```
```bash title="Merge with ffmpeg"
ffmpeg -i video.mp4 -i audio.m4a -c copy output.mp4
```
返回 20 多种视频格式(360p 至 4K)和多条音轨。
```json title="Response"
{
"platform": "youtube",
"data": {
"platform": "youtube",
"videoId": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video)",
"author": "Rick Astley",
"authorId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"coverUrl": "https://i.ytimg.com/vi_webp/dQw4w9WgXcQ/maxresdefault.webp",
"duration": 213,
"videos": [
{ "url": "https://...googlevideo.com/...", "quality": "360p", "format": "mp4", "codec": "avc1.42001E, mp4a.40.2", "width": 640, "height": 360, "size": 11829048 },
{ "url": "https://...googlevideo.com/...", "quality": "720p", "format": "mp4", "codec": "avc1.4d401f", "width": 1280, "height": 720 },
{ "url": "https://...googlevideo.com/...", "quality": "1080p", "format": "webm", "codec": "vp9", "width": 1920, "height": 1080 }
],
"audios": [
{ "url": "https://...googlevideo.com/...", "format": "m4a", "codec": "mp4a.40.2", "size": 3449447 },
{ "url": "https://...googlevideo.com/...", "format": "weba", "codec": "opus", "size": 1231355 }
]
}
}
```
YouTube 的 360p mp4 通常包含音轨,可以直接播放。更高分辨率的视频流通常不含音频,需要与 `audios` 中的音频流合并。
返回多种清晰度的视频流。
```json title="Response"
{
"platform": "kuaishou",
"data": {
"platform": "kuaishou",
"videoId": "5229242270556079433",
"title": "@爱笑岩❗️还在努力. #三道街 #爱笑岩 #爱笑岩安利挑战",
"author": "捕风在努力",
"authorId": "1152464658",
"coverUrl": "https://p3.a.kwimgs.com/...jpg",
"duration": 103,
"videos": [
{ "url": "https://tymov2.a.kwimgs.com/...mp4", "format": "mp4" },
{ "url": "https://tymov2.a.kwimgs.com/...mp4", "format": "mp4" }
],
"audios": []
}
}
```
测试 URL [#测试-url]
复制以下 URL,直接调用 API 进行测试:
| 平台 | 测试 URL |
| -------- | --------------------------------------------------------------- |
| 抖音 | `https://v.douyin.com/L4FJNR3/` |
| TikTok | `https://www.tiktok.com/@bellapoarch/video/6862153058223197445` |
| 快手 | `https://v.kuaishou.com/dEHKhN` |
| Bilibili | `https://www.bilibili.com/video/BV1cAQqBqEpT/` |
| YouTube | `https://www.youtube.com/watch?v=dQw4w9WgXcQ` |
响应字段 [#响应字段]
| 字段 | 类型 | 说明 |
| --------------- | -------------- | ------------------------ |
| `platform` | string | 检测到的平台名称 |
| `data` | object \| null | 标准化后的视频数据。标准化失败时为 `null` |
| `data.platform` | string | 平台名称 |
| `data.videoId` | string | 视频在平台上的 ID |
| `data.title` | string | 视频标题或描述 |
| `data.author` | string | 作者显示名称 |
| `data.authorId` | string | 作者在平台上的 ID |
| `data.coverUrl` | string | 封面图片 URL |
| `data.duration` | number | 时长,单位为秒 |
| `data.videos` | MediaItem\[] | 可用的视频下载选项 |
| `data.audios` | MediaItem\[] | 可用的音频下载选项;音频嵌入视频时为空数组 |
| `raw` | object | 上游原始响应,仅在标准化失败时返回 |
MediaItem [#mediaitem]
| 字段 | 类型 | 说明 |
| --------- | ------- | --------------------------------------------------- |
| `url` | string | 下载 URL |
| `quality` | string? | 清晰度标签:`"1080p"`、`"720p"`、`"480p"` 等 |
| `format` | string? | 文件格式:`"mp4"`、`"webm"`、`"m4a"`、`"mp3"`、`"weba"` |
| `codec` | string? | 编解码器:`"avc1.640033"`、`"mp4a.40.2"`、`"opus"`、`"vp9"` |
| `width` | number? | 视频宽度,单位为像素 |
| `height` | number? | 视频高度,单位为像素 |
| `size` | number? | 文件大小,单位为字节 |
错误响应 [#错误响应]
```json
{ "error": { "message": "\"url\" query parameter is required", "type": "invalid_request_error" } }
```
```json
{ "error": { "message": "Could not find a valid URL in the input", "type": "invalid_request_error" } }
```
```json
{
"error": { "message": "Unsupported platform", "type": "invalid_request_error" }
}
```
支持的平台:douyin、kuaishou、xiaohongshu、instagram、bilibili、youtube、twitter、weibo、xigua、pipixia。
```json
{ "error": { "message": "Failed to proxy request", "type": "server_error" } }
```
上游数据提供方暂时无法访问。
```json
{ "error": { "message": "Upstream request timed out", "type": "server_error" } }
```
请求耗时超过 30 秒。请重试或更换视频 URL。
价格 [#价格]
**每次成功请求 $0.01**(HTTP 2xx)。请求失败不会计费。
注意事项 [#注意事项]
* 视频和音频 URL 具有时效性,通常在数小时至数天后失效。获取后请尽快下载。
* 抖音和 TikTok 共用混合解析器,一个端点同时支持两个平台。
* 小红书支持完整 URL 和短链接(`xhslink.com`)。
* `duration` 的单位始终为秒。
* 当 `data` 为 `null` 时,`raw` 字段会包含未经处理的上游响应,便于调试。