# New API

> 通过 New API 插件市场里的 Search1API 插件，在你的 New API 网关上转售 Search1API 的网页搜索、新闻、网页读取、地图等能力。

Canonical URL: https://s1.dev/zh/docs/integrations/newapi

[New API](https://github.com/QuantumNous/new-api) 是开源的 AI 网关。Search1API 插件已上架 New API 社区插件市场，安装后网关会提供 Search1API 的各个接口：你的用户用网关令牌调用，网关按你设置的价格对每次请求计费。

> **info:** 这个插件面向网关管理员。它运行在 New API 内部，用渠道里的 API Key 把请求转发给 Search1API，你的用户看不到这个 Key。

## 准备工作

你需要：

- 一个支持任务插件的 New API 部署，并以 Root 超级管理员登录；
- 一个 Search1API API Key。登录 [app.s1.dev](https://app.s1.dev)，打开 **API Keys** 创建即可。新账号自带免费积分，可以直接测试。

## 安装插件

1. 在 New API 中打开「任务插件」（`/task-plugins`），确认页面顶部的任务插件总开关已开启。
2. 打开「插件市场」，选择「社区」（Community）市场源，搜索 **Search1API**。
3. 选择最新版本，阅读更新日志后点「安装并启用」。

如果你的网关里没有社区市场源，把下面的索引地址添加为市场源：

```text
https://www.newapi.ai/api/v1/community/index.json
```

插件在官网市场的页面是 [newapi.ai/zh/plugins](https://www.newapi.ai/zh/plugins?market=community&plugin=46171169)。

## 添加渠道

1. 新建类型为「任务插件（61）」的渠道，绑定 **Search1API** 插件。
2. 密钥填 Search1API 的 API Key。
3. API 地址留空，插件会自动填入 `https://api.search1api.com`。
4. 添加要售卖的模型。每个接口是一个独立模型，可以分别定价、分组和授权。

如果上游是另一台同样安装了本插件的 New API 网关，改用「New API（60）」类型的渠道，填写那台网关的地址和令牌，并在渠道里添加 Search1API 插件。

## 模型与接口

客户端使用 Search1API 自己的路径和 JSON 请求体调用网关，参数见 API 参考，例如 [Search](https://s1.dev/zh/docs/basic/search)。每个路径也可以加 `/search1api` 前缀访问，例如 `POST /search1api/search`。

| 接口 | 模型 | 用途 |
| --- | --- | --- |
| `POST /search` | `search1api-search` | 网页搜索，可同时读取排名靠前的结果页 |
| `POST /news` | `search1api-news` | 新闻搜索 |
| `POST /crawl` | `search1api-crawl` | 把网页读取为干净的文本 |
| `POST /ask` | `search1api-ask` | 搜索并回答问题，附带引用来源 |
| `POST /maps` | `search1api-maps` | Google 地图地点 |
| `POST /sitemap` | `search1api-sitemap` | 列出网站的链接 |
| `POST /trending` | `search1api-trending` | 平台上的热门话题 |
| `POST /extract` | `search1api-extract` | 按 JSON Schema 从网页提取结构化数据 |
| `POST /deepcrawl` | `search1api-deepcrawl` | 发起整站抓取 |

`/search`、`/news` 和 `/crawl` 也接受最多 50 个请求组成的 JSON 数组。整站抓取会返回任务 ID，轮询 `GET /deepcrawl/status/{task_id}` 直到 `status` 为 `completed`。

## 设置价格

每个模型只有一个用量字段 `credits`，即一次请求消耗的 Search1API 积分。在网关的模型定价里为每个模型设置每积分的价格，例如：

```text
tier("credits", u("credits") * 0.004)
```

表示每积分向你的用户收 0.004 美元，价格由你自己决定。

一次请求消耗的积分和直接调用 Search1API 时相同：

| 接口 | 积分 |
| --- | --- |
| `/search`、`/news` | 每个查询 1 积分，用 `crawl_results` 每读取一个结果页再加 1 |
| `/crawl` | 每个 URL 1 积分 |
| `/ask` | 5 |
| `/maps` | 每页 3 |
| `/extract` | 10 |
| `/deepcrawl` | 每次发起 20，查询状态不收费 |
| `/sitemap`、`/trending` | 1 |

详见[积分与限制](https://s1.dev/zh/docs/essentials/credits-and-limits)。网关会先按一次请求可能的最高费用预扣，再按 Search1API 实际扣除的积分结算，所以没读取成功的结果页不收费，失败的请求也不收费。经由上游 New API 网关时实际扣费不会回传，按预扣金额结算。

## 调用示例

```bash
curl https://your-gateway.example.com/search \
  -H "Authorization: Bearer sk-your-gateway-token" \
  -H "Content-Type: application/json" \
  -d '{"query": "latest AI chip export rules", "max_results": 5, "crawl_results": 2}'
```

返回的就是 Search1API 原本的响应，错误也保持 Search1API 的格式。

### SDK、CLI 与 MCP

官方 [SDK](https://s1.dev/zh/docs/integrations/sdks) 和 [MCP 服务器](https://s1.dev/zh/docs/integrations/mcp) 都可以经网关使用：把 base URL 设为 `https://your-gateway.example.com/search1api`，API Key 填网关令牌。本地 MCP 服务器用 `SEARCH1API_API_URL` 设置：

```bash
SEARCH1API_KEY="sk-your-gateway-token" \
SEARCH1API_API_URL="https://your-gateway.example.com/search1api" \
npx -y search1api-mcp
```

## 限制

- 请求体必须是 JSON。
- 插件不提供截图接口和[兼容接口](https://s1.dev/zh/docs/compatibility/overview)。
- 请求受网关超时限制。包含大量网页读取的大批量请求可能超过一分钟。