Skip to main content

Release 2026.11.06

Website​

Playground​

The new playground calls the API live from the browser, with no key or sign-up. You can play Blocks and gems against orion-compass on POST /v1/systemone, or pick orion-compass-flash or d3 as the rival. It also has four business cases:

  • support inbox triage on POST /v1/decisions;
  • expenses against a policy on POST /v1/decisions, where orion-compass-flash reads the image of each receipt;
  • a personal data hunt on POST /v1/redact;
  • exact clause search on POST /v1/embeddings and POST /v1/rerank.

Every demo shows the exact request and response, a copy as cURL against the public API, and what its calls cost at published prices.

Release 2026.11.05

API changes​

Up to 8 images per request​

Chat models now read up to 8 images per request, counted over the whole conversation, on POST /v1/chat/completions and POST /v1/responses. The limit depends on the model: 8 on orion-pro, 8 on orion-plus, 8 on qwen3.8-27b, 8 on qwen3.6-35b-a3b and 1 on paddleocr-vl-1.6. GET /v1/models publishes each model's limit as supported_inputs.references.max of its image input modality. See Image input.

An error code for too many images​

A request with more images than the model reads is still refused with HTTP 400 and the same message, but its code is now too_many_images instead of invalid_request_error, on POST /v1/chat/completions and POST /v1/responses. Images are counted over the whole conversation, earlier turns included.

In a long conversation, send only the most recent images, up to the model's limit, and replace the older ones with a short text. See Errors and rate limits.

Models​

No quantization or tokenizer on the Orion ids​

In GET /v1/models, the orion-pro and orion-plus entries no longer carry quantization or tokenizer. Both fields are optional in the provider schema. qwen3.8-27b, qwen3.6-35b-a3b and paddleocr-vl-1.6 keep them. See List models.

Documentation​

OpenCode​

The new Coding agents guide configures OpenCode with orion-pro and orion-plus on chat completions. OpenCode does not ask for reasoning by default, so the guide sets reasoningEffort on each model; any value other than none turns reasoning on. Codex CLI keeps its configuration in the Responses API guide.

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 input takes.
  • 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.

Release 2026.10.29

API changes​

Images on d3​

d3 now reads images together with the text, like orion-compass-flash: input_image parts on POST /v1/decisions, and images on the Jev-compatible POST /v1/systemone. The limits are the same: base64 data URLs of PNG, JPEG or WebP, at most 4 per request, 8 MiB in total once decoded, 16 megapixels each, and a request body of up to 12 MiB. See Images.

The tokens the images expand to are input tokens, billed at the model's input price, and usage splits input_tokens into text_tokens and image_tokens. orion-compass still reads text only.


Documentation​

  • The Decisions guide and the API reference list d3 among the models that read images.

Release 2026.10.28

API changes​

Images on Orion Compass Flash​

orion-compass-flash now reads images together with the text. On POST /v1/decisions, send them as input_image parts. On the Jev-compatible POST /v1/systemone, send them as images.

Images go as base64 data URLs: PNG, JPEG or WebP, at most 4 per request, 8 MiB in total once decoded, and 16 megapixels each. The request body may be up to 12 MiB on this model. See Images.

The tokens the images expand to are input tokens, billed at the model's input price: usage.input_tokens counts them, and usage.input_tokens_details.image_tokens (usage.image_tokens on POST /v1/systemone) shows their part, next to text_tokens. orion-compass and d3 still read text only.


Documentation​

  • The Decisions guide and the API reference describe image input, its limits and how image tokens are billed.

Release 2026.10.27

API changes​

Responses API​

POST /v1/responses serves OpenAI's Responses API on every chat model, with the same keys, prices and limits as chat completions. It covers:

  • text and image input;
  • function tools;
  • structured outputs (text.format);
  • reasoning;
  • streaming with Responses events.

The OpenAI SDKs' client.responses.create, client.responses.stream and client.responses.parse work as they are.

The API is stateless, since Serenity Edge stores no prompts or answers. Send the whole conversation in input on every request. store: true, previous_response_id, conversation and background are refused with HTTP 400, and responses cannot be retrieved. See the Responses API guide.

Decision request limits​

POST /v1/decisions and the Jev-compatible POST /v1/systemone accept at most 256 questions per request; POST /v1/decisions also takes at most 255 options per choice question and 10 levels per score question. A larger request is refused, with HTTP 400 (422 on POST /v1/systemone), a message that says which limit was hit, and the parameter at fault in param. See Current limitations.

Clearer validation errors on decisions​

On orion-compass, orion-compass-flash and d3, the error for a malformed decision request now names the field and how to fix it, and the three models refuse the same requests on POST /v1/systemone with the same messages. For example, a choice given as a string gets "each choice must be an object with a 'value' (string or boolean)", and a question whose text is in question instead of instructions is told so. param points at the exact element, such as questions[0].choices[0]. See Errors.


Documentation​

Release 2026.10.14

API changes​

Decision model d3​

d3 (alias vllm-sr/d3) joins the decision models in public preview. It is vLLM Semantic Router's open-weight 27B decision model (Apache-2.0) and first on the text board of the Jev Decision Index. It costs $0.042 per million input tokens, and output is not billed. It reads text only, has a context of 24,576 tokens, and is served on both POST /v1/decisions and POST /v1/systemone.

Embeddings​

New POST /v1/embeddings takes OpenAI's embeddings request, so client.embeddings.create in the OpenAI SDKs works as it is: vectors of 1024 dimensions for up to 512 inputs per request, billed on usage.prompt_tokens. Use a Serenity Edge API key. See Embeddings, rerank and redaction.

Rerank​

New POST /v1/rerank scores up to 1000 documents against a query, in the format of the rerank APIs of Cohere and Jina. Its tokens are estimated as ceil((characters(query) + characters(document)) / 4) per document, with characters counted as Unicode code points, and returned in usage. See Rerank.

Redaction​

New POST /v1/redact finds and masks personal data in up to 256 texts (192 KiB per request) in the privacy filter's own format, with model optional; the text sent is processed in memory only. Its tokens are estimated as ceil(characters / 4) over all the inputs. See Redaction.

Access and errors on the new routes​

The three routes take Serenity Edge API keys; any other key gets HTTP 403 permission_denied with a message that names the route's API. A model sent to a route that does not serve it, or a request the model cannot process (The model server rejected the request. Check the input sizes and parameters.), gets HTTP 400. See Errors and rate limits.


Models​

Embeddings, rerank and redaction models​

Three models join the OpenAI-style list (GET /v1/models?format=openai), each with its route in endpoints and billed on input tokens only:

ModelAliasRoutePrice per million input tokens
qwen3-embedding-0.6bqwen/qwen3-embedding-0.6bPOST /v1/embeddings$0.008
qwen3-reranker-0.6bqwen/qwen3-reranker-0.6bPOST /v1/rerank$0.008
privacy-filteropenai/privacy-filterPOST /v1/redact$0.009

Current prices are listed live on Pricing and limits.

paddleocr-vl-1.6 for document pages​

paddleocr-vl-1.6 (aliases baidu/paddleocr-vl-1.6 and paddlepaddle/paddleocr-vl-1.6) joins the chat models: send one page image with a task prompt (OCR:, Table Recognition:, Formula Recognition: or Chart Recognition:) and it returns the page's text, table, formula or chart data, at $0.016 per million prompt tokens and $0.016 per million completion tokens (a full page is about 1,250 prompt tokens). It reads one image per request, uses temperature 0 unless you send one, has a context of 16,384 tokens and at most 8,192 output tokens, and does not reason, call tools or produce structured outputs. It is available on the API now, and ready for the OpenRouter onboarding, which is not live yet; see Document OCR.


Documentation​

Release 2026.10.13

API changes​

Decisions, in preview​

New POST /v1/decisions (the format of OpenAI's Decisions API) and POST /v1/systemone (compatible with Jev's format) return typed, calibrated answers (probabilities, choices and scores) instead of generated text. Use a Serenity Edge API key. See Decisions.

Image input on the chat models​

POST /v1/chat/completions accepts up to 4 images per request as base64 data URLs in image_url parts, billed as input tokens. Image URLs are refused with HTTP 400. See Models.

Server errors are HTTP 500​

Errors with code upstream_error and timeout now answer HTTP 500 instead of 502 and 504, with the same JSON body and code, so the error object always reaches you. Handle them as before: retry with backoff. See Errors and rate limits.


Models​

Orion Compass decision models​

orion-compass and orion-compass-flash join the catalogue in preview, billed per input token only; output is free. Prices are listed live on Pricing and limits.


Documentation​

  • New guide: Decisions.
  • Models: image input.
  • Errors and rate limits: 422 on /v1/systemone, 403 for keys that cannot use decisions, and 500 for upstream_error and timeout.
  • API reference: the two decision endpoints, image parts in user messages, and the error responses.

Release 2026.09.22

First publication of the Serenity Edge documentation.

Documentation​