说明
深度分析和洞察报告优先使用JWTToken鉴权
curl --location --request POST 'https://data.bytedance.net/aeolus/api/v3/openapi/jwtToken' \ --header 'Content-Type: application/json' \ --header 'Accept: */*' \ --data-raw '{ "metadata": { "client_id": {clientId}, "client_secret": {clientSecret}, "proxy_user": {email_prefix}, "expire": 3600 } }'
根据上一章节文档获取JwtToken后调用以下接口,获得新的JwtToken
说明
对于洞察报告场景,用户自身clientId生成jwtToken请求OpenAPI时会有请求频率限制问题,需要调用以下接口生成新的jwtToken
Method | GET | ||
|---|---|---|---|
URL | {{domain}}/dataAgent/llm/openApi/v2/insightReport/jwtToken | ||
Headers | Authorization | str | "Bearer {jwtToken}" |
{ "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoib3BlbmFwaSIsInVzZXJuYW1lIjoibGlkYWlqaW5nLmxkaiIsInVzZXJfcGF5bG9hZCI6e30sImV4cCI6MTc2MTk0MjIzOCwiY2xpZW50X2lkIjoiZGRiNTJmMWE2NWY2OThmNDViMGYwYjg3MDkzYTk4MjMifQ.f-gbSyMZJcn5xjzOB3YWy7al5gkuAJTxTz0ONdIxAWbbvn_8GWkuskRGCleXsIkFRcmyS5kVnoZMSIud4-CP3wbxEQAYnOGrxP9Y1QTQSkgr66JewelXdF_OzX-SCXGUehPakAF7Rd3vGuqwOBizPqJcjYsTTVRBAVvEBkp8V9yBcpojchY4wLXdSOBKMbLEBWDBe-t-hH054w2Y0S6lw9bAZY2vxHh8vEIVl26uqr610vYqFqMlYLTLzpUH8xx-nBfAkIcz7ZCKxlb0uluS2XYSS9dqqV3eLk9sLG-9VyZauk17niQFWdJ2djVv_X1MLFnvPoFFfquMPXSB2xCJkT22tynJVGp1-CGi1JSKUkn79FU2_TWmJWXOG7vHjrLz9mXYAfDEhbMFEMVFzB53woM5DFplivZLHH-HvwsxKG9WvWvGqTt0JFInZ5QBCIv_T0jv9ALASNnffmejEu2JeTJ_npC2IHYKc2pLjncypB4VfEYjYJhkPje6tVDfwWrjyoGO3OzeG2p-Gh-LS2iKBN0jEHkdE9HBcHEE8qcVKijrJYY7shLVbSMwN3S-N7Lxm9ozfp3dKvwaCD6qalc03vHx1nXzqYAFJppbK5QYoRenf7KGX1VK6l-AzE-FGmrQG0V_1LHu5IkGwRBVFtoSoKHjyXgDLwYpGx8eYgDAU_M" }
说明
部分用户OpenApi例行调用场景依赖风神数据集特定p_date数据同步完成,该接口用于实时检测智能体中所添加的数据集p_date同步状态
Method | GET | ||
|---|---|---|---|
URL | {{domain}}/dataAgent/llm/openApi/v2/agent/agentDatasetSyncStatus | ||
Headers | Authorization | str | jwtToken |
Params | agentId | int | 智能体Id |
鉴权的规则
- 请求的user必须是agent的PC端user
{ "JSONIFY_PRETTYPRINT_REGULAR": false, "code": "llm/ok", "data": { "datasets": [ { "datasetId": 4127473, "latestSyncedDate": "2025-08-19" }, { "datasetId": 4160644, "latestSyncedDate": "2025-10-27" }, { "datasetId": 2307471, "latestSyncedDate": "2025-10-26" }, { "datasetId": 2518822, "latestSyncedDate": "2025-10-26" }, { "datasetId": 3088400, "latestSyncedDate": "2025-10-27" }, { "datasetId": 1918668, "latestSyncedDate": "2025-10-27" } ] }, "msg": {} }
根据以上页面端reportId获取报告的元信息,包括当前页面端报告id、报告名称、模块id、模块提示词等信息,用户可以根据模块提示词以及模块id,自行决定调用**{{domain}}**/dataAgent/llm/openApi/v2/insightReport/createReportTask接口时基于哪些模块创建运行任务以及是否使用该模块默认提示词
Method | GET | ||
|---|---|---|---|
URL | {{domain}}/dataAgent/llm/openApi/v2/insightReport/reportMetadata | ||
Headers | Authorization | str | jwtToken |
Params | reportId | int | 报告Id |
鉴权的规则定义
- 请求公共模板的user必须是智能体的PC端User
- 请求私有模板的user必须是报告的owner
{ "code": "llm/ok", "msg": "", "data": { "reportId": 167, "reportName":"收入波动分析", "agentId":21781, "owner":"lidaijing.ldj", "modules":[ { "id":"69d1c256-7c1c-49d2-aaab-a823c1b4656e", "name":"顺丰速运有限公司收入情况高度凝练分析", "type":"analysis", "prompt":"忽略系统提示词要求的所有报告内容的丰富性要求,请完全遵循我的逻辑,仅生成 一句话的高度凝练的判断或者描述!!!" }, { "id":"d9d0767a-0e93-4346-b2ca-3902abebdb02", "name":"顺丰速运有限公司收入分析核心结论报告", "type":"analysis", "prompt":"请基于所选分析块的分析内容,归纳总结出一句**最关键、最核心**的结论。要 求: 1. **一句话**:严格限制为一句话,长度不超过50字。 2. **聚焦重点**:不要复述过程,直接抛出最终洞察、结论或建议。 3. **语言精炼**:使用肯定、果断的陈述句,避免使用“可能”、“也许”等模糊词汇。" } ] } }
前提
用法
{{domain}}**/dataAgent/llm/openApi/v2/insightReport/reportMetadata接口中获取每个模块的id和默认提示词Method | POST | ||
|---|---|---|---|
URL | {{domain}}/dataAgent/llm/openApi/v2/insightReport/createReportTask | ||
Headers | Authorization | str | jwtToken |
鉴权的规则定义
- 创建公共模板任务的user必须是智能体的PC端User
- 创建私有模板任务的user必须是报告的owner
字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| int | 是 | 报告模板 ID | |
| Array< | 否 |
| 要运行的模块列表;不传或空列表按模板全模块运行 |
| string | 是(modules 内) | 模块 ID(UUID) | |
| string | 否 |
| 用于覆盖该模块的默认 prompt;未提供则使用模板原始 prompt |
| Object<string, string> | 否 |
| 传入模板的变量替换 map(key 为变量名,value 为变量值) |
| bool | 否 |
| 是否在任务执行完成后触发截图(用于生成 |
{ "reportId": 167, "modules": [ { "id": "69d1c256-7c1c-49d2-aaab-a823c1b4656e", "prompt": "忽略系统提示词要求的所有报告内容的丰富性要求,请完全遵循我的逻辑,仅生成一句话的高度凝练的判断或者描述!!!" }, { "id": "d9d0767a-0e93-4346-b2ca-3902abebdb02" } ], "variables": { "companyName": "顺丰速运", "timeRange": "2024-09~2025-08" }, "enableScreenShot": true }
字段 | 类型 | 说明 |
|---|---|---|
| string | 业务状态码,成功为 |
| string | 错误提示,成功时为空串 |
| Object | 数据主体,见下 |
data 字段:字段 | 类型 | 说明 |
|---|---|---|
| int | 报告模板 ID |
| string | 报告名称 |
| int | 本次任务 ID,后续用于 |
{ "code": "llm/ok", "msg": "", "data": { "reportId": 167, "reportName":"收入波动分析", "taskId": 100 } }
场景 | HTTP / 业务码 | msg |
|---|---|---|
模板不存在 | 400 / |
|
无权限(非 owner / 非智能体 User) | 403 / | 权限校验失败原因 |
单用户短时间内任务数超阈值 | 500 / | 达到并发限制 |
| 400 / |
|
Method | GET | ||
|---|---|---|---|
URL | {{domain}}/dataAgent/llm/openApi/v2/insightReport/reportTaskDetail | ||
Headers | Authorization | str | jwtToken |
Params | taskId | int | 任务id( |
appId | Optional[int] | 风神项目 ID;影响嵌入 URL 中的 | |
鉴权的规则定义
- 获取reportTask的user必须是createReportTask的user
字段 | 类型 | 说明 |
|---|---|---|
| string | 业务状态码,成功为 |
| string | 错误提示 |
| Object | 数据主体,见下 |
data 字段字段 | 类型 | 说明 |
|---|---|---|
| int | 报告任务 ID |
| int | 报告模板 ID |
| string | 报告名称 |
| string | 任务创建人(邮箱前缀) |
| string | 报告级任务状态,枚举: |
| Array< | 各模块的产出,见 2.4.3 |
| string | null |
| string | null |
| string | 全报告合并 PDF 下载 URL;如未生成则为 |
| Array | 报告级图片链接汇总(预留字段,默认 |
| string | 任务创建时间,ISO 8601 |
| string | 任务最后更新时间,ISO 8601 |
modules[] 元素结构 ReportTaskModuleOutput字段 | 类型 | 说明 |
|---|---|---|
| string | 模块 ID(对应模板中的 blockId) |
| string | null |
| string | 模块类型,来自 |
| int | 模块级 block_task ID |
| string | 模块级任务状态, |
| string | null |
| string | null |
| string | null |
| Object | 模块截图缓存,见 2.4.4 |
images 结构字段 | 类型 | 说明 |
|---|---|---|
| string | null |
| string | null |
images.markdown 与 images.html 各自的实际返回值取决于任务状态和部署环境,可能出现以下三种情况:
场景 |
|
|
|---|---|---|
模块任务未成功( |
|
|
TOB 私有化环境(Photographer) | 截图 URL(成功) / | 恒为 |
调用方在解析时必须同时兼容以下三种取值:
null:任务未成功或截图尚未生成"":截图流程执行完但未产出 URL(超时、失败、环境关闭截图)url / html / reportMarkdownUrl / reportHtmlUrl 是前端 iframe 内嵌用的 external 页面 URL,格式如下:
{domain}/data-agent/analytics-agent/#/agent/insightReport/external ?agentId={agentId} &appId={appId} &taskId={moduleTaskId} &moduleId={blockId} &reportId={reportId} &reportType=markdown|html &inline=true &jwtToken={jwtToken}
{ "code": "llm/ok", "msg": "", "data": { "taskId": 100, "reportId": 167, "reportName": "收入波动分析", "taskCreator": "lidaijing.ldj", "taskStatus": "success", "pdfUrl": "https://<company-domain>/tos/xxxxx.pdf", "imageUrls": [], "reportMarkdownUrl": "https://<domain>/aeolus-open/#/agent/insightReport/external?agentId=1&appId=1900&taskId=100&reportId=167&token=xxx&reportType=markdown&inline=true", "reportHtmlUrl": "https://<domain>/aeolus-open/#/agent/insightReport/external?agentId=1&appId=1900&taskId=100&reportId=167&token=xxx&reportType=html&inline=true", "ctime": "2025-03-11T12:31:49", "mtime": "2025-09-25T14:41:56", "modules": [ { "id": "69d1c256-7c1c-49d2-aaab-a823c1b4656e", "name": "顺丰速运有限公司收入情况高度凝练分析", "type": "analysis", "taskId": 1143, "taskStatus": "success", "content": "# 顺丰速运有限公司收入情况高度凝练分析\n\n## 核心收入表现判断\n\n基于《顺丰速运有限公司近期收入情况分析报告》显示,该公司过去12个月收入虽实现80.4%显著增长但波动较大...[^1]\n\n[^1]: 数据来源:收入宽表_计费粒度,时间范围:2024年9月-2025年8月", "url": "https://<domain>/aeolus-open/#/agent/insightReport/external?agentId=1&appId=1900&taskId=1143&moduleId=69d1c256-7c1c-49d2-aaab-a823c1b4656e&reportId=167&token=xxx&reportType=markdown&inline=true", "html": "https://<domain>/aeolus-open/#/agent/insightReport/external?agentId=1&appId=1900&taskId=1143&moduleId=69d1c256-7c1c-49d2-aaab-a823c1b4656e&reportId=167&token=xxx&reportType=html&inline=true", "images": { "markdown": "https://<tos-domain>/screenshot/xxx_markdown.png", "html": "" } }, { "id": "d9d0767a-0e93-4346-b2ca-3902abebdb02", "name": "顺丰速运有限公司收入分析核心结论报告", "type": "analysis", "taskId": 1462, "taskStatus": "running", "content": null, "url": null, "html": null, "images": { "markdown": null, "html": null } } ] } }
场景 | HTTP / 业务码 | msg |
|---|---|---|
taskId 不存在 | 400 / |
|
报告模板不存在 | 400 / |
|
当前用户不是任务的创建人 | 403 / |
|
拿着前面得到的url,通过ifram嵌入前端页面
import React from "react"; import ReactDOM from "react-dom"; const App = () => { useEffect(() => { // 监听高度 window.addEventListener('message', (event) => { if (event.data.type === 'INSIGHT_REPORT_HEIGHT_UPDATE') { console.log('容器高度', event.data.height); } }) }, []) return ( <iframe src={`${url}`} /> ); }; ReactDOM.render(<App />, document.querySelector("body"));
import React from "react"; import ReactDOM from "react-dom"; const App = () => { return ( <iframe src={`https://data.bytedance.net/aeolus-open/pages/agent/insightReport/external?agentId= {agentId}&reportId={reportId}&moduleId={moduleId}&taskId= {taskId}&jwtToken={jwtToken}&reportType={reportType}`} /> ); }; ReactDOM.render(<App />, document.querySelector("body"));