Release 2026.10.30
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.
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.
Serenity Star account keys on chat completions
Keys from a 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 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 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.
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 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.
Documentation
- The Embeddings, rerank and redaction guide, Pricing and limits 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 page lists the models these keys can use and says that Serenity Star bills them at your account's prices; Pricing and limits says its prices are those of Serenity Edge API keys.
- The Responses API guide has a Codex CLI section.
- The Decisions guide has a Conversations section, and the API reference lists the conversation items
inputtakes. - Pricing and limits 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.