Files
hunyuan3dweb/doc/api.md
2026-05-24 21:47:44 +08:00

431 lines
8.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 腾讯混元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`,可据此补充本文档