# Release 2026.10.30

> API changes

Source: https://docs.serenityedge.ai/release-notes/2026-10-30/
Published: 2026-10-30

October 30, 2026

## API changes

### Embeddings usage counts each input's own tokens

`usage.prompt_tokens` on `POST /v1/embeddings` is now the sum of each input's own tokens. Before, the inputs of one request were counted as if each were as long as the longest of them, so a request with inputs of different lengths reported, and was billed for, more tokens than the model read. A batch now costs the same as sending its inputs one by one; a request with a single input is unchanged, and so are the vectors. See [Usage and billing](https://docs.serenityedge.ai/docs/embeddings-rerank-and-redaction/#embeddings-billing).

### Embeddings take text only

`POST /v1/embeddings` takes text only: a string, or an array of strings. Token ids were listed as an input, but they never reached the model, and requests with them got a generic 400. They now get a 400 that says to send the text. If you use LangChain's `OpenAIEmbeddings`, set `check_embedding_ctx_length=False`: by default it sends token ids from OpenAI's tokenizer, which this model does not use. See [Errors](https://docs.serenityedge.ai/docs/embeddings-rerank-and-redaction/#embeddings-errors).

### Serenity Star account keys on chat completions

Keys from a [Serenity Star account](https://docs.serenityedge.ai/docs/access/serenity-star-account/) now work on `POST /v1/chat/completions` and `POST /v1/responses` with `orion-pro`, `orion-plus` and `qwen3.6-35b-a3b`; before, these requests failed with HTTP 404. The other models answer HTTP 404 with `code: "model_not_found"` to these keys. Serenity Star bills this usage at the prices of your Serenity Star account.

### Codex CLI on the Responses API

[Codex CLI](https://github.com/openai/codex) now works with `POST /v1/responses`. The route accepts Codex's `client_metadata`, which is dropped, and its `namespace` tools: the function tools of its plugins and MCP servers, grouped. A call to one of them comes back as a `function_call` with its `name` and `namespace`. Hosted tools are still refused, so set `web_search = "disabled"` in Codex's `config.toml`. See [Codex CLI](https://docs.serenityedge.ai/docs/responses-api/#codex-cli) for the whole configuration.

### Conversations on the Decisions API

`POST /v1/decisions` takes a whole conversation in `input`, as OpenAI's Decisions API does: system, developer and assistant messages, function and custom tool calls with their outputs, and `input_json` parts, besides user messages. The model reads the conversation as a transcript, each item under a label, so you can ask whether an agent followed its instructions or used its tools well. Every item counts as input tokens. An input of user messages only is read as before. See [Conversations](https://docs.serenityedge.ai/docs/decisions/#conversations).

### Cached input is reported and billed

The chat models now report the part of a prompt served from the prompt cache in `usage.prompt_tokens_details.cached_tokens` (`usage.input_tokens_details.cached_tokens` on the Responses API), and that part is billed at the cached input price, as [Pricing and limits](https://docs.serenityedge.ai/docs/pricing-and-limits/#cached-input) says. Until now no answer reported cached tokens, so prompts were billed entirely at the input price. Every request of a conversation now goes to the server that holds its prefix, so long conversations and agents that resend the same instructions, such as Codex CLI, are mostly billed at the cached price from their second request.

### Embeddings and rerank read up to 8,192 tokens

`POST /v1/embeddings` reads each input up to its first 8,192 tokens instead of 512, and `POST /v1/rerank` reads each document with the query up to 8,192 tokens; longer texts are still cut without an error, and what is cut is not billed. A request now takes at most about 300,000 tokens, estimated as a quarter of its characters (on rerank, the query counted once per document); a larger one gets HTTP 400 with `param` `input` or `documents`. See [Limits](https://docs.serenityedge.ai/docs/embeddings-rerank-and-redaction/#embeddings-limits).

* * *

## Documentation

-   The [Embeddings, rerank and redaction](https://docs.serenityedge.ai/docs/embeddings-rerank-and-redaction/#embeddings-limits) guide, [Pricing and limits](https://docs.serenityedge.ai/docs/pricing-and-limits/#embeddings-rerank-and-redaction) and the API reference say that each embeddings input is read up to its first 8,192 tokens (the rest is ignored and not billed) and that a request takes at most about 300,000 tokens, and no longer list token ids as an input.
-   The [Serenity Star account](https://docs.serenityedge.ai/docs/access/serenity-star-account/) page lists the models these keys can use and says that Serenity Star bills them at your account's prices; [Pricing and limits](https://docs.serenityedge.ai/docs/pricing-and-limits/) says its prices are those of Serenity Edge API keys.
-   The [Responses API](https://docs.serenityedge.ai/docs/responses-api/#codex-cli) guide has a Codex CLI section.
-   The [Decisions](https://docs.serenityedge.ai/docs/decisions/#conversations) guide has a Conversations section, and the API reference lists the conversation items `input` takes.
-   [Pricing and limits](https://docs.serenityedge.ai/docs/pricing-and-limits/#cached-input) says that the prompt cache works in blocks, from which length a prefix is cached, and that a conversation stays on the server that holds its prefix.
