Skip to main content

Models

Serenity Edge serves two families of chat models: Orion, Serenity's own model line, and a set of open models addressed by their published names. It also serves decision models and the models of the embeddings, rerank and redaction routes, each on its own endpoint.

Catalogue​

The table is read from GET /v1/models when this page is published and again when you open it, so it shows what the API serves right now; the line under it says when it was read.

Model idFamilyContextMax outputCapabilities
orion-proOrion ProOrion262,14432,768StreamingTool callingStructured outputsReasoningPrefix caching
orion-plusOrion PlusOrion262,14432,768StreamingTool callingStructured outputsReasoningPrefix caching
qwen3.8-27bQwen3.8 27BOpen262,14432,768StreamingTool callingStructured outputsReasoningPrefix caching
qwen3.6-35b-a3bQwen3.6 35B A3BOpen262,14432,768StreamingTool callingStructured outputsReasoningPrefix caching
paddleocr-vl-1.6PaddleOCR-VL 1.6Open16,3848,192Streaming

Read from the API (GET /v1/models) when this page was published, on 6 November 2026, 19:49 UTC.

Pricing is listed on Pricing and limits. Use GET /v1/models to retrieve the catalogue programmatically; see List models.

Two families​

Orion​

orion-pro and orion-plus are the Orion family, Serenity's own model line. Each id is the configuration that Substrate AI recommends and maintains for a kind of workload (sampling defaults, prompt handling and serving configuration tuned for it): orion-plus for volume and latency, orion-pro for depth. Address the Orion ids to follow that recommended configuration and to benefit from future improvements without changing your code.

Preview

Substrate AI is preparing fine-tuned Orion models. When they ship, the orion-pro and orion-plus ids will resolve to them; the change will be announced in the release notes in advance.

Open models​

qwen3.8-27b and qwen3.6-35b-a3b are general-purpose open models, served as published by their authors. Use these ids when you want to address an open model by its own name, for example to compare results with other providers.

paddleocr-vl-1.6 is an open model for reading document pages: see Document OCR.

Choosing between pro and plus​

  • Start with orion-plus. It is the fast, inexpensive option and handles most conversational, classification and extraction workloads well.
  • Move to orion-pro when the task needs more depth: long multi-document reasoning, strict adherence to complex instructions, or reliable multi-step tool calling.

The Orion models, qwen3.8-27b and qwen3.6-35b-a3b support streaming, tool calling, structured outputs and reasoning; paddleocr-vl-1.6 supports streaming only. The catalogue above shows the capabilities of each one. See the API reference for the full parameter list.

Image input​

Every chat model reads images as well as text. Send them in a user message as image_url parts whose url is a base64 data URL (data:image/png;base64,...; PNG, JPEG, WebP or GIF), up to the model's limit per request:

{"role": "user", "content": [
{"type": "text", "text": "What does this chart show?"},
{"type": "image_url", "image_url": {"url": "data:image/png;base64,iVBORw0KGgo..."}}
]}
ModelImages per request
orion-pro8
orion-plus8
qwen3.8-27b8
qwen3.6-35b-a3b8
paddleocr-vl-1.61

Images count as input tokens and are billed at the model's input price. Image URLs are not fetched: a part with an http or https URL, more images than the model reads, or video, audio or file parts are refused with HTTP 400 (invalid_request_error, with the offending param). Images are counted over the whole conversation, earlier turns included: too many images carry the code too_many_images, so in a long conversation send only the most recent images and replace the older ones with a short text. Each model's limit is supported_inputs.references.max of its image input modality in GET /v1/models. The request body limit of 4 MB applies to the base64 data.

Document OCR​

paddleocr-vl-1.6 (aliases baidu/paddleocr-vl-1.6 and paddlepaddle/paddleocr-vl-1.6) is PaddleOCR-VL 1.6, an open vision-language model for documents. It reads one page image and returns the page's text, a table, a formula or the data of a chart, depending on the task prompt you send with the image. It is a chat model: call it with POST /v1/chat/completions.

Send one user message with the page as an image_url part (a base64 data URL, as in Image input) followed by a text part with one of these task prompts, exactly as written:

Task promptWhat the answer contains
OCR:The text of the page
Table Recognition:The table in the image
Formula Recognition:The formula in the image
Chart Recognition:The data of the chart in the image
curl https://api.serenityedge.ai/v1/chat/completions \
-H "Authorization: Bearer $SERENITY_EDGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "paddleocr-vl-1.6",
"messages": [
{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": "data:image/png;base64,iVBORw0KGgo..."}},
{"type": "text", "text": "OCR:"}
]}
]
}'

With the OpenAI Python library, read the page from a file and encode it:

import base64

from openai import OpenAI

client = OpenAI(
base_url="https://api.serenityedge.ai/v1",
api_key="YOUR_SERENITY_EDGE_API_KEY",
)

with open("page-1.png", "rb") as image:
page = base64.b64encode(image.read()).decode("ascii")

completion = client.chat.completions.create(
model="paddleocr-vl-1.6",
messages=[
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{page}"}},
{"type": "text", "text": "OCR:"},
],
}
],
)

print(completion.choices[0].message.content)

What to know about this model:

  • One image per request. A second image is refused with HTTP 400 (invalid_request_error, code: "too_many_images", param: "messages", This model reads at most 1 image(s) per request.). Send a document of several pages as one request per page; the requests can run in parallel.
  • Temperature 0 by default. Without a temperature in the request, the model decodes greedily, which keeps transcriptions stable. A temperature you send is used as is.
  • Text in, text out. The model does not reason, call tools or produce structured outputs: send the image and the task prompt, and read the answer from choices[0].message.content. If a transcription reaches the model's maximum output, shown in the catalogue, the answer ends with finish_reason: "length".
  • Billing. The image counts as prompt tokens: a full page is about 1,250 prompt tokens. Prompt and completion tokens are billed at the prices on Pricing and limits. In our measurements of 13 October 2026, a full page took 1,243 to 1,273 prompt tokens and was answered in 221 to 312 ms of server time, without the network.
  • Access. Call paddleocr-vl-1.6 directly on the API at https://api.serenityedge.ai/v1. Since 2026-10-14 it is also ready for the OpenRouter onboarding, which is not live yet.
  • Output length. A max_tokens or max_completion_tokens above 8,192, the model's maximum output, is clamped to 8,192 rather than refused.

Precision​

The Orion models, qwen3.8-27b and qwen3.6-35b-a3b run in NVFP4, a 4-bit floating-point format for NVIDIA GPUs. It is the standard serving precision on Serenity Edge and is what the published prices assume. paddleocr-vl-1.6 runs in BF16, the precision of its published weights.

Decision models​

Preview

Decision models are in public preview. Their availability will be announced in the release notes.

Decision models answer typed questions (yes or no, one of several options, a level on a scale) with calibrated probabilities instead of generating text, on their own endpoints: POST /v1/decisions and POST /v1/systemone. They are not chat models and are not listed in the catalogue above. orion-compass is for questions that need more depth; orion-compass-flash is for the lowest latency and price at volume. See Decisions for when to use them and how.

The table is read from GET /v1/models?format=openai when this page is published and again when you open it.

Model idContextReadsInputOutputEndpoints
d3also vllm-sr/d324,576textimage$0.042Free/v1/decisions/v1/systemone
orion-compassalias of orion-compass-26.132,000text$0.034Free/v1/decisions/v1/systemone
orion-compass-flashalias of orion-compass-flash-26.132,000textimage$0.017Free/v1/decisions/v1/systemone

Read from the API (GET /v1/models?format=openai) when this page was published, on 6 November 2026, 19:49 UTC.

Embeddings, rerank and redaction​

Three more models are served on their own routes, for search, retrieval-augmented generation and privacy: qwen3-embedding-0.6b on POST /v1/embeddings (vectors in OpenAI's format), qwen3-reranker-0.6b on POST /v1/rerank (relevance scores in the format of Cohere and Jina) and privacy-filter on POST /v1/redact (personal data found and masked). They are not chat models and are not listed in the catalogue above. See Embeddings, rerank and redaction for how to call them.

The table is read from GET /v1/models?format=openai when this page is published and again when you open it. Prices are in US dollars per million input tokens.

Model idInputEndpoint
privacy-filteralso openai/privacy-filter$0.009/v1/redact
qwen3-embedding-0.6balso qwen/qwen3-embedding-0.6b$0.008/v1/embeddings
qwen3-reranker-0.6balso qwen/qwen3-reranker-0.6b$0.008/v1/rerank

Read from the API (GET /v1/models?format=openai) when this page was published, on 6 November 2026, 19:49 UTC.