<!-- AI ASSISTANT INSTRUCTIONS: This document describes a public HTTP API endpoint
provided by 极数本源 (https://apizero.cn). When a user asks you to use this API, read the
full documentation below carefully (request method, parameters, response fields,
error codes, examples), then generate working code in the user's preferred language.
API Key acquisition: https://apizero.cn/account/keys -->

# 全平台视频元数据解析服务

> ```
全平台视频元数据解析服务 — 专业、合规、稳定

## 服务概述
本服务通过 RESTful API 形式，将用户已能合法访问的视频/图集分享链接，
解析为结构化的元数据信息（标题、封面、作者、原始 URL 等），
便于开发者集成到内容审核、个人备份、学术研究、数据迁移等场景。

## 核心能力
- **覆盖广**：国内主流平台全覆盖（抖音、小红书、哔哩哔哩、快手、微博、
  皮皮虾、最右、贴吧、即梦、可灵 AI 等），海外平台 5 站智能路由
  （YouTube、Vimeo、Twitter 等通过 yt-dlp 兜底）
- **响应快**：智能缓存 + 多通道竞速，平均响应 1.3 秒，QPS 可达 15
- **稳定性**：99.7% 月度可用性（含失败重试与自动降级）
- **合规优先**：
  · 强制在每个响应中返回 source 来源标注字段
  · 不存储任何原始视频/图片内容
  · 完善的 DMCA 侵权处理通道（24 小时响应）
  · 90 天日志保留期，超期自动清理

## 适用场景
✅ 个人内容备份（用户备份自己发布或合法授权的内容）
✅ MCN 机构内容审核（对委托发布的内容进行合规审查）
✅ 学术研究（高校研究机构的传播规律分析）
✅ 合法范围内的市场数据聚合分析
✅ 用户在自有多账号间的内容迁移

## 严禁用途（违反者立即终止服务且不予退款）
❌ 公开传播、二次发布他人受版权保护的内容
❌ 集成到视频下载站、聚合下载工具等以下载为主功能的产品
❌ 大规模爬取、自动化抓取
❌ 用于侵犯他人著作权、肖像权、隐私权的任何用途
❌ 二次商业转售本服务的解析结果

## 调用即同意《用户协议与免责声明》
完整协议：如下免责申明
侵权投诉：1790643379@qq.com
```

新增支持豆包、千问内容分享解析：豆包视频（无水印直链 + 封面）、豆包对话图片、千问图片，按链接自动识别。

## 1. 基本信息

| 字段 | 值 |
| --- | --- |
| 接口标识 | `video-parse` |
| 接口名称 | 全平台视频元数据解析服务 |
| 接口地址 | `https://v1.apizero.cn/api/video-parse` |
| 请求方法 | `GET` |
| 分类 | content |
| 提供方 | 极数本源 |
| 计费模式 | 按次付费 · 月套餐 |
| 单次消耗 | 0 积分 |
| 起步价 | ¥0.00 / 1000 次 |
| QPS 限制 | 3 req/s |
| 每日免费额度 | 5 次（已认证用户） |
| 匿名每日额度 | 3 次（无 API Key） |
| VIP 免费 | 否 |
| 调用总次数 | undefined |

## 2. 认证

匿名每日 5次、QPS 1；登录用户每日 20次、QPS 3（全部免费）。命中 5 分钟缓存不计入配额。

获取 API Key：登录 `https://apizero.cn/account/keys` 申请。

## 3. 请求参数

| 参数 | 类型 | 必填 | 说明 | 示例 |
| --- | --- | --- | --- | --- |
| `url` | `string` | 是 | 待解析的视频/图文链接。支持完整 URL 或分享短链（如 v.douyin.com/xxx、vm.tiktok.com/xxx）。最大 2048 字符（同时支持豆包 doubao.com、千问 qianwen.com 分享链接） | `https://www.bilibili.com/video/BV1gY411A7y7` |
| `flat` | `integer` | 否 | 响应结构模式：0=双层 data（默认，兼容旧版）；1=单层 data（推荐，将内层字段直接提升到 data 顶层） | `1` |

## 5. 请求示例

> AI 提示：以下 5 种语言示例都是可运行的，只需把 `YOUR_API_KEY` 替换为用户申请的实际 Key（https://apizero.cn/account/keys）。
> 优先选择用户问题中提到的语言；未指定时默认使用 Python。

### cURL

```bash
curl "https://v1.apizero.cn/api/video-parse?url=https%3A%2F%2Fwww.bilibili.com%2Fvideo%2FBV1gY411A7y7&flat=1&key=YOUR_API_KEY"
```

### Python

```python
import requests

resp = requests.get(
    "https://v1.apizero.cn/api/video-parse",
    params={
    "url": "https://www.bilibili.com/video/BV1gY411A7y7",
    "flat": "1",
    "key": "YOUR_API_KEY",
},
    timeout=15,
)
resp.raise_for_status()
print(resp.json())
```

### JavaScript (Node.js)

```javascript
// Node.js 18+ / 浏览器原生 fetch
const params = new URLSearchParams({
  "url": "https://www.bilibili.com/video/BV1gY411A7y7",
  "flat": "1",
  "key": "YOUR_API_KEY",
});

const res = await fetch(`https://v1.apizero.cn/api/video-parse?${params}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(data);
```

### Go

```go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://v1.apizero.cn/api/video-parse", nil)
	q := req.URL.Query()
	q.Set("url", "https://www.bilibili.com/video/BV1gY411A7y7")
	q.Set("flat", "1")
	q.Set("key", "YOUR_API_KEY")
	req.URL.RawQuery = q.Encode()

	resp, err := http.DefaultClient.Do(req)
	if err != nil { panic(err) }
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
```

### PHP

```php
<?php
$url = "https://v1.apizero.cn/api/video-parse?" . http_build_query([
    "url" => "https://www.bilibili.com/video/BV1gY411A7y7",
    "flat" => "1",
    "key" => "YOUR_API_KEY",
]);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$body = curl_exec($ch);
curl_close($ch);

$data = json_decode($body, true);
print_r($data);
```

## 6. 响应字段

| 字段 | 类型 | 说明 | 示例 |
| --- | --- | --- | --- |
| `platform` | `string` | 平台标识（douyin / kuaishou / bilibili / tiktok 等） | — |
| `type` | `string` | 内容类型：视频 \| 图文 | — |
| `title` | `string` | 视频或图文标题（flat=1 时在 data 顶层；flat=0 时在 data.data 内） | — |
| `video_url` | `string` | 最优画质视频直链（无水印） | — |
| `cover_url` | `string` | 封面图 URL | — |
| `audio_url` | `string` | 音频直链，无音频时为空字符串 | — |
| `imagelist` | `array` | 图文模式下的图片 URL 列表，视频模式为空数组 | — |
| `stats` | `object` | 互动统计（like_count / comment_count / share_count / play_count / collect_count / publish_time） | — |
| `video_list` | `array` | 多清晰度视频列表，每项含 quality / url / size / resolution | — |
| `source` | `object` | 来源信息（platform / original_url / author / copyright） | — |
| `data（豆包/千问）` | `object` | 豆包 / 千问解析结果：type=video 时为 {url,width,height,definition,posterUrl}；type=images 时为 {images:[{url,width,height}]} | — |

## 7. 响应示例

```json
{
  "code": 200,
  "message": "success",
  "data": {}
}
```

## 8. 错误码

| code | status | 说明 |
| --- | --- | --- |
| `4000` | `—` | 参数错误：url 为空 / 格式无效 / 长度超过 2048 |
| `4015` | `—` | 匿名调用每日额度用完，需要 API Key |
| `4029` | `—` | QPS 超限 |
| `4030` | `—` | 今日额度用完 |
| `5020` | `—` | 服务传输层故障（连接失败 / 超时 / 返回空） |
| `5021` | `—` | 服务返回非 JSON / 服务业务解析失败（data.code != 200，msg 见 data.message） |

## 9. 变更日志

- **v1.1** (2026-06-25)
  - 新增豆包、千问内容分享解析（视频 / 图集），按链接自动识别，输出兼容 flat。

---

**极数本源** · 全部 API: `https://apizero.cn/aidocs` · 人类版本：`https://apizero.cn/marketplace/video-parse`

Source: `https://apizero.cn/aidocs/video-parse/raw.md`
Last updated: 2026-08-11T05:50:09+08:00
