> For the complete documentation index, see [llms.txt](https://docscn.jkidata.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docscn.jkidata.com/xin-wen-shu-ju/tong-yong-xin-wen-jie-kou-news-api.md).

# 📰 通用新闻接口（News API）

获取全球最新新闻，支持按语言、国家、分类和关键词筛选，并可请求完整正文、图片等扩展数据。

### 接口信息

```
GET /latest
```

> 本页面使用相对路径。API 基础地址请参考「新闻数据」首页。

### 请求参数

| 参数             | 类型     | 必填 | 示例                | 说明                 |
| -------------- | ------ | -- | ----------------- | ------------------ |
| `key`          | string | 是  | `YOUR_API_KEY`    | API 访问密钥           |
| `language`     | string | 否  | `en`              | 新闻语言代码             |
| `country`      | string | 否  | `us`              | 国家或地区代码            |
| `category`     | string | 否  | `business`        | 新闻分类               |
| `q`            | string | 否  | `NASDAQ`          | 新闻搜索关键词            |
| `full_content` | number | 否  | `1`               | 设置为 `1` 时请求完整正文    |
| `image`        | number | 否  | `1`               | 设置为 `1` 时请求图片或媒体数据 |
| `page`         | string | 否  | `NEXT_PAGE_TOKEN` | 下一页分页标识            |

> 除 `key` 外，其他参数均为可选参数。不传筛选参数时，接口返回最新综合新闻。

### 基础请求

获取最新新闻：

```
GET /latest?key=YOUR_API_KEY
```

获取最新英文商业新闻：

```
GET /latest?language=en&category=business&key=YOUR_API_KEY
```

### 关键词搜索

通过 `q` 参数搜索标题、摘要或正文中包含指定关键词的新闻。

获取英文股票新闻：

```
GET /latest?language=en&category=business&q=stock&key=YOUR_API_KEY
```

获取 NASDAQ 相关新闻：

```
GET /latest?language=en&category=business&q=NASDAQ&key=YOUR_API_KEY
```

获取印度 NSE 相关新闻：

```
GET /latest?language=en&country=in&category=business&q=NSE&key=YOUR_API_KEY
```

获取中国中文股票新闻：

```
GET /latest?language=zh&country=cn&category=business&q=股票&key=YOUR_API_KEY
```

{% hint style="info" %}\
获取股票市场新闻时，建议使用 `category=business` 配合 `q`。关键词可以使用 `stock`、`share`、`exchange`、交易所代码、公司名称或产品代码。\
{% endhint %}

### 请求完整内容和图片

```
GET /latest?language=en&country=us&category=business&q=NASDAQ&full_content=1&image=1&key=YOUR_API_KEY
```

#### 参数说明

```
full_content=1
```

表示请求完整新闻正文。正文能否完整返回取决于新闻来源和内容授权。

```
image=1
```

表示请求新闻图片或媒体信息。并非所有新闻都提供图片或视频。

### cURL 示例

```
curl --request GET \
  "$JKIDATA_NEWS_BASE_URL/latest?language=en&category=business&q=NASDAQ&key=$JKIDATA_API_KEY"
```

### Python 示例

```
import requests

url = f"{JKIDATA_NEWS_BASE_URL}/latest"

params = {
    "language": "en",
    "country": "us",
    "category": "business",
    "q": "NASDAQ",
    "full_content": 1,
    "image": 1,
    "key": JKIDATA_API_KEY,
}

response = requests.get(url, params=params, timeout=20)
response.raise_for_status()

result = response.json()

if result.get("status") != "success":
    raise RuntimeError(result)

for article in result.get("results", []):
    print(article.get("title"))
```

### JavaScript 示例

```
const params = new URLSearchParams({
  language: "en",
  country: "us",
  category: "business",
  q: "NASDAQ",
  full_content: "1",
  image: "1",
  key: process.env.JKIDATA_API_KEY,
});

const response = await fetch(
  `${process.env.JKIDATA_NEWS_BASE_URL}/latest?${params}`
);

if (!response.ok) {
  throw new Error(`HTTP ${response.status}`);
}

const result = await response.json();

if (result.status !== "success") {
  throw new Error(result.message ?? "News API request failed");
}

for (const article of result.results ?? []) {
  console.log(article.title);
}
```

### 成功响应示例

```
{
  "status": "success",
  "totalResults": 2876,
  "results": [
    {
      "article_id": "example-article-id",
      "title": "Example financial market news",
      "link": "https://example.com/news/article",
      "keywords": [
        "NASDAQ",
        "stocks"
      ],
      "creator": [
        "Example Author"
      ],
      "video_url": null,
      "description": "Example news description.",
      "content": "Example news content.",
      "pubDate": "2026-08-30 10:30:00",
      "pubDateTZ": "UTC",
      "image_url": "https://example.com/image.jpg",
      "source_id": "example-source",
      "source_name": "Example Source",
      "source_url": "https://example.com",
      "source_icon": "https://example.com/icon.png",
      "source_priority": 100,
      "language": "english",
      "country": [
        "united states of america"
      ],
      "category": [
        "business"
      ],
      "ai_tag": null,
      "ai_region": null,
      "ai_org": null,
      "sentiment": "neutral",
      "sentiment_stats": {
        "positive": 0.2,
        "neutral": 0.7,
        "negative": 0.1
      },
      "duplicate": false
    }
  ],
  "nextPage": "NEXT_PAGE_TOKEN"
}
```

> 示例内容仅用于展示数据结构，不代表真实新闻或当前统计数量。

### 顶层字段

| 字段             | 类型            | 说明                  |
| -------------- | ------------- | ------------------- |
| `status`       | string        | 请求状态，成功时为 `success` |
| `totalResults` | number        | 符合条件的新闻总数           |
| `results`      | array         | 新闻对象列表              |
| `nextPage`     | string / null | 下一页分页标识             |

### 分页请求

当响应包含 `nextPage` 时，将其完整传入下一次请求的 `page` 参数。

```
GET /latest?language=en&category=business&q=NASDAQ&page=NEXT_PAGE_TOKEN&key=YOUR_API_KEY
```

#### Python 分页示例

```
next_page = result.get("nextPage")

if next_page:
    params["page"] = next_page

    next_response = requests.get(
        url,
        params=params,
        timeout=20,
    )
    next_response.raise_for_status()

    next_result = next_response.json()
```

{% hint style="warning" %}\
`nextPage` 是服务端生成的分页标识。请原样传回，不要自行解析、修改或生成。\
{% endhint %}

### 错误处理

部分业务错误可能仍然使用 HTTP `200` 返回，因此客户端不能只检查 HTTP 状态码，还必须检查响应中的业务状态。

业务错误响应可能类似：

```
{
  "Cmd": "api",
  "State": -1,
  "Msg": "接口请求出错，请检查参数"
}
```

建议同时判断：

1. HTTP 状态码是否成功。
2. `status` 是否为 `success`。
3. 是否存在 `State` 且值为负数。
4. 是否包含业务错误说明字段 `Msg`。

#### JavaScript

```
if (
  !response.ok ||
  result.status === "error" ||
  (typeof result.State === "number" && result.State < 0)
) {
  throw new Error(
    result.message ??
    result.Msg ??
    `HTTP ${response.status}`
  );
}
```

### 使用建议

* 股票新闻建议使用 `category=business` 配合 `q`。
* 查询特定交易所时，优先使用 `NASDAQ`、`NYSE`、`NSE` 或 `BSE` 等代码。
* 查询指定公司时，可以使用公司名称或产品代码。
* 一次请求建议使用一个明确的核心关键词。
* 建议每隔 **5–10 分钟**更新一次股票新闻。
* 使用 `article_id` 或 `link` 对新闻进行去重。
* 列表页优先展示 `title` 和 `description`。
* 详情页需要正文时再使用 `full_content=1`。
* 图片、视频、正文和 AI 字段均可能为空。
* 请勿在前端代码或公共代码仓库中暴露真实 API Key。
