# Changelog

> Search1API's compatibility promise and a dated record of changes to the API, SDKs, CLI, and MCP server.

Canonical URL: https://s1.dev/docs/changelog

This page records changes across every developer surface: the HTTP API contract (endpoints, request and response fields, status codes, headers, billing semantics), the official SDKs, the CLI, and the MCP server. Each entry is tagged with the surface it affects. Product and dashboard updates live on the [product changelog](https://s1.dev/changelog).

## Current versions

| Surface | Package | Version | Released |
| --- | --- | --- | --- |
| TypeScript SDK | [`@search1api/client`](https://github.com/superagents-lab/search1api-js/releases) | 0.4.0 | 2026-10-12 |
| Vercel AI SDK tools | [`@search1api/ai-sdk`](https://github.com/superagents-lab/search1api-ai-sdk/releases) | 0.3.0 | 2026-10-12 |
| Python SDK | [`search1api`](https://github.com/superagents-lab/search1api-python/releases) | 0.4.0 | 2026-10-12 |
| CLI | [`search1api-cli`](https://github.com/superagents-lab/search1api-cli/releases) | 2.1.1 | 2026-10-27 |
| MCP server | [`search1api-mcp`](https://github.com/superagents-lab/search1api-mcp/releases) | 0.9.0 | 2026-10-26 |
| LangChain | [`search1api-langchain`](https://github.com/superagents-lab/search1api-langchain/releases) | 0.2.0 | 2026-10-12 |
| n8n | [`n8n-nodes-search1api`](https://github.com/superagents-lab/n8n-nodes-search1api/releases) | 0.2.0 | 2026-10-12 |
| DeepSeek Harness | [`dsh-s1`](https://github.com/superagents-lab/dsh-s1/releases) | 0.2.0 | 2026-10-12 |
| Hermes | [`hermes-search1api`](https://github.com/superagents-lab/hermes-search1api) | 0.2.0 | 2026-10-12 |
| OpenCode | [`opencode-search1api`](https://github.com/superagents-lab/opencode-search1api) | 0.2.0 | 2026-10-12 |
| OpenClaw | [`openclaw-search1api`](https://github.com/superagents-lab/openclaw-search1api) | 0.2.0 | 2026-10-12 |
| Magpie | [`@magpie-community/tools-search1api`](https://github.com/magpie-community/plugins/tree/main/packages/search1api) | 0.1.1 | 2026-10-27 |
| Grok Build | [`grok-search1api`](https://github.com/superagents-lab/grok-search1api) | 1.0.0 | 2026-08-04 |
| Factory Droid | [`droid-s1`](https://github.com/superagents-lab/droid-s1) | unversioned | 2026-08-16 |

The HTTP API has no version number. Changes are normally additive; explicit compatibility exceptions are recorded below.

## Compatibility promise

Search1API does not version its API URLs. The default compatibility rules are:

- **Additive changes ship without notice.** New endpoints, new optional request fields, new response fields, new enum values, and new response headers can appear at any time. Ignore response fields you do not recognize.
- **Unknown request fields are ignored.** Sending a field the API no longer reads does not fail the request.
- **Existing fields keep their name, type, and position.** The metadata correction dated 2026-10-12 below is a one-time exception for recently introduced engine-specific fields; the default rule remains that existing fields are not renamed, retyped, or moved.
- **Removals are announced here first.** When an endpoint or field has to go, this page and the [product changelog](https://s1.dev/changelog) announce it before the change ships. A removed endpoint keeps answering with `410 Gone` and a message that names its replacement.
- **Status codes are part of the contract.** A change in what a status code means (for example, a zero-result search moving from `404` to `200`) is recorded below with the date it shipped.

The machine-readable contract is the [OpenAPI document](https://api.search1api.com/openapi.json). The official [SDKs](https://s1.dev/docs/integrations/sdks), [CLI](https://s1.dev/docs/integrations/cli), and [MCP server](https://s1.dev/docs/integrations/mcp) are built on it and pick up additive changes on their next release; their own releases follow semantic versioning and are listed here alongside API changes.

> **info:** New request fields use `snake_case` (`max_results`, `crawl_results`, `timeout_ms`). A few older fields are `camelCase` (`enableFallback`, `taskId`, `zipUrl`) and stay that way; where it helps, the API accepts a `snake_case` alias alongside the original.

## Changes

Tags: **API** (HTTP contract), **SDK** (TypeScript and Python clients), **CLI** (`s1`), **MCP** (hosted and stdio server), **Integrations** (framework and agent plugins), **Docs**.

### 2026-10-30

- **Integrations**: Search1API is available as an [Antigravity](https://antigravity.google/) plugin. Install it with `agy plugin install https://github.com/superagents-lab/search1api-mcp/tree/main/antigravity-plugin` and sign in when the browser opens; no API key is needed. The plugin connects to the hosted MCP server and adds the `search1api` skill. See [Antigravity](https://s1.dev/docs/integrations/antigravity).

### 2026-10-29

- **API**: `POST /search` with `search_service: "youtube"` returns `published_date` again. YouTube began abbreviating upload ages ("2d ago"), and those results had no date.

### 2026-10-27

- **API**: Batch `/search`, `/news` and `/crawl` requests accept at most 50 items. A larger array returns `422` with "Batch requests can contain at most 50 items. Split larger workloads into several requests." and is not charged. There was no limit before, but batches of about 100 items could time out partway through. Items in a batch now run five at a time. The Exa-compatible `/contents` endpoint accepts at most 50 URLs, down from 100. See [Credits and limits](https://s1.dev/docs/essentials/credits-and-limits).
- **Integrations**: The Magpie plugin [`@magpie-community/tools-search1api`](https://github.com/magpie-community/plugins/tree/main/packages/search1api) **0.1.1** adds `send_feedback`, the same report tool as MCP 0.9.0 and CLI 2.1.0. It sends the report through [`POST /feedback`](https://s1.dev/docs/utility/feedback), is free, and links the report to the signed-in account or API key. OAuth sign-in now saves its client and reuses it, so signing in again no longer registers a new OAuth app each time. Requests from the plugin identify themselves as `search1api-magpie/<version>`.
- **CLI**: `search1api-cli` **2.1.1** adds `utm_source=search1api-cli` to the `s1 login` authorization URL so sign-ups from the CLI are attributed to it. No other changes. Upgrade with `s1 update`.

### 2026-10-26

- **MCP**: `search1api-mcp` **0.9.0** adds `send_feedback` to remote HTTP and local stdio. An agent can report a wrong, empty or incomplete result, an error it could not resolve, documentation that did not match behavior, or a missing capability. `message` is required (up to 4,000 characters); `intent`, `category` (`bug`, `feature_request`, `docs`, or `other`), `request_id`, and `model` are optional. Reports are free and spend no credits. When the server has a Search1API credential, the report is linked to that account; if the account lookup fails, the report is still sent without one. Do not include credentials or private data. The hosted server at `https://mcp.search1api.com/mcp` runs 0.9.0; reconnect or refresh tool discovery if `send_feedback` is missing. Upgrade local installations with `npm install -g search1api-mcp@latest`. See [MCP server](https://s1.dev/docs/integrations/mcp).
- **MCP**: 0.9.0 also advertises a one-line server description in `serverInfo`, declares each tool's idempotency and describes what it returns, and names the server Search1API for hosts that read the server name.
- **CLI**: `search1api-cli` **2.1.0** adds `s1 feedback "<message>"` for the same reports. Options are `--category`, `--intent`, `--request-id`, `--model`, and `--json` for a JSON receipt; pass `-` to read the message from stdin. When you are logged in, the report is linked to your account. Upgrade with `s1 update`. See [CLI](https://s1.dev/docs/integrations/cli).
- **Docs**: The [Feedback](https://s1.dev/docs/utility/feedback) page now points to the MCP tool and CLI command alongside `POST /feedback`. The earlier note that feedback is API-only no longer applies.

### 2026-10-25

- **Integrations**: Search1API tools are in the [Magpie](https://usemagpie.ai/) community plugin catalog as [`@magpie-community/tools-search1api`](https://github.com/magpie-community/plugins/tree/main/packages/search1api) 0.1.0. Add it from **Plugins → Add plugin** in Magpie or with `magpie plugin add @magpie-community/tools-search1api`, then sign in with OAuth or a Search1API API key. Magpie serves `search`, `news`, `ask`, `crawl`, `sitemap`, and `trending` to every agent connected to its tools MCP endpoint (`/mcp/magpie/tools`), prefixed with the plugin name. `ask` costs 5 credits per completed call; the other tools bill like the matching API endpoint. The source is maintained in the community repository; the earlier `magpie-search1api` npm package is not the install path.

### 2026-10-22

- **Website**: Add dedicated [SearXNG](https://s1.dev/compatible-apis/searxng), [Google CSE](https://s1.dev/compatible-apis/google-cse) and [Bing v7](https://s1.dev/compatible-apis/bing) migration guides in English, Chinese and Japanese. The compatible APIs page now links migration guidance separately from engine product pages and technical references.

- **API**: Add a [Google Custom Search JSON API compatibility endpoint](https://s1.dev/docs/compatibility/google) for first-page web search ahead of Google’s January 1, 2027 migration deadline. Keep supported `cse().list()` calls and `items` parsing by changing the endpoint and key. `cx` does not import Google configuration; pagination, image search and SafeSearch are explicitly unavailable. Requests share native auth, rate limits and search billing.

- **API**: Compatible endpoints answer the request and response formats of seven other search APIs under `https://api.search1api.com/compat/{api}`: SearXNG, Tavily (`/search`, `/extract`), Exa (`/search`, `/contents`), Firecrawl (`/v1` and `/v2` `/scrape` and `/search`), Jina Reader and Search, Bing Web Search v7 (web, news and image search) and Brave Search (web, news and image search). Existing clients switch by changing the base URL and using a Search1API key. Requests are billed and rate-limited as the equivalent `/search`, `/news` or `/crawl` request; reading page content during a search costs 1 credit per page. Unsupported options are ignored, and fields with no equivalent come back empty. See [Compatible APIs](https://s1.dev/docs/compatibility/overview).
- **Docs**: [Compatible APIs](https://s1.dev/docs/compatibility/overview) adds an overview and one page per API with client setup, parameter mapping, response differences, credits and error formats. The website has a [compatible APIs page](https://s1.dev/compatible-apis).

### 2026-10-14

- **MCP**: `search1api-mcp` **0.8.0** adds `render_results` to remote HTTP and local stdio. The model can display selected existing sources as interactive cards in MCP Apps clients; every client also receives structured JSON and a complete text list. Rendering and expanding sources do not repeat a search or consume search credits.
- **MCP**: Separate retrieval from presentation: `search`, `news`, and `ask` return data, and `render_results` displays it when a source list helps. The experimental `ui` URL parameter is removed. The standard endpoint stays `https://mcp.search1api.com/mcp`.
- **MCP**: Bundle the card UI in the npm package, correct sandbox metadata for Claude and ChatGPT, and advertise the square logo through `serverInfo.icons`. Upgrade local installations with `npm install -g search1api-mcp@latest` or configure `npx -y search1api-mcp@latest`, then restart the MCP connection. See the [MCP guide](https://s1.dev/docs/integrations/mcp).
- **Docs**: Update the MCP landing pages and integration guide with transport parity, source-card parameters, readable fallbacks and upgrade instructions. Public-directory tool availability remains subject to each host's review.

### 2026-10-12

- **Integrations**: LangChain, n8n, DeepSeek Harness, Hermes, OpenCode, and OpenClaw release **0.2.0**. All six expose query-only agentic search (five credits, 45-second timeout), all 19 search engines and six news sources, `week`, and search pagination. DSH enables `s1_ask` by default; LangChain adds `search1api_ask` to its toolkit; n8n adds Agentic Search.
- **Integrations - result fields**: Search/news preserve optional per-result `metadata` and top-level `published_date`; agentic search preserves `intent`, result `source`/`relevance`, and optional `errors`. DSH retains its `link` to `url` mapping. LangChain/Hermes use Python SDK 0.4.0, DSH uses TypeScript SDK 0.4.0, and OpenCode/OpenClaw use CLI 2.0.0.

- **API - breaking response correction**: Engine-specific fields move into each result's optional `metadata` object. For `POST /search` with `search_service: "github"`, read `metadata.kind`, `metadata.stars`, `metadata.language`, and `metadata.num_comments`. For `POST /news` with `search_service: "hackernews"`, read `metadata.story_url`, `metadata.points`, and `metadata.num_comments`. The old top-level fields are removed directly, with no duplicate aliases or deprecation period. This is an explicit exception to the usual field-position compatibility promise for the recently introduced fields. Update any code that reads the old paths before switching to the new response.
- `title`, `link`, `snippet`, optional `content` and `published_date` stay at the result top level; `searchParameters` stays at the response top level. `metadata` is omitted when no engine-specific fields apply. Numeric zeros are retained; unavailable fields and empty article URLs are omitted. `/ask` and `/trending` are unchanged.
- **Clients**: TypeScript SDK 0.4.0, Python SDK 0.4.0 and CLI 2.0.0 types expose engine-specific fields through `metadata`. MCP server 0.7.1 reads the new API object while preserving its existing tool output structure. AI SDK tools 0.3.0 depend on `@search1api/client` ^0.4.0 and preserve nested result metadata.

## 2026-10-10

- **API**: `search_service: "grokipedia"` added to `POST /search`. It searches Grokipedia, xAI's English-language encyclopedia, and returns entry titles, links and opening text. `page` is supported; `language` and `time_range` are ignored, and results carry no `published_date`.
- **SDK**: `@search1api/client` 0.3.0 and `search1api` (Python) 0.3.0 add `ask()` for [`POST /ask`](https://s1.dev/docs/basic/ask) and `feedback()` for [`POST /feedback`](https://s1.dev/docs/utility/feedback). `ask()` defaults to a 45-second timeout; `feedback()` is never retried automatically. Search adds the `bingcn`, `yandex`, and `grokipedia` engines and `page`, `sogou` is removed from the engine types, and result types include `published_date`, the `github` fields `kind`, `stars`, `language`, and `num_comments`, and the `hackernews` news fields `story_url`, `points`, and `num_comments`. See [Official SDKs](https://s1.dev/docs/integrations/sdks).
- **CLI**: `search1api-cli` 1.5.0 adds `s1 ask`. `s1 search` adds the `bingcn`, `yandex`, and `grokipedia` engines and `-p/--page`; `s1 search` and `s1 news` accept `-t week`, and formatted output shows `published_date`. The bundled Agent Skill explains when to use `search` and when to use `ask`. See [CLI](https://s1.dev/docs/integrations/cli).
- **MCP**: `search1api-mcp` 0.7.0 adds an `ask` tool. `search` adds the `bingcn`, `yandex`, and `grokipedia` engines and `page`; `search` and `news` accept `time_range: "week"`, and results pass `published_date` and the GitHub and Hacker News fields through in `metadata`. The hosted server at `https://mcp.search1api.com/mcp` runs 0.7.0. Feedback stays API-only. See [MCP server](https://s1.dev/docs/integrations/mcp).
- **Integrations**: `@search1api/ai-sdk` 0.2.0 adds an `ask` tool for [`POST /ask`](https://s1.dev/docs/basic/ask). Like the MCP server's `ask` tool, it is included in `search1apiTools()` by default; each call costs 5 credits, and `only: ['search', 'news', 'crawl']` keeps the previous tool set. `search1apiAsk()` creates it on its own. `search` adds the `bingcn`, `yandex`, and `grokipedia` engines and `page`, and `search` and `news` accept `time_range: "week"`. The package now depends on `@search1api/client` 0.3.0. See the [AI SDK guide](https://s1.dev/docs/integrations/vercel-ai-sdk).
- **Docs**: [Improving search results](https://s1.dev/docs/guides/improving-search-results) covers `grokipedia`: what results contain, `page` support, and the xAI attribution and license terms for showing Grokipedia content. The website has a [Grokipedia Search API page](https://s1.dev/grokipedia-search-api).
- **Docs**: [Ask](https://s1.dev/docs/basic/ask), [Official SDKs](https://s1.dev/docs/integrations/sdks), [CLI](https://s1.dev/docs/integrations/cli), and [MCP server](https://s1.dev/docs/integrations/mcp) cover the new SDK methods, command, and tool.

### 2026-10-08

- **API**: `POST /feedback` added. Agents and applications can report a Search1API problem, a missing capability, or confusing documentation. `message` is required; `intent`, `category` (`bug`, `feature_request`, `docs`, or `other`), `request_id`, and `agent` (`name`, `model`) are optional, and unknown fields are rejected. A stored report returns `201` with `{ "id": "fb_...", "status": "new" }`. Feedback is free, works on accounts with no remaining credits, and takes an API key or OAuth token but not pay-per-request payment. It is limited to 10 submissions per account per minute at each Cloudflare location. Requests carry no idempotency key, so do not retry a report automatically. The endpoint is API-only: the MCP server and CLI do not add a tool or command for it.
- **Integrations**: `@search1api/ai-sdk` 0.1.2 lets the model choose search parameters, matching the MCP server: `search_service`, `max_results`, `include_sites`, `exclude_sites`, and `time_range` on `search` and `news`. Settings passed in code become defaults. Result page crawling stays under application control, unknown model arguments are ignored instead of failing the call, and search and news now default to ten results. See the [AI SDK guide](https://s1.dev/docs/integrations/vercel-ai-sdk).
- **Integrations**: Published `@search1api/ai-sdk` 0.1.1, the official Search1API tools package for Vercel AI SDK. It exposes `search`, `news`, and `crawl` through `search1apiTools()` or individual tool factories for `generateText` and `streamText`. Configure your Search1API API key on the server and your model provider's credentials separately. See the [AI SDK guide](https://s1.dev/docs/integrations/vercel-ai-sdk) and [Next.js example](https://github.com/superagents-lab/search1api-ai-sdk/tree/main/examples/nextjs).
- **Docs**: Added a [Vercel guide](https://s1.dev/docs/integrations/vercel) comparing AI SDK tools with [Vercel Connect](https://vercel.com/connect/search1api). It covers connector setup and requesting a user's Search1API credentials with `@vercel/connect`. The website now has one [Vercel integration page](https://s1.dev/integrations/vercel), linked from the integration directory, navigation, and footer.
- **Docs**: Added a [Feedback](https://s1.dev/docs/utility/feedback) reference page covering the request fields, status codes, and what not to include in a report.

### 2026-10-07

- **API**: `POST /search` without `search_service` now searches Google, exactly as if `"search_service": "google"` were sent. It previously ran a mix of engines and merged their rankings. Request and response shapes are unchanged. `POST /news` is unchanged.
- **API**: `POST /ask` now takes only `query`. The `sources`, `time_range`, and `max_results` request fields were removed: the decision model always chooses the engines and the time window, and a response holds at most 10 results. Requests that still send these fields are accepted and the fields are ignored. To choose the engine and window yourself, use `POST /search`. This change shipped one day after `/ask` launched, without the advance notice described above.

### 2026-10-06

- **API**: `POST /ask` added. Send a natural-language `query`; TypeSafe's Jev model detects intent and routes it to up to five engines, applies a `day`, `week`, `month`, or `year` window when the query mentions a time, searches the engines in parallel, and reranks results by Jev relevance score, dropping those below 0.5 and merging duplicates across engines. `sources` and `time_range` override either decision, `max_results` caps the result count (default 10, maximum 20), and `intent` reports the keywords, engines, and window that were used. Engines that fail while others complete are listed in `errors`. A completed request costs a flat 5 credits; when no engine completes the API returns `502` and the request is not charged. `/ask` requires an API key, is limited to 30 requests per minute per account, and is not available through x402 or MPP. The SDKs, CLI, and MCP server do not include it yet.
- **Docs**: Added an [Ask](https://s1.dev/docs/basic/ask) reference page, and covered `/ask` in [Choosing an endpoint](https://s1.dev/docs/guides/choosing-an-endpoint) and [Credits and limits](https://s1.dev/docs/essentials/credits-and-limits).

### 2026-10-03

- **Integrations**: Search1API is available in Claude as a [connector](https://claude.ai/directory/search1api) and a [plugin](https://claude.ai/customize/plugins/id/c73feffb-aae4-49f4-8515-24322b313989%40anthropic-plugin-directory). Both connect to the same hosted MCP server and expose `search`, `news`, `crawl`, `sitemap`, and `trending`. The plugin also bundles a Search1API Agent Skill to guide tool selection and answers with source links. Both authenticate through OAuth and use your Search1API account credits.
- **Docs**: Added a [Claude guide](https://s1.dev/docs/integrations/claude) with connector and plugin installation steps. Updated the [MCP server](https://s1.dev/docs/integrations/mcp) and [Agent Skills](https://s1.dev/docs/integrations/skills) guides to distinguish the published Claude integrations from manual MCP configuration and the standalone Agent Skill + CLI setup.

### 2026-09-19

- **Integrations**: `hermes-search1api` 0.1.0 is listed in the official [Hermes plugin catalog](https://hermes-agent.nousresearch.com/docs/plugins/search1api) ([NousResearch/hermes-agent#115529](https://github.com/NousResearch/hermes-agent/pull/115529)), pinned at `14c86174`. Install it by name with `hermes plugins install search1api --enable`. Hermes Agent v0.21.4 (v2026.9.21) is the first release that ships the entry; v0.21.2 and later also resolve it from the live catalog.
- **API**: `search_service: "yandex"` added to `POST /search`. Results include `published_date` (UTC timestamp) when `time_range` is set; without `time_range` the field is omitted. `page` is not supported — native SERP pagination remains limited to `bing`, `bingcn`, and `baidu`.

### 2026-09-18

- **API**: `POST /search` with `search_service: "github"` now returns issues, pull requests and discussions alongside repositories. Each result carries `kind` (`repo`, `issue`, `pr` or `discussion`); repositories also carry `stars` and `language`, threads carry `num_comments`. `time_range` filters by creation date (it previously filtered by last push, so "this week" returned years-old repositories). Results are ordered by how many query terms the title or description contains, then by stars; a page is no longer all one kind when another kind also matched. Queries with a type-specific qualifier (`is:issue`, `stars:>100`, ...) search only that type. Discussions require the service's GitHub token; without one, repositories and issues/PRs are still returned.
- **API**: `POST /news` with `search_service: "hackernews"` now links to the Hacker News discussion thread (`news.ycombinator.com/item?id=...`) instead of the submitted article, and adds `story_url` (the article; empty for Ask/Show HN text posts), `points` and `num_comments`. Multi-word queries match any of the words instead of requiring all of them, ranked by how many words the story matches and then by points; snippets no longer contain HTML entities or tags.
- **API**: `POST /search` with `search_service: "reddit"` re-orders each page so posts whose title or subreddit carries the query terms come first. Reddit's own selection is kept; only the order within the page changes, and a larger page is fetched for multi-word queries so the cut to `max_results` keeps on-topic posts.
- **API**: `POST /search` and `POST /news` results carry `published_date` (ISO 8601) when the source exposes one. See [Narrow by time or language](https://s1.dev/docs/guides/improving-search-results#narrow-by-time-or-language).
- **API**: `POST /search` with `search_service: "x"` now honors `time_range` and `language`. Both were accepted and silently ignored before. `page` remains unsupported for `x`.

### 2026-09-17

- **Integrations**: `hermes-search1api` 0.1.0 published for Hermes Agent. It registers `search1api_search`, `search1api_news`, `search1api_crawl`, `search1api_sitemap`, and `search1api_trending` as native Hermes tools, plus a bundled `plugin:search1api` skill. Install with `hermes plugins install superagents-lab/hermes-search1api --enable`.
- **API**: All error responses are JSON. Every error now carries `ok: false`, an `error` label, and a `message`. `POST /crawl` dead-link `404`/`410` responses previously returned plain text.
- **API**: `GET /deepcrawl/status/{taskId}` returns `404` for an unknown task instead of `500` with an internal error message.
- **API**: `POST /sitemap` `400` responses name the invalid field instead of a generic message.
- **API**: `POST /crawl` accepts `enable_fallback` as an alias of `enableFallback`. Both spellings behave the same; `enableFallback` remains in the OpenAPI document.

### 2026-09-13

- **API**: `search_service: "sogou"` removed from `POST /search`. Requests that send it now fail validation with `422`; omit the field to let the API choose an engine.

### 2026-09-12

- **API**: `page` added to `POST /search` for native SERP pagination on engines that support it (`bing`, `bingcn`, `baidu`). Other engines ignore it.

### 2026-09-11

- **API**: `search_service: "bingcn"` added to `POST /search`.

### 2026-09-03

- **MCP**: `search1api-mcp` 0.6.1 restores authentication on every `/mcp` request. 0.6.0 had let discovery methods through anonymously, which stopped many clients from ever starting OAuth: they treat the first `401` plus `WWW-Authenticate` as the signal to authorize. Unauthenticated requests, including `initialize` and `tools/list`, get that challenge again. [Release notes](https://github.com/superagents-lab/search1api-mcp/releases/tag/v0.6.1).

### 2026-08-26

- **MCP**: `search1api-mcp` 0.6.0 let `initialize`, `ping`, `server/discover`, `tools/list`, `prompts/list`, `resources/list`, and `resources/read` run without a credential so registry checkers could enumerate tools. Reverted in 0.6.1 (above).

### 2026-08-25

- **API**: `POST /sitemap` with `type: "sitemap"` now reads the site's sitemap files instead of crawling links from the homepage.
- **CLI**: `search1api-cli` 1.4.0 adds `s1 learn`, which turns a URL (or a documentation site with `--site`) into an installable Agent Skill. The CLI no longer prints its own billing estimate.

### 2026-08-21

- **API**: `POST /crawl` dead links are billed as completed answers. When the target server itself returns `404` or `410`, the API passes that status through with a message, and the request costs 1 credit, the same as a confirmed zero-result search. Service failures still return `502` and are not charged.
- **API**: `POST /crawl` passes through upstream `400` reasons (for example, an unsupported URL scheme) instead of reporting `502`.

### 2026-08-19

- **SDK**: `@search1api/client` 0.2.1 and `search1api` (Python) 0.2.1 resync their vendored OpenAPI snapshot with the live contract: `404` is dropped from `POST /search` and `POST /news`, `403` is added to `POST /screenshot`, request-body types are regenerated, and every operation now carries its description. Package homepages point to `s1.dev`.
- **CLI**: `search1api-cli` 1.3.1 adds a Codex plugin marketplace catalog and moves published URLs to `s1.dev`.
- **MCP**: `search1api-mcp` 0.5.4 serves a server card at `/.well-known/mcp/server-card.json`, generated from the tool list, so agents can discover tools before authenticating. OAuth `resource_documentation` and other metadata now point to `s1.dev`.

### 2026-08-16

- **Integrations**: `droid-s1` plugin for Factory Droid published, giving Droid search, news, crawl, sitemap, and trending through the hosted MCP server.

### 2026-08-14

- **Integrations**: `dsh-s1` 0.1.0 published for the DeepSeek Harness: `s1_search`, `s1_news`, `s1_crawl`, `s1_sitemap`, and `s1_trending` as native tools, with a bundled `s1` skill. Install with `dsh plugin --profile web add dsh-s1`.

### 2026-08-11

- **API**: Zero-result searches return `200`. `POST /search` and `POST /news` respond with `200` and an empty `results` array when the engines confirm there are no matches, and the request is charged. They previously returned `404`. Searches that could not complete now return `502` and are not charged.
- **MCP**: The OAuth authorization server for the hosted MCP server and the REST API moved to `https://clerk.s1.dev`. Clients that follow `/.well-known/oauth-protected-resource` pick this up automatically.

### 2026-08-10

- **Docs**: The public site moved from `www.search1api.com` to `s1.dev`; documentation lives at `s1.dev/docs`. The API host `api.search1api.com` and the hosted MCP host `mcp.search1api.com` did not change.

### 2026-08-06

- **Integrations**: `n8n-nodes-search1api` passed n8n's review and is listed in the official community node catalog.

### 2026-08-04

- **CLI**: `search1api-cli` 1.3.0 packages the CLI as a Claude plugin, an OpenAI plugin, and a Cursor Marketplace plugin, adds a Claude plugin marketplace catalog, and exposes the reusable client it is built on.
- **Integrations**: `opencode-search1api` 0.1.1 (OpenCode), `openclaw-search1api` 0.1.x (OpenClaw, via ClawHub), and `grok-search1api` 1.0.0 (Grok Build) published, each exposing search, news, crawl, sitemap, and trending as tools.

### 2026-08-03

- **API**: `x-search1api-request-id` response header added on paid endpoints. Quote it when contacting support.

### 2026-08-02

- **MCP**: `search1api-mcp` 0.5.3 removes OIDC session scopes (`openid`, `profile`, `email`) from the OAuth resource metadata; they are not resource permissions and made Smithery's authorization fail with `invalid_scope`.

### 2026-07-31

- **Integrations**: `n8n-nodes-search1api` 0.1.3 fixes the node identifier used by Codex to its fully qualified form.

### 2026-07-30

- **MCP**: `search1api-mcp` 0.5.2 validates the `Origin` header on `/mcp` before parsing or authentication and answers `403` for untrusted browser origins. Self-hosted deployments can allow browser clients with `MCP_ALLOWED_ORIGINS`. Server-side clients without an `Origin` header are unaffected.

### 2026-07-29

- **MCP**: `search1api-mcp` 0.5.0 and 0.5.1 implement MCP revision 2026-07-28. Remote HTTP is stateless: no `Mcp-Session-Id`, no sticky routing; every request carries its protocol version and client capabilities in `_meta`, and `server/discover` reports supported versions and capabilities. Clients on the 2025 revisions keep working over HTTP and stdio. Credentials are validated on every HTTP exchange, and the `Host` header is checked against DNS rebinding.
- **MCP**: The redundant `fetch` tool was removed. The public tools are `search`, `news`, `crawl`, `sitemap`, and `trending`; use `crawl` where you used `fetch`.
- **Integrations**: `search1api-langchain` 0.1.0 published on PyPI: `Search1APISearch`, `Search1APINews`, and `Search1APICrawl` tools plus `Search1APIToolkit`, with sync and async invocation over the official Python SDK.

### 2026-07-28

- **MCP**: `search1api-mcp` 0.4.0 prepares the server for public registries (Official MCP Registry, LobeHub) with registry manifests and structured tool outputs.
- **Integrations**: `n8n-nodes-search1api` 0.1.1, the first release of the n8n community node: search, news, crawl, sitemap, and trending as workflow nodes and as an n8n AI tool.

### 2026-07-25

- **API**: `POST /screenshot` launched. Returns PNG, JPEG, or WebP bytes on success and JSON errors otherwise; supports full-page, viewport, and element captures with readiness, viewport, dark-mode, animation, and timeout controls. 2 credits per success, failed requests are not charged, with a separate limit of 10 requests per minute per account.
- **SDK**: `@search1api/client` 0.2.0 and `search1api` (Python) 0.2.0 add `client.screenshot()`, returning binary image data with the content type and request ID.

### 2026-07-22

- **API**: OAuth 2.1 access tokens (Authorization Code with PKCE, Dynamic Client Registration, refresh tokens, revocation) accepted as bearer credentials alongside API keys, on the same account, credits, rate limits, and usage reporting. Discovery metadata is served at `/.well-known/oauth-protected-resource`.
- **API**: OpenAPI document published at `https://api.search1api.com/openapi.json`.
- **SDK**: `@search1api/client` 0.1.0 (ESM and CommonJS, generated types) and `search1api` (Python) 0.1.0 (sync and async clients, type hints) are the first official SDKs, covering the whole public contract with structured errors, configurable timeouts, safe retries, batch operations, and deepcrawl polling helpers.
- **CLI**: `search1api-cli` 1.2.2 and 1.2.3: `s1 login` runs the full OAuth public-client flow and refreshes expired access tokens automatically; retired commands were removed; npm releases are automated.
- **MCP**: `search1api-mcp` 0.3.1 adds OAuth to the hosted server at `https://mcp.search1api.com/mcp`, alongside API keys.

### 2026-07-16

- **API**: User-supplied proxy fields removed from `POST /search` and `POST /crawl`. The fields are now ignored; traffic always exits through Search1API's own pool.

### 2026-07-15

- **Docs**: Documentation rebuilt on Fumadocs and reorganized into Get Started, Essentials, Guides, Integrations, and API Reference, with explicit error and billing behavior for each endpoint.

### 2026-06-09

- **API**: `POST /v1/chat/completions` and `GET /v1/models` discontinued. Both answer `410 Gone`. Use `POST /search` with `crawl_results` to ground your own model instead.

### 2026-06-03

- **CLI**: `search1api-cli` 1.2.1 adds `s1 update` for self-updating the standalone binary.

### 2026-04-02

- **CLI**: `search1api-cli` 1.2.0 adds a browser-based login flow.

### 2026-03-31

- **CLI**: `search1api-cli` 1.1.3 ships standalone binaries for macOS (Apple Silicon and Intel), Linux (x64 and arm64), and Windows (x64), installable without Node.js via `curl -fsSL https://cli.search1api.com/install.sh | bash`.

### 2026-03-13

- **CLI**: `search1api-cli` 1.0.0 through 1.1.2, the first releases of `s1`: search, news, crawl, sitemap, and trending from the terminal, an update notifier, and a bundled Claude Code skill. The Search1API Agent Skill moved from the MCP repository to the CLI repository.

### 2026-02-28

- **MCP**: `search1api-mcp` 0.3.0 adds the hosted Remote MCP server over Streamable HTTP at `https://mcp.search1api.com/mcp`, plus a start script for container deployments. The stdio package continues to work.

### 2025-10-16

- **API**: `search_service: "google"` added to `POST /search`. Bing pagination and English-language result handling improved.

### 2025-08-28

- **API**: `max_results` on `POST /search` and `POST /news` raised from 10 to 50.

### 2025-05-05

- **API**: `POST /extract` (beta) launched: structured extraction from a page using a natural-language prompt and an optional JSON Schema, 10 credits per request.
- **API**: `POST /deepcrawl` (beta) launched: asynchronous whole-site crawling in `sitemap` or `all` mode, 20 credits to start a task; `GET /deepcrawl/status/{taskId}` is free.
- **API**: `search_service` values `baidu`, `quark`, and `360` added to `POST /search`; `reuters` added to `POST /news`.

### 2025-04-14

- **API**: `POST /crawl` returns post text, images, and video comments for RedNote (Xiaohongshu) URLs.

### 2025-04-08

- **API**: Keyless free tier introduced: most endpoints could be called without an API key under an IP-based limit (5 requests per minute, 20 per day); free API keys got 200 requests per minute and 100 credits. Keyless access has since been replaced by pay-per-request payment challenges; see [Authentication](https://s1.dev/docs/essentials/authentication).

### 2025-04-05

- **MCP**: `search1api-mcp` 0.2.0 reads `SEARCH1API_KEY` from the environment first and falls back to a project `.env`, with LibreChat and Docker setup documented. Community contribution.

### 2025-04-01

- **API**: `POST /crawl` returns subtitles and interaction data (likes, views) for YouTube URLs, and full comment threads with sub-comments and vote counts for Reddit URLs.

### 2025-03-28

- **API**: `search_service` values `x` and `reddit` added to `POST /search`.
- **MCP**: `search1api-mcp` 0.1.8 exposes the X and Reddit engines.

### 2025-03-21

- **API**: `POST /trending` launched with GitHub Trending and Hacker News rankings.
- **MCP**: `search1api-mcp` 0.1.7 adds the `trending` tool.

### 2025-03-20

- **API**: `search_service: "wikipedia"` added to `POST /search`.
- **MCP**: `search1api-mcp` 0.1.6 exposes the Wikipedia engine.

### 2025-03-18

- **MCP**: `search1api-mcp` 0.1.5 adds `include_sites`, `exclude_sites`, and `time_range` to the search tool and exposes the engines added in March.

### 2025-03-17

- **API**: `search_service: "wechat"` added to `POST /search`.

### 2025-03-16

- **API**: `search_service` values `yahoo`, `youtube`, `github`, `arxiv`, `bilibili`, and `imdb` added to `POST /search`; `yahoo` and `hackernews` added to `POST /news`.

### 2025-02-28

- **API**: `time_range` and `language` added to `POST /search` and `POST /news`. The `hl` and `gl` parameters were removed in favor of `language`.

### 2025-02-27

- **API**: `include_sites` and `exclude_sites` added to `POST /search` and `POST /news`.
- **API**: Fixed one-time credit packages expiring together with a subscription.

### 2025-02-21

- **MCP**: `search1api-mcp` 0.1.4 adds a `reasoning` tool backed by DeepSeek R1 with web search (discontinued with the reasoning API in 2026), plus Cursor and Windsurf configuration guides.

### 2025-02-17

- **API**: Reasoning search launched at `POST /v1/chat/completions` with DeepSeek R1 grounded by web search. Discontinued on 2026-06-09.

### 2025-02-08

- **API**: Default search language changed to English, improving result quality for unspecified-language queries.

### 2025-01-12

- **API**: Billing changed to per-outcome: credits are deducted for each successful search and each successful crawl; failed crawls are no longer charged.

### 2024-12-05

- **MCP**: `search1api-mcp` 0.1.3 adds the `news` tool.

### 2024-11-29

- **MCP**: `search1api-mcp` 0.1.2 adds the `sitemap` tool.

### 2024-11-26

- **MCP**: `search1api-mcp` 0.1.0 and 0.1.1, the first Search1API MCP server, with `search` and `crawl` tools over stdio.

### 2024-04-29

- **API**: Search1API launched with `POST /search`, `POST /crawl`, and the first public documentation.