Skip to Content
OpenAPI 接入用户提问与分类管理

用户提问与分类管理

查询品牌下的用户提问

  • 请求方法:POST
  • 请求路径:/geo/api/prompt/get

说明:

  • prompt_ids、title_ids、tag_ids、models 不传或传空数组时,表示不按对应条件筛选。
  • tag_ids 用于按标签筛选,models 用于按模型名称筛选。
  • 返回结果中的 tags 为用户提问绑定的标签,models 为绑定的模型名称。

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
prompt_idsstring 数组用户提问ID列表否
pageint页码,从 1 开始;不传或小于 1 时默认 1否
page_sizeint每页数量;不传或传 0 时默认 20,最大 100否
query_strstring用户提问关键字否
title_idsstring 数组用户提问分类ID列表否
statusint用户提问状态:1-启用,2-禁用否
tag_idsstring 数组标签ID列表否
modelsstring 数组模型名称列表否

响应参数:

返回值类型含义
promptsobject 数组用户提问列表
prompts.prompt_idstring用户提问ID
prompts.brand_idstring品牌ID
prompts.title_idstring用户提问分类ID
prompts.title_namestring用户提问分类名称
prompts.query_strstring用户提问内容
prompts.statusint用户提问状态:1-启用,2-禁用
prompts.tagsobject 数组用户提问绑定的标签
prompts.tags.prompt_tag_idstring标签ID
prompts.tags.team_idstring团队ID
prompts.tags.tag_namestring标签名称
prompts.tags.created_bystring创建人名称
prompts.tags.created_timeint64创建时间,Unix 毫秒时间戳
prompts.modelsstring 数组用户提问绑定的模型名称
prompts.created_timestring用户提问创建时间
totalint符合条件的用户提问总数

响应示例:

{ "code": 0, "msg": "success", "data": { "prompts": [ { "prompt_id": "prompt_test_001", "brand_id": "brand_test_001", "title_id": "title_test_001", "title_name": "测试分类A", "query_str": "测试品牌A适合哪些业务场景?", "status": 1, "tags": [ { "prompt_tag_id": "tag_test_001", "team_id": "team_test_001", "tag_name": "产品体验", "created_by": "test_user", "created_time": "1735689600000" } ], "models": [ "model-a" ], "created_time": "2026-01-01 10:00:00" } ], "total": 1 } }

标签使用说明:

  • 用户提问标签由团队统一管理,可供团队内的品牌使用。
  • 标签关系接口以 brand_id 指定品牌;传入的用户提问须属于该品牌。
  • 添加或移除标签关系时,tag_ids 须为该品牌所属团队下可用的标签。
  • 本节中的标签均指用户提问标签;用户提问绑定的模型通过 models 字段单独返回。

新建用户提问标签

  • 请求方法:POST
  • 请求路径:/geo/api/prompt/tag/create

说明:一次可新建多个标签。标签名称最长 64 个字符。

请求参数:

入参类型含义是否必填
team_idstring团队ID是
tag_namesstring 数组标签名称列表是

响应参数:

返回值类型含义
tagsobject 数组新建的标签列表
tags.prompt_tag_idstring标签ID
tags.team_idstring团队ID
tags.tag_namestring标签名称
tags.created_bystring创建人名称
tags.created_timeint64创建时间,Unix 毫秒时间戳

响应示例:

{ "code": 0, "msg": "success", "data": { "tags": [ { "prompt_tag_id": "tag_test_001", "team_id": "team_test_001", "tag_name": "产品体验", "created_by": "test_user", "created_time": "1735689600000" } ] } }

更新用户提问标签

  • 请求方法:POST
  • 请求路径:/geo/api/prompt/tag/update

请求参数:

入参类型含义是否必填
team_idstring团队ID是
tag_idstring标签ID是
tag_namestring新的标签名称,最长 64 个字符是

响应参数:

接口调用成功时,返回空对象。

响应示例:

{ "code": 0, "msg": "success", "data": {} }

获取团队下的用户提问标签

  • 请求方法:POST
  • 请求路径:/geo/api/prompt/tag/get

请求参数:

入参类型含义是否必填
team_idstring团队ID是

响应参数:

返回值类型含义
tagsobject 数组团队下的标签列表
tags.prompt_tag_idstring标签ID
tags.team_idstring团队ID
tags.tag_namestring标签名称
tags.created_bystring创建人名称
tags.created_timeint64创建时间,Unix 毫秒时间戳

响应示例:

{ "code": 0, "msg": "success", "data": { "tags": [ { "prompt_tag_id": "tag_test_001", "team_id": "team_test_001", "tag_name": "产品体验", "created_by": "test_user", "created_time": "1735689600000" } ] } }

删除用户提问标签

  • 请求方法:POST
  • 请求路径:/geo/api/prompt/tag/delete

说明:支持批量删除;仍被用户提问使用的标签不能删除。

请求参数:

入参类型含义是否必填
team_idstring团队ID是
tag_idsstring 数组标签ID列表是

响应参数:

接口调用成功时,返回空对象。

响应示例:

{ "code": 0, "msg": "success", "data": {} }

获取品牌下单个用户提问绑定的标签

  • 请求方法:POST
  • 请求路径:/geo/api/prompt/tag/relation/get

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
prompt_idstring用户提问ID是

响应参数:

返回值类型含义
tagsobject 数组用户提问绑定的标签列表
tags.prompt_tag_idstring标签ID
tags.team_idstring团队ID
tags.tag_namestring标签名称
tags.created_bystring创建人名称
tags.created_timeint64创建时间,Unix 毫秒时间戳

响应示例:

{ "code": 0, "msg": "success", "data": { "tags": [ { "prompt_tag_id": "tag_test_001", "team_id": "team_test_001", "tag_name": "产品体验", "created_by": "test_user", "created_time": "1735689600000" } ] } }

批量获取品牌下用户提问绑定的标签

  • 请求方法:POST
  • 请求路径:/geo/api/prompt/tag/relation/batch

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
prompt_idsstring 数组用户提问ID列表是

响应参数:

返回值类型含义
relationsobject 数组用户提问与标签的绑定关系
relations.prompt_idstring用户提问ID
relations.tagsobject 数组用户提问绑定的标签列表
relations.tags.prompt_tag_idstring标签ID
relations.tags.team_idstring团队ID
relations.tags.tag_namestring标签名称
relations.tags.created_bystring创建人名称
relations.tags.created_timeint64创建时间,Unix 毫秒时间戳

响应示例:

{ "code": 0, "msg": "success", "data": { "relations": [ { "prompt_id": "prompt_test_001", "tags": [ { "prompt_tag_id": "tag_test_001", "team_id": "team_test_001", "tag_name": "产品体验", "created_by": "test_user", "created_time": "1735689600000" } ] } ] } }

为品牌下用户提问添加标签

  • 请求方法:POST
  • 请求路径:/geo/api/prompt/tag/relation/add

说明:已有的绑定关系不会重复创建。

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
prompt_idstring用户提问ID是
tag_idsstring 数组要添加的标签ID列表是

响应参数:

接口调用成功时,返回空对象。

响应示例:

{ "code": 0, "msg": "success", "data": {} }

移除品牌下用户提问标签

  • 请求方法:POST
  • 请求路径:/geo/api/prompt/tag/relation/remove

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
prompt_idstring用户提问ID是
tag_idsstring 数组要移除的标签ID列表是

响应参数:

接口调用成功时,返回空对象。

响应示例:

{ "code": 0, "msg": "success", "data": {} }

批量为品牌下用户提问添加标签

  • 请求方法:POST
  • 请求路径:/geo/api/prompt/tag/relation/add/batch

说明:将 tag_ids 中的标签添加到 prompt_ids 中的每个用户提问,已有的绑定关系不会重复创建。

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
prompt_idsstring 数组用户提问ID列表是
tag_idsstring 数组要添加的标签ID列表是

响应参数:

接口调用成功时,返回空对象。

响应示例:

{ "code": 0, "msg": "success", "data": {} }

批量移除品牌下用户提问标签

  • 请求方法:POST
  • 请求路径:/geo/api/prompt/tag/relation/remove/batch

说明:从 prompt_ids 中的每个用户提问移除 tag_ids 中的标签。

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
prompt_idsstring 数组用户提问ID列表是
tag_idsstring 数组要移除的标签ID列表是

响应参数:

接口调用成功时,返回空对象。

响应示例:

{ "code": 0, "msg": "success", "data": {} }

新建用户提问

  • 请求方法:POST
  • 请求路径:/geo/prompt/create

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
title_idstring用户提问分类ID是
query_strstring用户提问内容是
recommend_idstring关联推荐记录ID否

响应参数:

返回值类型含义
idstring新建的 query ID

响应示例:

{ "code": 0, "msg": "success", "data": { "id": "prompt_test_001" } }

更新用户提问

  • 请求方法:POST
  • 请求路径:/geo/prompt/update

说明:该接口为局部更新(patch)语义。id、brand_id 必传;query_str 与 status 按传入内容更新,未传则不更新。注意:query_str 不能更新为空字符串,status=0 不表示更新。

请求参数:

入参类型含义是否必填
idstringquery ID是
brand_idstring品牌ID是
query_strstring用户提问内容;传入时更新否
statusint用户提问状态;传入时更新,支持:1-启用,2-禁用。0 不表示有效状态,仅表示不更新否

响应参数:

接口调用成功时,返回空对象。

响应示例:

{ "code": 0, "msg": "success", "data": {} }

批量新建用户提问

  • 请求方法:POST
  • 请求路径:/geo/prompt/create/batch

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
title_idstring用户提问分类ID是
promptsstring 数组用户提问内容列表是
recommend_idsstring 数组关联推荐记录ID列表,与 prompts 一一对应;无关联时可填 -1否

响应参数:

返回值类型含义
prompt_idsstring 数组新建的用户提问ID 列表

响应示例:

{ "code": 0, "msg": "success", "data": { "prompt_ids": [ "prompt_test_001", "prompt_test_002" ] } }

获取品牌下的用户提问列表(分组)

  • 请求方法:POST
  • 请求路径:/geo/prompt/get/group

说明:

  • 该接口用于获取品牌下的用户提问列表,按用户提问分类分组。
  • 不传 begin_date 和 end_date 时,默认查询最近 7 天;只传其中一个会返回参数错误。

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
group_typeint分组类型:1-按用户提问分类是
begin_datestring开始日期,格式:YYYY-MM-DD否
end_datestring结束日期,格式:YYYY-MM-DD否
pageint页码否
page_sizeint每页数量否
title_idsstring 数组用户提问分类ID列表否
tag_idsstring 数组标签ID列表否
query_strstring用户提问关键字否

响应参数:

返回值类型含义
titlesobject 数组按分类分组的结果
titles.title_idstring分类ID
titles.title_namestring分类名称
titles.title_descstring分类描述
titles.prompt_countint分类下的用户提问数量
titles.exposurefloat曝光率
titles.fluctuationfloat曝光率变化值
titles.avg_rankfloat平均排名
titles.daily_avg_scoreobject 数组每日平均分
titles.promptsobject 数组分类下的用户提问列表
prompts.idstring用户提问ID
prompts.query_strstring用户提问内容
prompts.statusint用户提问状态:1-启用,2-禁用
prompts.exposurefloat曝光率
prompts.avg_rankfloat平均排名
prompts.daily_avg_scoreobject 数组每日平均分
prompts.title_idstring分类ID
prompts.title_namestring分类名称
prompts.creator_namestring创建人名称
prompts.created_timeint64创建时间
prompts.fluctuationfloat曝光率变化值
prompts.trace_article_cntint关联追踪文章数量
prompts.tagsobject 数组用户提问关联标签
totalint分组总数
total_promptsint用户提问总数

响应示例:

{ "code": 0, "msg": "success", "data": { "titles": [ { "title_id": "title_test_001", "title_name": "测试分类A", "title_desc": "用于演示的用户提问分类", "prompt_count": 1, "exposure": 0.8, "fluctuation": 0.1, "avg_rank": 2.5, "daily_avg_score": [ { "date": "2026-01-15", "score": 86 } ], "prompts": [ { "id": "prompt_test_001", "query_str": "测试品牌A适合哪些业务场景?", "status": 1, "exposure": 0.8, "avg_rank": 2.5, "title_id": "title_test_001", "title_name": "测试分类A", "creator_name": "test_user", "created_time": "1735689600000", "trace_article_cnt": 3 } ] } ], "total": 1, "total_prompts": 1 } }

获取用户提问分类列表

  • 请求方法:POST
  • 请求路径:/geo/title/get

说明:这里的“分类”对应系统中的 title。

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
idstring分类ID否
title_namestring分类名称,支持按名称过滤否

响应参数:

返回值类型含义
idstring分类ID
brand_idstring品牌ID
title_namestring分类名称
title_descstring分类描述
countint该分类下的用户提问数量
created_timestring创建时间
updated_timestring更新时间

响应示例:

{ "code": 0, "msg": "success", "data": [ { "id": "title_test_001", "brand_id": "brand_test_001", "title_name": "测试分类A", "title_desc": "用于演示的用户提问分类", "count": 12, "created_time": "2026-01-01", "updated_time": "2026-01-15" } ] }

新建用户提问 分类

  • 请求方法:POST
  • 请求路径:/geo/title/create

说明:这里的“分类”对应系统中的 title。

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
title_namestring分类名称是
title_descstring分类描述否

响应参数:

返回值类型含义
idstring新建的分类ID

响应示例:

{ "code": 0, "msg": "success", "data": { "id": "title_test_001" } }

更新用户提问 分类

  • 请求方法:POST
  • 请求路径:/geo/title/update

说明:这里的“分类”对应系统中的 title。该接口为部分更新语义:id、brand_id、title_name 必传;title_desc 传入时才更新,未传则不更新。

请求参数:

入参类型含义是否必填
idstring分类ID是
brand_idstring品牌ID是
title_namestring分类名称是
title_descstring分类描述;传入时更新否

响应参数:

接口调用成功时,返回空对象。

响应示例:

{ "code": 0, "msg": "success", "data": {} }

更新用户提问 所属分类

  • 请求方法:POST
  • 请求路径:/geo/prompt/relation/update

说明:该接口不是局部更新,而是替换关联语义,用于将指定用户提问重新归类到新的分类下。

请求参数:

入参类型含义是否必填
brand_idstring品牌ID是
title_idstring目标分类ID是
prompt_idstring用户提问ID是

响应参数:

接口调用成功时,返回空对象。

响应示例:

{ "code": 0, "msg": "success", "data": {} }

删除用户提问

  • 请求方法:POST
  • 请求路径:/geo/prompt/delete

请求参数:

入参类型含义是否必填
idstringquery ID是
brand_idstring品牌ID是

响应参数:

接口调用成功时,返回空对象。

响应示例:

{ "code": 0, "msg": "success", "data": {} }

批量删除用户提问

  • 请求方法:POST
  • 请求路径:/geo/prompt/delete/batch

请求参数:

入参类型含义是否必填
prompt_idsstring 数组用户提问ID 列表是
brand_idstring品牌ID是

响应参数:

接口调用成功时,返回空对象。

响应示例:

{ "code": 0, "msg": "success", "data": {} }

删除用户提问分类

  • 请求方法:POST
  • 请求路径:/geo/title/delete

请求参数:

入参类型含义是否必填
idstring分类ID是

响应参数:

接口调用成功时,返回空对象。

响应示例:

{ "code": 0, "msg": "success", "data": {} }

触发推荐提问生成

  • 请求方法:POST
  • 请求路径:/geo/question-recommendation/trigger

说明:该接口异步生成推荐提问,触发后通过查询推荐提问列表读取结果。

请求参数:

入参类型含义是否必填
brand_idstring品牌 ID是
target_datestring目标日期 YYYY-MM-DD;可省略否

请求示例:

{ "brand_id": "1001", "target_date": "2026-10-14" }

响应参数:

返回值类型含义
codeint0 表示成功
messagestring返回消息
data.brand_idstring品牌 ID
data.statusstring已触发时为 processing

响应示例:

{ "code": 0, "message": "推荐任务已触发", "data": { "brand_id": "1001", "status": "processing" } }

查询推荐提问列表

  • 请求方法:POST
  • 请求路径:/geo/question-recommendation/list

说明:question_type 为 1 时查询基建型提问,为 2 时查询触发型提问;不传或传 0 时查询全部类型。

请求参数:

入参类型含义是否必填
brand_idstring品牌 ID是
question_typeint0/省略=全部;1=基建型;2=触发型否
intent_typeint0/省略=不筛选;1–8 为现有意图类型否
statusstringPENDING、CONFIRMED 或 EDITED否
sort_bystringheat_score、created_time、latest_crawl_date否
sort_orderstringasc 或 desc否
min_heat_scorenumber最低热度分数否
date_from / date_tostring创建日期范围 YYYY-MM-DD否
pageint默认 1否
page_sizeint建议显式传 1–100;未指定 question_type 时省略或传 0 默认按 10 处理;指定类型时省略或传 0、或传大于 100 的值,回落为 20;负数直接返回参数错误否

请求示例:

{ "brand_id": "1001", "question_type": 1, "status": "PENDING", "page": 1, "page_size": 20 }

响应参数:

返回值类型含义
codeint0 表示成功
messagestring返回消息
data.totalint符合条件的推荐总数
data.listobject 数组推荐记录列表
data.list[].id / brand_idstring推荐记录 ID / 品牌 ID
data.list[].question_text / original_question_textstring当前 / 原始提问内容
data.list[].question_typeint1=基建型;2=触发型
data.list[].knowledge_dimensionstring知识维度,适用时返回
data.list[].heat_scorenumber当前结果集相对热度,最大值归一化为 100
data.list[].avg_ranknumber平均排名
data.list[].source_platformsstring来源平台,逗号分隔
data.list[].source_countint来源次数
data.list[].first_crawl_date / latest_crawl_datestring采集起止日期 YYYY-MM-DD
data.list[].statusstringPENDING、CONFIRMED 或 EDITED
data.list[].is_editedbool是否编辑过
data.list[].confirmed_timestring确认时间,未确认时无有效值
data.list[].monitor_query_idstring确认后关联的用户提问 ID
data.list[].created_time / updated_timestringRFC 3339 时间
data.list[].cluster_infoobject关联意图簇,存在时返回

响应示例:

{ "code": 0, "message": "success", "data": { "total": 1, "list": [ { "id": "5001", "brand_id": "1001", "question_text": "如何评估测试品牌A的产品服务?", "original_question_text": "如何评估测试品牌A的产品服务?", "question_type": 1, "knowledge_dimension": "事实型提问", "heat_score": 100, "source_platforms": "doubao", "source_count": 1, "avg_rank": 2.0, "first_crawl_date": "2026-10-14", "latest_crawl_date": "2026-10-14", "status": "PENDING", "is_edited": false, "created_time": "2026-10-14T09:00:00+08:00", "updated_time": "2026-10-14T09:00:00+08:00" } ] } }

确认推荐并创建监控提问

  • 请求方法:POST
  • 请求路径:/geo/question-recommendation/confirm

请求参数:

入参类型含义是否必填
recommendation_idstring推荐记录 ID是

请求示例:

{ "recommendation_id": "5001" }

响应参数:

返回值类型含义
codeint0 表示成功
messagestring返回消息
data.recommendation_id / monitor_query_idstring推荐记录 ID / 新建用户提问 ID
data.statusstring确认后为 CONFIRMED
data.confirmed_timestringRFC 3339 确认时间

响应示例:

{ "code": 0, "message": "推荐已确认,已添加到监控提问", "data": { "recommendation_id": "5001", "monitor_query_id": "3001", "status": "CONFIRMED", "confirmed_time": "2026-10-14T09:10:00+08:00" } }

查询团队模型标签

  • 请求方法:POST
  • 请求路径:/geo/prompt/tag/get

说明:模型绑定使用本接口返回的模型标签 ID;/geo/api/prompt/tag/get 返回用户标签。

请求参数:

入参类型含义是否必填
team_idstring团队 ID是
tag_typeint 数组标签类型筛选;查询模型传 [3]否

请求示例:

{ "team_id": "2001", "tag_type": [ 3 ] }

响应参数:

返回值类型含义
codeint0 表示成功
msgstring返回消息
dataobject 数组标签列表;以下字段属于每个 data[] 元素
data[].prompt_tag_id / team_idstring标签 ID / 团队 ID
data[].tag_namestring标签名称;模型标签对应模型名称
data[].created_bystring创建人名称
data[].created_timestring (int64)Unix 毫秒时间戳
data[].prompt_countint关联提问数量
data[].tag_typeint1=用户;2=系统;3=模型

响应示例:

{ "code": 0, "msg": "success", "data": [ { "prompt_tag_id": "6001", "team_id": "2001", "tag_name": "deepseek", "created_by": "测试管理员A", "created_time": "1791939600000", "prompt_count": 2, "tag_type": 3 } ] }

保存用户提问的模型绑定

  • 请求方法:POST
  • 请求路径:/geo/prompt/tag/relation/model/replace

说明:tag_ids 全量替换指定 prompt_ids 的模型标签,其他类型标签保持不变。为分组中的提问配置模型时,可先通过查询品牌下的用户提问按 title_ids 分页获取提问 ID,再提交绑定;之后新增的提问不会自动继承此次配置。

请求参数:

入参类型含义是否必填
team_idstring团队 ID是
prompt_idsstring 数组当前要更新的提问 ID,不能为空是
tag_idsstring 数组目标模型标签 ID 全量集合;[] 清空模型绑定是

请求示例:

{ "team_id": "2001", "prompt_ids": [ "3001" ], "tag_ids": [ "6001" ] }

响应参数:

返回值类型含义
codeint0 表示成功
msgstring返回消息
dataobject成功时为空对象

响应示例:

{ "code": 0, "msg": "success", "data": {} }

读回用户提问的模型绑定

  • 请求方法:POST
  • 请求路径:/geo/prompt/tag/relation/batch

请求参数:

入参类型含义是否必填
team_idstring团队 ID是
prompt_idsstring 数组提问 ID 列表,不能为空是
tag_typeint 数组读取模型标签传 [3]否

请求示例:

{ "team_id": "2001", "prompt_ids": [ "3001" ], "tag_type": [ 3 ] }

响应参数:

返回值类型含义
codeint0 表示成功
msgstring返回消息
dataobject 数组提问与标签关联列表
data[].prompt_idstring提问 ID
data[].tagsobject 数组标签列表,结构见“查询团队模型标签”

响应示例:

{ "code": 0, "msg": "success", "data": [ { "prompt_id": "3001", "tags": [ { "prompt_tag_id": "6001", "team_id": "2001", "tag_name": "deepseek", "created_by": "测试管理员A", "created_time": "1791939600000", "prompt_count": 2, "tag_type": 3 } ] } ] }
Answerbit - AI搜索可见度追踪平台