API 登录获取 Token
用户通过邮箱和密码登录,获取 API 访问令牌 也可在个人中心 → API Keys 创建多个访问密钥,使用相同的 Bearer 认证。 当前令牌不会自动过期;登录令牌可通过登出接口撤销,个人中心创建的 API Key 可在管理页删除。
https://www.idtcpack.com/api/v2/auth/login项目 → 监测任务 → 平台任务。
按层级获取 AI 回答、排名与信源。
GEO 数据服务 API:创建与读取项目站点诊断,按项目、监测任务、平台任务读取每日执行、回答、排名、信源、截图与商品卡。
控制台项目切换器中的项目是第一层;/partner/2048/task 展示项目 2048 下的监测任务列表。一个项目可以有多个监测任务,一个监测任务可以有多个平台任务。
平台任务下还会按日期、问题和批次生成 Prompt 执行任务。回答、排名、信源、截图、商品卡归属于某次执行;prompt_task_id 必须从接口返回值获取,不能由前三层 ID 推算。
站点诊断直接属于项目,使用项目创建时保存的 URL。每个项目可查询最新一次诊断,无需提供监测任务 number_id、平台任务 ID 或 Prompt 执行 ID。
POST /api/v2/projects/2048/site-diagnosis,请求体可为 {} 或 {"force_refresh": false}。服务端读取项目的 site_domain,保留 URL 中的子目录;无需再次传入 URL。GET /api/v2/projects/2048/site-diagnosis。这里路径中的 project_id=2048 是页面项目 ID(my_projects.id),与下方 GEO 旧字段 project_id=number_id 的语义不同。两个接口都使用 Bearer API Key,仅项目所有者或管理员可访问,网页分享权限不会自动授予 API 权限。不存在、已删除或无权访问的项目返回 404;未提供有效 Key 返回 401,封禁账号返回 403。创建接口使用项目已保存的 URL,传入 url/site_domain 或非法参数返回 422。
首次提交返回 HTTP 202、created=true;重复提交复用当前 URL 下的最新诊断时返回 HTTP 200、created=false。默认复用排队中、运行中或已完成的诊断,失败后再次 POST 会新建。显式传入 force_refresh=true 可在前次结束后创建新诊断并绕过远端缓存;进行中的同 URL 诊断仍复用。历史记录会保留。
data.status |
含义与处理方式 |
|---|---|
not_started |
项目从未提交诊断,diagnosis_id/result=null;需要时调用 POST |
queued |
诊断已排队,等待现有后台队列执行 |
running |
诊断进行中,可读取 progress_percent/current_step |
completed |
诊断执行已完成;仅在 result_ready=true 时读取报告,结果保存可能稍有延迟 |
failed |
本次诊断失败,result=null,查看 error 后按需重新 POST |
GET 仅读取本地已保存数据,不触发诊断。现有队列与每分钟的 app:site-check-poll-task 后台任务负责更新;建议每 10 秒查询一次,直到 result_ready=true 或 status=failed。返回最新一次诊断,排队、运行或失败时不会回退到旧的成功报告;查询不会因相同域名而串用其他项目的记录。
result 包含 composite_score(综合评分)、summary_text(报告摘要)、top_issues/quick_wins(主要问题与优化建议)、modules_summary/platform_scores(模块与平台评分)、observation(观察数据)、page_diagnostics(逐页诊断)和完整 result_json。以实际返回数据为准,缺失内容保持空值,不补造评分。
diagnosis_id 是本次站点诊断记录 ID,diagnosis_task_id 是诊断服务的本地任务 ID;均独立于 GEO 的平台 task_id 和 prompt_task_id。project_url 是项目当前 URL,url 是本次诊断 URL;is_current_url=false 表示项目地址已修改,应重新诊断。所有时间戳使用带时区的 ISO 8601 格式。
# 使用项目保存的 URL 提交诊断
curl -X POST 'https://www.idtcpack.com/api/v2/projects/2048/site-diagnosis' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"force_refresh": false}'
# 按项目获取最新诊断状态与完整结果
curl 'https://www.idtcpack.com/api/v2/projects/2048/site-diagnosis' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Accept: application/json'
| 页面 | 地址 | 含义 |
|---|---|---|
| 项目下的监测任务列表 | /partner/2048/task |
项目 2048 的监测任务入口 |
| 平台任务详情(推荐) | /partner/2048/task/1791973046/p-task/9300 |
项目 2048 → 监测任务 1791973046 → 平台任务 9300 |
| 平台任务详情(旧地址,继续可用) | /partner/2048/task/9300?number_id=1791973046 |
与上一行访问同一平台任务 |
新地址模板为 /partner/{项目ID}/task/{监测任务ID}/p-task/{平台任务ID}。旧地址模板为 /partner/{项目ID}/task/{平台任务ID}?number_id={监测任务ID}。新地址会校验平台任务属于指定监测任务和项目;不存在、已删除或不可见的数据返回 404。日期、关键词、批次等筛选仍使用查询参数,例如 ?date=2026-10-15。
迁移只调整 ID 的位置,不改变数值。 请完整保留原来的监测任务 ID 和平台任务 ID。页面地址用于浏览器访问,取数据时请调用下方 /api/v2/geo/... 接口。
现有 V2 接口保留历史路径、请求参数和响应字段。请按下表传值;字段名中的 customer、project 不代表额外的数据层级:
| 业务层级 | 页面 / 内部字段 | V2 层级读取接口字段 | 示例 |
|---|---|---|---|
| 项目 ID | /partner/ 后的 ID;my_projects.id / 平台记录的 project_id |
customer_id |
2048 |
| 监测任务 ID | 新地址 /task/ 后的 ID;number_id |
project_id |
1791973046 |
| 平台任务 ID | 新地址 /p-task/ 后的 ID;平台记录的 id |
task_id |
9300 |
| Prompt 执行 ID | 从某日执行列表或结果列表获取 | prompt_task_id |
1001(独立示例) |
| 信源记录 ID | 从信源接口获取 | source_id |
接口返回值 |
| 上游 AI 请求标识 | 上游服务标识,字符串 | upstream_task_id |
接口返回值 |
例如项目 2048 的 API 参数是 customer_id=2048;监测任务 1791973046 的 API 参数是 project_id=1791973046。不要把页面项目 ID 2048 直接作为层级读取接口的 project_id,也不要把平台任务 ID 当成 Prompt 执行 ID。 user_id 表示登录账号,与以上 ID 独立。
层级读取响应保留所属 customer_id、project_id、task_id;执行与信源数据同时保留 prompt_task_id。历史未归属项目的数据,其 customer_id 可以为 null。配置中的 prompts 是问题文本,不是执行 ID。
GET /api/v2/geo/customer/projects?customer_id=2048&page=1&per_page=100&status=-3。对应页面 /partner/2048/task 的监测任务层级,获取各监测任务的 project_id;project_name 是监测任务名称,task_count 是该监测任务的平台任务数。此接口不返回账号的项目目录。GET /api/v2/geo/project/tasks?customer_id=2048&project_id=1791973046。获取各平台的 task_id;建议同时传入 customer_id,限定所属项目。GET /api/v2/geo/task/info?task_id=9300。查询该平台配置及所属项目、监测任务。GET /api/v2/geo/task/prompts?task_id=9300&date=2026-10-15。获取每次执行的 prompt_task_id。GET /api/v2/geo/task/results?task_id=9300&date=2026-10-15&page=1&per_page=100。可直接批量读取,无需先逐个查询执行详情。prompt_task_id 调用 /api/v2/geo/prompt/detail、/result、/searches、/screenshot 或 /products。上述数字用于说明层级,请替换为当前账号真实可读取的 ID。接口受当前 API Key 权限约束:项目监测任务列表仅返回当前账号有权读取的自有数据,网页分享、案例展示或同域名分享合并不会自动变成 API 读取权限,因此 API 与页面数量可能不同。
在截图接口之后提供 GET /api/v2/geo/prompt/products?prompt_task_id=1001&page=1&per_page=20,与商品洞察共用已保存数据,支持 ChatGPT、千问、豆包 App、元宝。prompt_task_id 必须从执行列表/结果接口返回值取得。
data.products 为本页商品卡,data.current_page/last_page/total/per_page 为分页信息(每页最多100条)。field_order/field_labels 为字段顺序与中文名称;商品、价格、店铺、来源、链接等按实际平台数据返回,缺失字段省略。支持平台但暂无卡片为 result_status=missing;平台未支持为 supported=false/result_status=unsupported,两者都返回空数组。价格与销量是采集时的展示值,商品卡出现不等于正文提及或成交。接口只读取已保存数据,不触发抓取或执行监测。
| 接口数据 | 返回位置 | 分页方式 |
|---|---|---|
| 项目下的监测任务、每日批量结果、单执行信源 | data.data 数组 |
data.current_page/last_page/total/per_page,需遍历全部页 |
| 监测任务下的平台任务、平台每日执行列表 | data 数组 |
完整数组,不分页 |
| 单执行商品卡 | data.products 数组 |
data.current_page/last_page/total/per_page,需遍历全部页 |
| 平台详情、单次执行详情 / 回答 / 截图 | data 对象 |
单对象 |
层级读取接口的 date 为单日 YYYY-MM-DD,默认昨天,时区 Asia/Shanghai。区间查询需逐日请求,包含开始与结束日期;start_date/end_date 不是这些接口的参数。
回答返回最新保存版本;无回答仍返回该执行,result_status=missing、answer/think=null,有回答为 available。rank_details 将品牌与名次对应,空值或 position<=0 不代表有效排名。信源存在或带 cite_index 并不证明正文实际采纳。
所有数据读取接口需 Authorization: Bearer {API_KEY} 和 Accept: application/json。无权限或已删除的平台任务 / 执行返回 404;项目下无可读取监测任务时返回空列表。401/403 表示鉴权失败,不应猜测或替换 ID。
“V2 6. 兼容接口(旧字段)”保留既有调用行为;与上面的层级读取接口对比时,请按以下映射理解:
| 兼容接口字段 | 业务含义 | 层级读取接口字段 |
|---|---|---|
/geo/project/list 请求 my_project_id |
项目 ID,例如 2048 | customer_id |
旧列表 / 详情的 number_id |
监测任务 ID | project_id |
旧列表 projects[].project_id、旧每日列表请求 project_id |
平台任务 ID | task_id |
旧每日列表返回 task_id、旧详情 / 回答 / 信源 / 截图请求 task_id |
Prompt 执行 ID | prompt_task_id |
旧每日列表默认今天;层级每日接口默认昨天。旧信源接口使用 limit,且只有显式传入 page 时返回 pagination;层级信源接口统一使用 page/per_page 和 data.data 分页结构。创建 / 编辑监测任务仍保留兼容接口参数,详见该分组。原页面路由和 API 地址均保留,内部表结构无需迁移或重命名。
在请求头中添加 Authorization: Bearer {YOUR_ACCESS_TOKEN},即可完成身份认证。
需要认证的接口均标有「Bearer 认证」,调用时请使用有效的访问令牌或 API Key。
在个人中心 → API Keys 创建密钥,或通过登录接口获取 access_token。在请求头中添加 Authorization: Bearer {YOUR_API_KEY}。新 API Key 加密保存,可在本人 AI Prompt 弹窗中选择并自动填入;管理列表仅显示脱敏值。历史仅保存哈希的 Key 需手动粘贴。删除后立即失效。
用户通过邮箱和密码登录,获取 API 访问令牌 也可在个人中心 → API Keys 创建多个访问密钥,使用相同的 Bearer 认证。 当前令牌不会自动过期;登录令牌可通过登出接口撤销,个人中心创建的 API Key 可在管理页删除。
https://www.idtcpack.com/api/v2/auth/login获取当前认证用户的详细信息
https://www.idtcpack.com/api/v2/auth/user撤销当前使用的 API 访问令牌
https://www.idtcpack.com/api/v2/auth/logout使用项目创建时保存的 site_domain(完整 URL,可包含子目录),无需再次提交 URL。 project_id 是页面 /partner/ 后的项目 ID,不是 GEO 层级读取接口中表示 number_id 的旧 project_id。 复用 Partner 页面诊断队列和项目关联:新建返回 202,复用最新诊断返回 200。 默认复用当前 URL 下排队中、运行中或已完成的最新诊断;失败后再次 POST 会新建。 force_refresh=true 在最新任务结束后新建诊断并绕过远端缓存;进行中的任务仍复用。 重新诊断保留历史记录。仅项目所有者或管理员可调用,网页分享权限不授予此 API 权限。
https://www.idtcpack.com/api/v2/projects/{project_id}/site-diagnosis始终按项目取最新一次诊断,不会回退到较早的成功报告,也不会按相同域名读取其他项目的诊断。 此 GET 仅读取已保存数据,不创建任务或调用远端。后台队列与每分钟轮询命令负责更新结果。 未诊断时 status=not_started、diagnosis_id/result=null;排队或运行时 result_ready=false、result=null。 status 为 not_started/queued/running/completed/failed。仅在 result_ready=true 时消费报告;完成状态与结果写入之间可能短暂存在延迟。 result 包含综合评分、摘要、主要问题、优化建议、模块/平台评分、观察数据、逐页诊断和完整 result_json,缺失字段保持空值。 建议每 10 秒轮询;failed 时读取 error 并按需重新 POST。所有时间戳为 ISO 8601,包含时区。 project_url 是项目当前 URL,url 是本次诊断 URL;is_current_url=false 表示项目 URL 已修改,应重新诊断。 diagnosis_id 是站点诊断记录 ID;diagnosis_task_id 是诊断服务的本地任务 ID,两者均不同于 GEO 平台 task_id 或 prompt_task_id。
https://www.idtcpack.com/api/v2/projects/{project_id}/site-diagnosiscustomer_id 对应页面项目 ID(/partner/ 后的 ID);响应 project_id 对应监测任务 number_id。接口路径与字段名为历史兼容命名。 本接口列出该项目下的监测任务,不是账号项目目录。接下来用返回的 project_id 调用 /geo/project/tasks,取得平台 task_id。
https://www.idtcpack.com/api/v2/geo/customer/projects一个项目有多个监测任务,一个监测任务有多个平台任务。project_id 对应监测任务 number_id,task_id 对应新网页地址 /p-task/ 后的平台任务 ID,不是 Prompt 执行 ID。 建议同时携带 customer_id(页面项目 ID),限定所属项目。data 是完整数组,不分页。
https://www.idtcpack.com/api/v2/geo/project/tasks返回平台任务配置;customer_id 是页面项目 ID,project_id 是监测任务 ID(number_id),task_id 是平台任务 ID。
https://www.idtcpack.com/api/v2/geo/task/infodata 是完整数组,不分页。同一问题的多次执行保留不同 prompt_task_id。 用返回的 prompt_task_id 调用 /geo/prompt/result 或 /geo/prompt/searches。
https://www.idtcpack.com/api/v2/geo/task/prompts可直接按平台 task_id + date 获取结果,无需逐条调用单 Prompt 接口。 每条包含 prompt_task_id。data.data 为结果数组,读取全部分页才是完整日数据。 尚无回答的执行也会返回:result_status=missing、answer/think=null;排名仍按真实数据返回。
https://www.idtcpack.com/api/v2/geo/task/resultsprompt_task_id 是某天、某平台、某次问题执行的 ID,不是问题文本的固定配置 ID。
https://www.idtcpack.com/api/v2/geo/prompt/detailanswer/think 是该执行最新保存的回答版本;rank_details 为品牌与排名的真实对应关系。 无回答时仍返回执行记录,result_status=missing,不能将空排名当作第 0 名。
https://www.idtcpack.com/api/v2/geo/prompt/resultdata.data 为信源数组,分页字段是 data.current_page/last_page/total/per_page。 读取所有页;信源存在或有 cite_index 不代表回答正文实际采纳该信源。
https://www.idtcpack.com/api/v2/geo/prompt/searcheshttps://www.idtcpack.com/api/v2/geo/prompt/screenshot使用商品洞察页面相同的已保存商品数据,支持 ChatGPT、千问、豆包 App 和元宝。 prompt_task_id 必须从每日执行/结果接口取得;不是平台 task_id,也不是上游请求标识。 data.products 为本页商品卡,按页面展示顺序排列;遍历所有页才能得到该次执行的全部商品。 supported=false/result_status=unsupported 表示平台暂不支持;支持但没有已保存商品卡时 result_status=missing、products=[]。 字段按平台和实际保存内容返回,缺失字段省略,field_order/field_labels 提供展示顺序和中文名称。 价格和销量是该次执行时保存的展示值,不是实时成交数据;商品卡出现不等于正文提及或实际引用。 与商品洞察页面的汇总范围不同,本接口只读取单次 Prompt 执行,不触发抓取、解析或监测。
https://www.idtcpack.com/api/v2/geo/prompt/products创建一个新的 GEO 品牌监测任务,支持多个AI平台同时监测。此兼容接口不接收页面项目 ID。
兼容旧接口:my_project_id 是页面项目 ID,number_id 是监测任务 ID;旧 project_id 是平台监测任务 ID,旧 task_id 是 Prompt 执行 ID。 新接入请使用项目 / 监测任务 / 平台任务 / Prompt 分组的层级读取接口;本接口保持旧字段及原有行为。
https://www.idtcpack.com/api/v2/geo/project/create更新现有 GEO 监测任务的配置信息,包括品牌列表、prompt、监测类型等
兼容旧接口:my_project_id 是页面项目 ID,number_id 是监测任务 ID;旧 project_id 是平台监测任务 ID,旧 task_id 是 Prompt 执行 ID。 新接入请使用项目 / 监测任务 / 平台任务 / Prompt 分组的层级读取接口;本接口保持旧字段及原有行为。
https://www.idtcpack.com/api/v2/geo/project/edit获取当前用户可读取的 GEO 监测任务;一个页面项目下有多个监测任务,一个监测任务下有多个平台任务。
兼容旧接口:my_project_id 是页面项目 ID,number_id 是监测任务 ID;旧 project_id 是平台监测任务 ID,旧 task_id 是 Prompt 执行 ID。 新接入请使用项目 / 监测任务 / 平台任务 / Prompt 分组的层级读取接口;本接口保持旧字段及原有行为。
https://www.idtcpack.com/api/v2/geo/project/list根据 number_id 获取监测任务详情,包括其全部平台任务和配置问题。
兼容旧接口:my_project_id 是页面项目 ID,number_id 是监测任务 ID;旧 project_id 是平台监测任务 ID,旧 task_id 是 Prompt 执行 ID。 新接入请使用项目 / 监测任务 / 平台任务 / Prompt 分组的层级读取接口;本接口保持旧字段及原有行为。
https://www.idtcpack.com/api/v2/geo/project/detail根据平台任务 ID 和日期获取该平台的 Prompt 执行列表。
兼容旧接口:my_project_id 是页面项目 ID,number_id 是监测任务 ID;旧 project_id 是平台监测任务 ID,旧 task_id 是 Prompt 执行 ID。 新接入请使用项目 / 监测任务 / 平台任务 / Prompt 分组的层级读取接口;本接口保持旧字段及原有行为。
https://www.idtcpack.com/api/v2/geo/task/list使用每日任务列表返回的 task_id 获取问题、平台、执行状态和日期。
兼容旧接口:my_project_id 是页面项目 ID,number_id 是监测任务 ID;旧 project_id 是平台监测任务 ID,旧 task_id 是 Prompt 执行 ID。 新接入请使用项目 / 监测任务 / 平台任务 / Prompt 分组的层级读取接口;本接口保持旧字段及原有行为。
https://www.idtcpack.com/api/v2/geo/task/detail根据send_task的ID获取AI的回答内容和思考过程
兼容旧接口:my_project_id 是页面项目 ID,number_id 是监测任务 ID;旧 project_id 是平台监测任务 ID,旧 task_id 是 Prompt 执行 ID。 新接入请使用项目 / 监测任务 / 平台任务 / Prompt 分组的层级读取接口;本接口保持旧字段及原有行为。
https://www.idtcpack.com/api/v2/geo/task/result根据send_task的ID获取截图URL
兼容旧接口:my_project_id 是页面项目 ID,number_id 是监测任务 ID;旧 project_id 是平台监测任务 ID,旧 task_id 是 Prompt 执行 ID。 新接入请使用项目 / 监测任务 / 平台任务 / Prompt 分组的层级读取接口;本接口保持旧字段及原有行为。
https://www.idtcpack.com/api/v2/geo/task/screenshot根据send_task的ID获取AI搜索的信息源列表
兼容旧接口:my_project_id 是页面项目 ID,number_id 是监测任务 ID;旧 project_id 是平台监测任务 ID,旧 task_id 是 Prompt 执行 ID。 新接入请使用项目 / 监测任务 / 平台任务 / Prompt 分组的层级读取接口;本接口保持旧字段及原有行为。
https://www.idtcpack.com/api/v2/geo/task/searches获取当前认证用户的账户余额信息
https://www.idtcpack.com/api/v2/finance/balance按旧扣费关联 ID 和时间范围查询当前用户的扣费记录。 本接口保留旧字段:project_id 实际表示关联的 Prompt 执行 ID(新 GEO prompt_task_id),不是页面项目 ID,也不是 number_id 对应的监测任务 ID。
https://www.idtcpack.com/api/v2/finance/deduction/details