# Models

Every request to CKEditor AI names a model. Use `agent-1` and the service picks the model for you, or name one of the models below to make the choice yourself.

This page lists the model ids available on SaaS, the capabilities each model supports, and the response of the models endpoint.

<a id="models-on-saas">

## Models on SaaS

We evaluate every model on this list on common editor tasks before we offer it.

> **Note**
>
> This table is a snapshot and changes over time. For the models your environment offers, and for the models your token allows, call `GET /v1/models/{compatibilityVersion}`, described under [The models endpoint](#the-models-endpoint). Do not hard-code the table into your application.

| Model ID            | Name              | Provider  | Web Search | Reasoning | Removal date |
| ------------------- | ----------------- | --------- | ---------- | --------- | ------------ |
| `agent-1`           | Agent             | Agent     | Yes        | Yes       | -            |
| `gpt-5`             | GPT-5             | OpenAI    | Yes        | Yes       | -            |
| `gpt-5.1`           | GPT-5.1           | OpenAI    | Yes        | Yes       | 1 Apr 2027   |
| `gpt-5.2`           | GPT-5.2           | OpenAI    | Yes        | Yes       | -            |
| `gpt-5.4`           | GPT-5.4           | OpenAI    | Yes        | Yes       | -            |
| `gpt-5.5`           | GPT-5.5           | OpenAI    | Yes        | Yes       | -            |
| `gpt-5.6-sol`       | GPT-5.6 Sol       | OpenAI    | Yes        | Yes       | -            |
| `gpt-5.6-terra`     | GPT-5.6 Terra     | OpenAI    | Yes        | Yes       | -            |
| `gpt-5.6-luna`      | GPT-5.6 Luna      | OpenAI    | Yes        | Yes       | -            |
| `gpt-6-astra`       | GPT-6 Astra       | OpenAI    | Yes        | Yes       | -            |
| `gpt-6-sol`         | GPT-6 Sol         | OpenAI    | Yes        | Yes       | -            |
| `gpt-6-luna`        | GPT-6 Luna        | OpenAI    | Yes        | Yes       | -            |
| `gpt-5.4-mini`      | GPT-5.4 Mini      | OpenAI    | Yes        | Yes       | -            |
| `gpt-4.1`           | GPT-4.1           | OpenAI    | Yes        | No        | -            |
| `gpt-5-mini`        | GPT-5 Mini        | OpenAI    | Yes        | Yes       | -            |
| `gpt-4.1-mini`      | GPT-4.1 Mini      | OpenAI    | Yes        | No        | -            |
| `claude-4-5-sonnet` | Claude 4.5 Sonnet | Anthropic | Yes        | Yes       | 30 Oct 2026  |
| `claude-4-6-sonnet` | Claude 4.6 Sonnet | Anthropic | Yes        | Yes       | -            |
| `claude-5-sonnet`   | Claude 5 Sonnet   | Anthropic | Yes        | Yes       | -            |
| `claude-opus-4-7`   | Claude Opus 4.7   | Anthropic | Yes        | Yes       | -            |
| `claude-opus-4-8`   | Claude Opus 4.8   | Anthropic | Yes        | Yes       | -            |
| `claude-opus-5`     | Claude Opus 5     | Anthropic | Yes        | Yes       | -            |
| `claude-fable-5`    | Claude Fable 5    | Anthropic | Yes        | Yes       | -            |
| `claude-fable-5.1`  | Claude Fable 5.1  | Anthropic | Yes        | Yes       | -            |
| `claude-4-5-haiku`  | Claude 4.5 Haiku  | Anthropic | Yes        | Yes       | -            |
| `gemini-3-1-pro`    | Gemini 3.1 Pro    | Google    | Yes        | Yes       | -            |
| `gemini-2-5-flash`  | Gemini 2.5 Flash  | Google    | Yes        | Yes       | -            |
| `gemini-3-flash`    | Gemini 3 Flash    | Google    | Yes        | Yes       | -            |
| `gemini-3-5-flash`  | Gemini 3.5 Flash  | Google    | Yes        | Yes       | -            |
| `gemini-3-6-flash`  | Gemini 3.6 Flash  | Google    | Yes        | Yes       | -            |
| `gemini-3-7-flash`  | Gemini 3.7 Flash  | Google    | Yes        | Yes       | -            |
| `gemini-3-8-flash`  | Gemini 3.8 Flash  | Google    | Yes        | Yes       | -            |

> **Warning**
>
> Models with a removal date are removed after that date, and requests that use them fail. If your configuration names such a model, switch to another model before then. If you use `agent-1`, you do not need to do anything, as the models behind it are updated for you. [Learn more about model deprecation](#model-deprecation).

Every model supports conversations, reviews, and actions. The `limits` object of each model in the models response gives its limits for context length, file count, file size, and PDF page count.

<a id="the-agent-model">

## The Agent model

`Agent` is a model we maintain. We evaluate models on common editor tasks and pick the one `Agent` runs on. When a better model becomes available, we move `Agent` to it, and your requests stay the same. If that model is unavailable, `Agent` falls back to the next one on its list.

The id of `Agent` depends on the compatibility version. In version `1` the id is `agent-1`. Grant `ai:models:agent` on the token to use it. We recommend `Agent` unless you need a specific model.

<a id="model-capabilities">

## Model capabilities

Web search and reasoning are optional capabilities, and the table above shows the models that support each one. In the models response, the `capabilities` object of each model states whether the model supports the capability (`enabled`) and whether your token may use it (`allowed`). To switch one on for a request, see [Attachments and capabilities](conversations.md#attachments-and-capabilities).

<a id="web-search">

### Web search

The model reads current information from the web and uses it in the reply. The response returns the pages the model used as sources. A request that uses web search takes longer to answer.

<a id="reasoning">

### Reasoning

The model works through a request before it answers, which helps with complex questions. The reasoning text itself never comes back through the API. On-premises, the observability traces record it when AI spans are on. See [Recording AI spans](../../onpremises/ckeditor-ai-onpremises/observability.md#recording-ai-spans).

Some models reason on every request, and you cannot turn it off through the API.

Reading web pages attached to a conversation does not depend on the model. It needs the `ai:conversations:context:urls` permission.

<a id="the-models-endpoint">

## The models endpoint

`GET /v1/models/{compatibilityVersion}` returns the models your integration can use. A compatibility version is a fixed set of models. We keep older versions available and add new models to newer versions only, so you upgrade when you choose to. There is one compatibility version so far, `1`. It contains every model on this page.

<a id="model-information">

### Model information

To list the models in compatibility version `1`, send this request:

```http
GET /v1/models/1
Authorization: Bearer <your-token>
```

Response:

```json
{
  "items": [
	{
	  "id": "agent-1",
	  "name": "Agent",
	  "provider": "Agent",
	  "description": "Automatically selects the best model for speed, quality, and cost",
	  "allowed": true,
	  "capabilities": {
		"webSearch": {
		  "enabled": true,
		  "allowed": true
		},
		"reasoning": {
		  "enabled": true,
		  "allowed": true
		}
	  },
	  "limits": {
		"maxPromptLength": 30000,
		"maxConversationLength": 256000,
		"maxFiles": 100,
		"maxFileSize": 7000000,
		"maxTotalFileSize": 30000000,
		"maxTotalPdfFilePages": 100
	  }
	}
  ]
}
```

<a id="descriptions-in-other-languages">

### Descriptions in other languages

Every model has a `description`, a one-sentence summary you can show next to the model name. To get the description in one of the supported languages, pass the `languageCode` parameter:

```http
GET /v1/models/1?languageCode=pl
Authorization: Bearer <your-token>
```

The `languageCode` parameter takes a BCP-47 code. The default is `en`. Supported codes:

`ar`, `bg`, `bn`, `ca`, `cs`, `da`, `de`, `el`, `es`, `et`, `fa`, `fi`, `fr`, `he`, `hi`, `hr`, `hu`, `id`, `it`, `ja`, `ko`, `lt`, `lv`, `ms`, `nl`, `no`, `pl`, `pt`, `pt-BR`, `ro`, `ru`, `sk`, `sl`, `sr`, `sv`, `th`, `tr`, `uk`, `vi`, `zh`, `zh-TW`

Only the `description` is translated. The `id`, `name`, and `provider` are the same in every language.

<a id="model-deprecation">

### Model deprecation

A model we plan to remove has a `removal` field with an ISO 8601 date, for example `"removal": "2025-11-17T00:00:00.000Z"`. After that date, the models endpoint stops returning the model, and requests that name it fail with the error code `model-not-found`.

Read the `removal` field when your application starts, and move to another model before the date. If you use `agent-1`, you have nothing to do: we change the models behind `Agent` for you.

<a id="next-steps">

## Next steps

* **[Models section of the API reference](https://ai.cke-cs.com/v1/docs#tag/Models)** documents the models endpoints with their full request and response schemas.
* **[Permissions](permissions.md)** lists the `ai:models:*` scopes that decide which models a token may use.
* **[Attachments and capabilities](conversations.md#attachments-and-capabilities)** on the Conversations page shows how a message request switches on web search and reasoning.
* **[REST API](rest-api.md)** covers rate limits, file limits, and error codes.

---

Full index of the Cloud Services documentation: [llms.txt](../../../llms.txt)
