Initial commit

This commit is contained in:
2026-05-24 21:47:44 +08:00
commit 2ce35563c4
20 changed files with 3698 additions and 0 deletions

430
doc/api.md Normal file
View File

@@ -0,0 +1,430 @@
# 腾讯混元3D API 文档
> 基础地址: `https://3d.hunyuan.tencent.com`
---
## 认证方式
Cookie 会话认证。登录后由浏览器自动携带 `sessionid` 等 Cookie。
持久化数据保存在 `./hunyuan3d_profile`CloakBrowser 复用该目录即可保持登录态。
---
## 通用响应格式
**注意**:接口响应格式不统一,分为两类:
**A. 扁平格式**(大多数 GET 及数据查询接口):
```json
{
"key": "value"
}
```
**B. 包装格式**(部分 POST 操作接口):
```json
{
"code": 0,
"message": "success",
"data": {}
}
```
- `code`: 业务状态码,`0` 表示成功
- `message` / `msg`: 提示信息(字段名不统一)
- `data`: 实际返回数据
---
## 接口列表
### 1. 获取用户信息
- **URL**: `/api/3d/getuserinfo`
- **Method**: `GET`
- **描述**: 获取当前登录用户的基本信息
**响应示例**(扁平格式):
```json
{
"userId": "...",
"nickname": "...",
"imageUrl": "...",
"loginType": "email",
"registered": true
}
```
---
### 2. 获取用户配额
- **URL**: `/api/3d/quotainfo`
- **Method**: `GET`
- **描述**: 获取当前用户的生成配额/剩余次数
**响应示例**(扁平格式):
```json
{
"date": "20260524",
"totalQuota": 20,
"remainQuota": 17,
"consumeQuota": 3
}
```
---
### 3. 获取工作流模板
- **URL**: `/api/3d/workflow/action/templates`
- **Method**: `GET`
- **描述**: 获取可用的3D生成工作流模板列表
**响应示例**(扁平格式):
```json
{
"templates": [
{
"name": "跨步",
"value": "9",
"fbx": "https://...",
"glb": "https://...",
"image": "https://...",
"preview": "https://...",
"visible": true
}
]
}
```
---
### 4. 获取通知列表
- **URL**: `/api/3d/notice/list`
- **Method**: `GET`
- **描述**: 获取系统通知/公告列表
**响应示例**:
```json
{
"code": 0,
"message": "success",
"data": [
{
"id": "...",
"title": "...",
"content": "...",
"create_time": "..."
}
]
}
```
---
### 5. 获取作品数量
- **URL**: `/api/3d/creations/count`
- **Method**: `POST`
- **描述**: 获取当前用户已生成的作品总数
**请求体**:
```json
{
"statusList": ["wait", "processing", "success", "fail"]
}
```
**响应示例**(扁平格式):
```json
{
"count": 42
}
```
---
### 6. 分享相关
- **URL**: `/api/3d/share`
- **Method**: `POST`
- **描述**: 创建分享链接或获取分享信息
**请求体**:
```json
{
"creation_id": "..."
}
```
**响应示例**:
```json
{
"code": 0,
"message": "success",
"data": {
"share_url": "https://3d.hunyuan.tencent.com/share/..."
}
}
```
---
## 图生3D 完整流程
### 7. 获取图片上传凭证
- **URL**: `/api/3d/resource/genUploadInfo`
- **Method**: `POST`
- **描述**: 获取腾讯云 COS 临时上传凭证
**请求体**:
```json
{
"fileName": "your_image.png"
}
```
**响应示例**:
```json
{
"error": {
"code": "0",
"message": ""
},
"bucketName": "hunyuan-base-prod-1258344703",
"region": "ap-guangzhou",
"location": "hunyuan3d/default/xxx/xxx.png",
"encryptTmpSecretId": "...",
"encryptTmpSecretKey": "...",
"encryptToken": "...",
"startTime": 1779562912,
"expiredTime": 1811098912,
"resourceUrl": "https://3d.hunyuan.tencent.com/api/3d/resource/download?resourceId=..."
}
```
---
### 8. 图片内容审核
- **URL**: `/api/3d/resource/review`
- **Method**: `POST`
- **描述**: 上传前对图片进行安全审核
**请求体**:
```json
{
"sceneType": "playGround3D-2.0",
"text": "",
"resourceType": "image",
"resourceUrl": "https://3d.hunyuan.tencent.com/api/3d/resource/download?resourceId=..."
}
```
**响应示例**:
```json
{
"code": 0,
"msg": "",
"result": {
"text": { "code": 0 },
"name": { "code": 0 },
"resource": { "code": 0 }
},
"id": "..."
}
```
---
### 9. 触发3D生成
- **URL**: `/api/3d/creations/generations?timestamp={ts}&nonce={nonce}&sign={sign}`
- **Method**: `POST`
- **描述**: 提交图片触发3D模型生成任务。URL 带有签名参数防重放。
**请求体**:
```json
{
"sceneType": "playGround3D-2.0",
"count": 1,
"modelType": "image2ModelV3.1",
"title": "",
"style": "",
"imageList": [
"https://3d.hunyuan.tencent.com/api/3d/resource/download?resourceId=..."
],
"enable_pbr": true,
"enableLowPoly": false,
"faceCount": 1500000
}
```
**参数说明**:
- `modelType`: `image2ModelV3.1` (图生3D V3.1)
- `faceCount`: 模型面数,`1500000` 对应 1.5m`1000000` 对应 1m`500000` 对应 500k`50000` 对应 50k
- `enable_pbr`: 是否启用 PBR 材质
- `imageList`: 已上传图片的 `resourceUrl` 列表
**响应**: 返回 `creationsId`,用于后续轮询生成状态。
---
### 10. 文生3D
- **URL**: `/api/3d/creations/generations?timestamp={ts}&nonce={nonce}&sign={sign}`
- **Method**: `POST`
- **描述**: 输入文本描述触发3D模型生成。接口地址和图生3D相同仅请求体参数不同。
**请求体**:
```json
{
"sceneType": "playGround3D-2.0",
"count": 4,
"modelType": "text2ModelV3.1",
"title": "一只银白色的鲑鱼",
"style": "",
"prompt": "一只银白色的鲑鱼",
"enable_pbr": true,
"enableLowPoly": false,
"faceCount": 1500000
}
```
**参数说明**:
- `modelType`: `text2ModelV3.1` (文生3D V3.1)
- `count`: 一次生成的候选数量,默认 `4`
- `title` / `prompt`: 文本描述,建议以单主体为主
- `faceCount`: 模型面数,`1500000`(1.5m) / `1000000`(1m) / `500000`(500k) / `50000`(50k)
- `enable_pbr`: 是否启用 PBR 材质
- `style`: 纹理风格,可选 `通用``石雕``青花瓷``中国风``卡通``赛博朋克`
**响应**: 返回 `creationsId`,用于后续轮询生成状态。
---
### 11. 查询生成状态(轮询)
- **URL**: `/api/3d/creations/detail?creationsId={id}`
- **Method**: `GET`
- **描述**: 轮询查询3D生成任务的进度和结果。前端约每 2~3 秒轮询一次。
**响应示例**(扁平格式):
```json
{
"id": "355e2c8b-eaab-4e22-a521-375c7c2fcc2e",
"status": "processing",
"prompt": "...",
"result": [
{
"taskId": "...",
"status": "processing",
"progress": 21,
"urlResult": {
"glb": "https://...",
"obj": "https://...",
"image_url": "https://..."
}
}
]
}
```
**状态说明**:
- `wait`: 排队中
- `processing`: 生成中
- `success`: 生成完成
- `fail`: 生成失败
---
### 12. 获取作品列表(资产)
- **URL**: `/api/3d/creations/list`
- **Method**: `POST`
- **描述**: 获取当前用户的3D作品列表对应「资产」页面。
**响应示例**(扁平格式):
```json
{
"totalCount": 10,
"creations": [
{
"id": "...",
"title": "一只银白色的鲑鱼",
"status": "success",
"modelType": "text2ModelV3.1",
"result": [...]
}
]
}
```
---
### 13. 获取作品数量
- **URL**: `/api/3d/creations/count`
- **Method**: `POST`
- **描述**: 获取当前用户的作品总数及各状态数量
---
### 14. 下载资源文件
- **URL**: `/api/3d/resource/download?resourceId={id}`
- **Method**: `GET`
- **描述**: 下载图片或模型文件(二进制流)
---
## 完整调用流程文生3D
```
1. POST /api/3d/creations/generations
→ 提交文本描述,得到 creationsId
2. GET /api/3d/creations/detail?creationsId=xxx
→ 轮询直到 status == "success"
3. 从 detail 响应中提取 modelUrl / previewUrl 下载模型
```
**与图生3D的区别**文生3D无需图片上传和审核直接调用 generations 接口即可。
---
## 完整调用流程图生3D
```
1. POST /api/3d/resource/genUploadInfo
→ 获取 COS 临时凭证
2. 用临时凭证把图片上传到腾讯云 COS
→ 得到 resourceUrl
3. POST /api/3d/resource/review
→ 图片安全审核通过
4. POST /api/3d/creations/generations
→ 触发3D生成得到 creationsId
5. GET /api/3d/creations/detail?creationsId=xxx
→ 轮询直到 status == "success"
6. 从 detail 响应中提取 modelUrl / previewUrl 下载模型
```
---
## 使用建议
1. 运行 `hunyuan3d_login.py` 完成登录,持久化 Cookie
2. 运行 `hunyuan3d_api_sniffer.py` 拦截实际操作中的完整请求和响应
3. 在浏览器中手动触发各种操作(生成、分享、删除等),终端会实时打印 API 调用
4. 结果保存到 `api_requests.log.json`,可据此补充本文档