curl --location 'https://geobaseapi.aibase.com/v1/openapi/execute' \
--header 'Content-Type: application/json' \
--header 'AIBase-API-Key: AIBase_xxxxxxxxxxxxxxxx' \
--header 'AIBase-Request-Id: req-20260924-001' \
--data '{"apiCode":"sentiment.source.negative.details","data":{"brandId":"brand-001","startDate":"2026-09-01","endDate":"2026-09-23","llmName":"deepseek","pageNo":1,"pageSize":50}}'
import os
import requests
api_key = os.environ["AIBASE_API_KEY"]
headers = {
"AIBase-API-Key": api_key,
"Content-Type": "application/json",
"AIBase-Request-Id": "req-20260924-001",
}
payload = {
"apiCode": "sentiment.source.negative.details",
"data": {
"brandId": "brand-001",
"startDate": "2026-09-01",
"endDate": "2026-09-23",
"llmName": "deepseek",
"pageNo": 1,
"pageSize": 50
}
}
res = requests.post(
"https://geobaseapi.aibase.com/v1/openapi/execute",
headers=headers,
json=payload,
timeout=60,
)
res.raise_for_status()
body = res.json()
if body["code"] == 200:
print(body["data"])
const payload = {
"apiCode": "sentiment.source.negative.details",
"data": {
"brandId": "brand-001",
"startDate": "2026-09-01",
"endDate": "2026-09-23",
"llmName": "deepseek",
"pageNo": 1,
"pageSize": 50
}
};
const res = await fetch("https://geobaseapi.aibase.com/v1/openapi/execute", {
method: "POST",
headers: {
"Content-Type": "application/json",
"AIBase-API-Key": process.env.AIBASE_API_KEY,
"AIBase-Request-Id": "req-20260924-001",
},
body: JSON.stringify(payload),
});
const body = await res.json();
if (body.code === 200) {
console.log(body.data);
}
String body = """
{
"apiCode": "sentiment.source.negative.details",
"data": {
"brandId": "brand-001",
"startDate": "2026-09-01",
"endDate": "2026-09-23",
"llmName": "deepseek",
"pageNo": 1,
"pageSize": 50
}
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://geobaseapi.aibase.com/v1/openapi/execute"))
.header("Content-Type", "application/json")
.header("AIBase-API-Key", "AIBase_xxxxxxxxxxxxxxxx")
.header("AIBase-Request-Id", "req-20260924-001")
.POST(BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, BodyHandlers.ofString());
System.out.println(response.body());
{
"code": 200,
"msg": "成功",
"data": {
"records": [
{
"promptId": "prompt-001",
"domain": "www.example.com",
"citationUrl": "https://www.example.com/article/001",
"citationTitle": "示例文章标题",
"platformName": "新闻媒体",
"platformIcon": "https://cdn.example.com/icon.png",
"mentionedBrandsArr": [
"某某品牌",
"竞品A"
],
"llmName": "deepseek",
"sentiment": "negative",
"attributes": [
"价格偏高",
"售后一般"
],
"citeTotal": 5,
"queryDate": "2026-09-15",
"avgPosition": "2.6"
}
],
"total": 1,
"size": 50,
"current": 1,
"pages": 1
},
"timeStamp": 1788830174812
}
引用来源负面口碑明细
分页查询指定品牌在指定时间范围内口碑为负面的引用来源 URL 明细,按引用 URL 聚合去重,汇总每条负面来源的引用平台、口碑词、引用次数、涉及品牌与平均提及位次。
POST
/
v1
/
openapi
/
execute
curl --location 'https://geobaseapi.aibase.com/v1/openapi/execute' \
--header 'Content-Type: application/json' \
--header 'AIBase-API-Key: AIBase_xxxxxxxxxxxxxxxx' \
--header 'AIBase-Request-Id: req-20260924-001' \
--data '{"apiCode":"sentiment.source.negative.details","data":{"brandId":"brand-001","startDate":"2026-09-01","endDate":"2026-09-23","llmName":"deepseek","pageNo":1,"pageSize":50}}'
import os
import requests
api_key = os.environ["AIBASE_API_KEY"]
headers = {
"AIBase-API-Key": api_key,
"Content-Type": "application/json",
"AIBase-Request-Id": "req-20260924-001",
}
payload = {
"apiCode": "sentiment.source.negative.details",
"data": {
"brandId": "brand-001",
"startDate": "2026-09-01",
"endDate": "2026-09-23",
"llmName": "deepseek",
"pageNo": 1,
"pageSize": 50
}
}
res = requests.post(
"https://geobaseapi.aibase.com/v1/openapi/execute",
headers=headers,
json=payload,
timeout=60,
)
res.raise_for_status()
body = res.json()
if body["code"] == 200:
print(body["data"])
const payload = {
"apiCode": "sentiment.source.negative.details",
"data": {
"brandId": "brand-001",
"startDate": "2026-09-01",
"endDate": "2026-09-23",
"llmName": "deepseek",
"pageNo": 1,
"pageSize": 50
}
};
const res = await fetch("https://geobaseapi.aibase.com/v1/openapi/execute", {
method: "POST",
headers: {
"Content-Type": "application/json",
"AIBase-API-Key": process.env.AIBASE_API_KEY,
"AIBase-Request-Id": "req-20260924-001",
},
body: JSON.stringify(payload),
});
const body = await res.json();
if (body.code === 200) {
console.log(body.data);
}
String body = """
{
"apiCode": "sentiment.source.negative.details",
"data": {
"brandId": "brand-001",
"startDate": "2026-09-01",
"endDate": "2026-09-23",
"llmName": "deepseek",
"pageNo": 1,
"pageSize": 50
}
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://geobaseapi.aibase.com/v1/openapi/execute"))
.header("Content-Type", "application/json")
.header("AIBase-API-Key", "AIBase_xxxxxxxxxxxxxxxx")
.header("AIBase-Request-Id", "req-20260924-001")
.POST(BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, BodyHandlers.ofString());
System.out.println(response.body());
{
"code": 200,
"msg": "成功",
"data": {
"records": [
{
"promptId": "prompt-001",
"domain": "www.example.com",
"citationUrl": "https://www.example.com/article/001",
"citationTitle": "示例文章标题",
"platformName": "新闻媒体",
"platformIcon": "https://cdn.example.com/icon.png",
"mentionedBrandsArr": [
"某某品牌",
"竞品A"
],
"llmName": "deepseek",
"sentiment": "negative",
"attributes": [
"价格偏高",
"售后一般"
],
"citeTotal": 5,
"queryDate": "2026-09-15",
"avgPosition": "2.6"
}
],
"total": 1,
"size": 50,
"current": 1,
"pages": 1
},
"timeStamp": 1788830174812
}
分页查询指定品牌在指定时间范围内口碑为负面的引用来源 URL 明细,按引用 URL 聚合去重,汇总每条负面来源的引用平台、口碑词、引用次数、涉及品牌与平均提及位次。
完整响应类型可表示为
可按以上 TypeScript 类型定义解析响应数据。
执行模式:SYNC · 实时请求。
请求发出后服务端同步执行业务,结果直接在当前响应的
data 中返回,不存在异步任务、无需轮询、无需二次查询。接口速查
| 项目 | 当前接口约定 |
|---|---|
| 接口状态 | 已上线 |
| 请求方式 | POST |
| 请求地址 | https://geobaseapi.aibase.com/v1/openapi/execute |
| 业务标识 | sentiment.source.negative.details |
| 执行模式 | SYNC · 实时请求(直接返回,无需轮询) |
| 身份认证 | Header AIBase-API-Key |
| 请求格式 | application/json |
| 返回结构 | 分页结构(records + total / size / current / pages) |
请求头
string
required
开发者 API Key,例如
AIBase_xxx。用于身份认证、有效期与调用权限校验,请仅在服务端保存和使用。string
required
固定为
application/json。string
开发者自定义请求 ID,用于请求追踪;不传时系统自动生成 UUID。
请求体
string
required
固定为
sentiment.source.negative.details。object
required
业务请求参数对象。
string
required
品牌 ID。所属品牌 ID,为空返回 4001
string
AI平台。按 AI 平台筛选,如 deepseek;不传返回全部平台
string
开始日期。格式 yyyy-MM-dd;默认最近 7 天
string
结束日期。格式 yyyy-MM-dd;默认今天,不能晚于今天
integer
页码。默认 1
integer
每页条数。默认 50,最大 100,超限自动截断为 100
时间范围规则:startDate/endDate 不传时默认查询最近 7 天;endDate 晚于今天会被自动截断为今天;起止时间跨度最大 6 个月;开始日期晚于结束日期将直接报错。
curl --location 'https://geobaseapi.aibase.com/v1/openapi/execute' \
--header 'Content-Type: application/json' \
--header 'AIBase-API-Key: AIBase_xxxxxxxxxxxxxxxx' \
--header 'AIBase-Request-Id: req-20260924-001' \
--data '{"apiCode":"sentiment.source.negative.details","data":{"brandId":"brand-001","startDate":"2026-09-01","endDate":"2026-09-23","llmName":"deepseek","pageNo":1,"pageSize":50}}'
import os
import requests
api_key = os.environ["AIBASE_API_KEY"]
headers = {
"AIBase-API-Key": api_key,
"Content-Type": "application/json",
"AIBase-Request-Id": "req-20260924-001",
}
payload = {
"apiCode": "sentiment.source.negative.details",
"data": {
"brandId": "brand-001",
"startDate": "2026-09-01",
"endDate": "2026-09-23",
"llmName": "deepseek",
"pageNo": 1,
"pageSize": 50
}
}
res = requests.post(
"https://geobaseapi.aibase.com/v1/openapi/execute",
headers=headers,
json=payload,
timeout=60,
)
res.raise_for_status()
body = res.json()
if body["code"] == 200:
print(body["data"])
const payload = {
"apiCode": "sentiment.source.negative.details",
"data": {
"brandId": "brand-001",
"startDate": "2026-09-01",
"endDate": "2026-09-23",
"llmName": "deepseek",
"pageNo": 1,
"pageSize": 50
}
};
const res = await fetch("https://geobaseapi.aibase.com/v1/openapi/execute", {
method: "POST",
headers: {
"Content-Type": "application/json",
"AIBase-API-Key": process.env.AIBASE_API_KEY,
"AIBase-Request-Id": "req-20260924-001",
},
body: JSON.stringify(payload),
});
const body = await res.json();
if (body.code === 200) {
console.log(body.data);
}
String body = """
{
"apiCode": "sentiment.source.negative.details",
"data": {
"brandId": "brand-001",
"startDate": "2026-09-01",
"endDate": "2026-09-23",
"llmName": "deepseek",
"pageNo": 1,
"pageSize": 50
}
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://geobaseapi.aibase.com/v1/openapi/execute"))
.header("Content-Type", "application/json")
.header("AIBase-API-Key", "AIBase_xxxxxxxxxxxxxxxx")
.header("AIBase-Request-Id", "req-20260924-001")
.POST(BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, BodyHandlers.ofString());
System.out.println(response.body());
返回参数
业务结果位于 data,为分页结构,其中 records 为负面口碑的引用来源明细列表(按引用 URL 去重)。无数据时 records 为空数组、total 为 0。object[]
负面口碑引用来源明细。口碑为负面的引用来源 URL 明细,按 URL 去重。
string
AI对话问题ID。关联的 AI 对话问题 ID。
string
域名。来源页面域名。
string
来源页面URL。被引用的来源 URL。
string
来源页面标题。来源页面标题。
string
来源引用平台。引用该页面的来源平台名称。
string
来源引用图标。来源平台图标 URL。
object[]
提到的品牌。该来源页面提及的品牌数组。
string
平台名称。引用该来源的 AI 平台名称。
string
口碑(情感)。本接口仅筛选负面口碑,sentiment 固定为 negative。
object[]
口碑词。该来源上品牌的口碑词数组。
integer
引用次数。该来源被引用的总次数。
string
查询日期。查询日期,格式 yyyy-MM-dd。
string
平均提及位次。该来源被引用时的平均提及位次。
integer
required
记录总数。
integer
required
每页条数。
integer
required
当前页码。
integer
required
总页数。
{
"code": 200,
"msg": "成功",
"data": {
"records": [
{
"promptId": "prompt-001",
"domain": "www.example.com",
"citationUrl": "https://www.example.com/article/001",
"citationTitle": "示例文章标题",
"platformName": "新闻媒体",
"platformIcon": "https://cdn.example.com/icon.png",
"mentionedBrandsArr": [
"某某品牌",
"竞品A"
],
"llmName": "deepseek",
"sentiment": "negative",
"attributes": [
"价格偏高",
"售后一般"
],
"citeTotal": 5,
"queryDate": "2026-09-15",
"avgPosition": "2.6"
}
],
"total": 1,
"size": 50,
"current": 1,
"pages": 1
},
"timeStamp": 1788830174812
}
接入注意事项
- apiCode 必须固定为 sentiment.source.negative.details。
- brandId 为必填参数,为空返回 4001(所需参数不足)。
- startDate/endDate 格式必须为 yyyy-MM-dd,默认最近 7 天,最大查询跨度 6 个月。
- 返回结构为分页对象;无数据时 records 为空数组、total 为 0。
- 仅返回口碑为负面(sentiment 固定为 negative)的引用来源明细,按查询日期倒序。
- 按引用 URL 聚合去重,同一 URL 仅保留最新一条记录。
- pageNo 默认 1,pageSize 默认 50、最大 100,超限自动截断为 100。
- mentionedBrandsArr、attributes 为数组字段,按数组解析。
Java 返回对象
Java 返回对象
public class SourceCitationNegative {
private String promptId;
private String domain;
private String citationUrl;
private String citationTitle;
private String platformName;
private String platformIcon;
private Object mentionedBrandsArr;
private String llmName;
private String sentiment;
private Object attributes;
private Integer citeTotal;
private String queryDate;
private String avgPosition;
}
ReturnResult<PageResult<SourceCitationNegative>>(PageResult 定义见 6.2.5)。TypeScript 类型
TypeScript 类型
export interface SourceCitationNegative {
promptId: string | null;
domain: string | null;
citationUrl: string | null;
citationTitle: string | null;
platformName: string | null;
platformIcon: string | null;
mentionedBrandsArr: string[] | null;
llmName: string | null;
sentiment: string | null;
attributes: string[] | null;
citeTotal: number | null;
queryDate: string | null;
avgPosition: string | null;
}
本页的 cURL 与 Java 示例来自官方接口文档;Python 与 Node.js 示例为等价转写,未经服务端联调,请以实际返回结果为准。