> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aibase.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 引用来源负面口碑明细

> 分页查询指定品牌在指定时间范围内口碑为负面的引用来源 URL 明细，按引用 URL 聚合去重，汇总每条负面来源的引用平台、口碑词、引用次数、涉及品牌与平均提及位次。

分页查询指定品牌在指定时间范围内口碑为负面的引用来源 URL 明细，按引用 URL 聚合去重，汇总每条负面来源的引用平台、口碑词、引用次数、涉及品牌与平均提及位次。

> [!NOTE]
>
> **执行模式：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`） |

## 请求头

**AIBase-API-Key** `string` *required*

开发者 API Key，例如 `AIBase_xxx`。用于身份认证、有效期与调用权限校验，请仅在服务端保存和使用。

**Content-Type** `string` *required*

固定为 `application/json`。

**AIBase-Request-Id** `string`

开发者自定义请求 ID，用于请求追踪；不传时系统自动生成 UUID。

## 请求体

**apiCode** `string` *required*

固定为 `sentiment.source.negative.details`。

**data** `object` *required*

业务请求参数对象。

**data.brandId** `string` *required*

品牌 ID。所属品牌 ID，为空返回 4001

**data.llmName** `string`

AI平台。按 AI 平台筛选，如 deepseek；不传返回全部平台

**data.startDate** `string`

开始日期。格式 yyyy-MM-dd；默认最近 7 天

**data.endDate** `string`

结束日期。格式 yyyy-MM-dd；默认今天，不能晚于今天

**data.pageNo** `integer`

页码。默认 1

**data.pageSize** `integer`

每页条数。默认 50，最大 100，超限自动截断为 100

> [!NOTE]
>
> 时间范围规则：startDate/endDate 不传时默认查询最近 7 天；endDate 晚于今天会被自动截断为今天；起止时间跨度最大 6 个月；开始日期晚于结束日期将直接报错。

```bash cURL theme={null}
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}}'
```

```python Python theme={null}
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"])
```

```javascript Node.js theme={null}
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);
}
```

```java Java theme={null}
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。

**records** `object[]`

负面口碑引用来源明细。口碑为负面的引用来源 URL 明细，按 URL 去重。

**records\[].promptId** `string`

AI对话问题ID。关联的 AI 对话问题 ID。

**records\[].domain** `string`

域名。来源页面域名。

**records\[].citationUrl** `string`

来源页面URL。被引用的来源 URL。

**records\[].citationTitle** `string`

来源页面标题。来源页面标题。

**records\[].platformName** `string`

来源引用平台。引用该页面的来源平台名称。

**records\[].platformIcon** `string`

来源引用图标。来源平台图标 URL。

**records\[].mentionedBrandsArr** `object[]`

提到的品牌。该来源页面提及的品牌数组。

**records\[].llmName** `string`

平台名称。引用该来源的 AI 平台名称。

**records\[].sentiment** `string`

口碑（情感）。本接口仅筛选负面口碑，sentiment 固定为 negative。

**records\[].attributes** `object[]`

口碑词。该来源上品牌的口碑词数组。

**records\[].citeTotal** `integer`

引用次数。该来源被引用的总次数。

**records\[].queryDate** `string`

查询日期。查询日期，格式 yyyy-MM-dd。

**records\[].avgPosition** `string`

平均提及位次。该来源被引用时的平均提及位次。

**total** `integer` *required*

记录总数。

**size** `integer` *required*

每页条数。

**current** `integer` *required*

当前页码。

**pages** `integer` *required*

总页数。

```json 200 (成功响应) theme={null}
{
  "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
}
```

## 接入注意事项

1. apiCode 必须固定为 sentiment.source.negative.details。
2. brandId 为必填参数，为空返回 4001（所需参数不足）。
3. startDate/endDate 格式必须为 yyyy-MM-dd，默认最近 7 天，最大查询跨度 6 个月。
4. 返回结构为分页对象；无数据时 records 为空数组、total 为 0。
5. 仅返回口碑为负面（sentiment 固定为 negative）的引用来源明细，按查询日期倒序。
6. 按引用 URL 聚合去重，同一 URL 仅保留最新一条记录。
7. pageNo 默认 1，pageSize 默认 50、最大 100，超限自动截断为 100。
8. mentionedBrandsArr、attributes 为数组字段，按数组解析。

> [accordion] Java 返回对象
>
> ```java theme={null}
> 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）。

> [accordion] TypeScript 类型
>
> ```typescript theme={null}
> 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;
> }
> ```
>
> 可按以上 TypeScript 类型定义解析响应数据。

> [!NOTE]
>
> 本页的 cURL 与 Java 示例来自官方接口文档；Python 与 Node.js 示例为等价转写，未经服务端联调，请以实际返回结果为准。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.