Models & pricing
PER 1M TOKENSEvery model id of the API, what it accepts and what it costs: 10 Shannon models and 12 hosted open-weight models, each available on all three endpoints. GET /v1/models returns the same list as JSON.
- uncensored models
- 22
- context window
- 256K
- from
- $0.50 /1M
Hosted open-weight models
262,144-token context on every id; input and output billed separately; each id accepts what the model it imitates accepts
| Model | Input | Structured output | In / cached / out per 1M | More |
|---|---|---|---|---|
3BIT-REAPDeepSeek · 1.6T MoE · 49B activeUncensored | Text in | JSON schema | $1.95 / $0.488 / $3.90 | More |
3BIT-REAPZ.ai · 744B MoE · 40B activeUncensored | Text in | JSON schema | $0.73 / $0.183 / $2.34 | More |
3BIT-REAPMoonshot AI · 2.8T MoE · 104B activeUncensored | Text + image in | JSON schema | $3.83 / $0.958 / $19.12 | More |
3BIT-REAPNVIDIA · 550B hybrid Mamba-Attention MoE · 55B activeUncensored | Text in | JSON schema | $0.75 / $0.188 / $3.30 | More |
3BIT-REAPMiniMax · 428B MoE · 23B active · sparse attentionUncensored | Text + image in | JSON schema | $0.50 / $0.125 / $2.00 | More |
W4A16-AUTOROUND-REAPDeepSeek · 284B MoE · 13B activeUncensored | Text in | JSON schema | $0.50 / $0.125 / $2.00 | More |
W4A16-AUTOROUND-REAPMoonshot AI · 1T MoE · 32B activeUncensored | Text + image in | JSON schema | $0.78 / $0.195 / $3.67 | More |
W4A16-AUTOROUND-REAPPoolside · 118B MoE · 8B activeUncensored | Text in | No structured output | $0.50 / $0.125 / $2.00 | More |
W4A16-AUTOROUND-REAPThinking Machines · 975B MoE · 41B activeUncensored | Text + image in | JSON object | $1.42 / $0.355 / $6.07 | More |
W8A16Xiaomi · 1.02T MoE · 42B active · 8-bitUncensored | Text in | JSON schema | $0.50 / $0.125 / $2.00 | More |
W8A16Xiaomi · 8-bit multimodal · W8A16Uncensored | Text + image in | JSON schema | $0.50 / $0.125 / $2.00 | More |
W8A16Tencent · 295B MoE · 21B active · 8-bitUncensored | Text in | JSON schema | $0.50 / $0.125 / $2.00 | More |
Shannon models
one flat rate for input and output
| Model | Context | Input | Structured output | Price / 1M tokens |
|---|---|---|---|---|
shannon-1.6-liteUncensored | 192K | Text + image in | JSON schema | $3.90 |
shannon-1.6-proUncensored | 192K | Text + image in | JSON schema | $7.80 |
shannon-2-liteUncensored | 192K | Text + image in | JSON schema | $3.90 |
shannon-2-proUncensored | 192K | Text + image in | JSON schema | $5.85 |
shannon-3Uncensored | 192K | Text + image in | JSON schema | $3.35 |
shannon-3-proUncensored | 192K | Text + image in | JSON schema | $3.35 |
shannon-3.1Uncensored | 192K | Text + image in | JSON schema | $3.35 |
shannon-3.1-proUncensored | 192K | Text + image in | JSON schema | $3.35 |
shannon-3.5Uncensored | 192K | Text + image in | JSON schema | $3.35 |
shannon-coder-1Uncensored | 128K | Text in | JSON schema | $8.00 |
Jump to Quickstart Try Playground
How to read a row
| Column | What it says |
|---|---|
| Model | The name for display. The line under it is the id you send as model. In the hosted table the id is the name and the tag beside it, joined by a hyphen: MiniMax-M3 and 3BIT-REAP make MiniMax-M3-3BIT-REAP. The line under the name shows who made the model and its size. |
| Context | The context window: how many tokens of conversation the model reads. K stands for 1,024 tokens. The exact number is context_window in GET /v1/models. |
| Input | Text only, or text and images. A model that reads images reports capabilities.vision: true. shannon-2-lite and shannon-2-pro read images in requests that also send tools or response_format. |
| Structured output | What response_format can ask of the model: an answer that follows your JSON schema, an answer that is a JSON object, or neither. |
| Price | USD per 1,000,000 tokens. A Shannon model has one price for input and output. A hosted open-weight model has three: input, cached input and output. |
Every model streams and can call tools. The other features of the API are described on the Capabilities page. Capabilities
Context window and output limits
- The context window covers everything the model reads for one answer: your messages, tool definitions and images.
- The Shannon 3 family fits a longer conversation by itself: it keeps the newest turns that fit into the window and answers.
- In a stream, a prompt that is too long is reported as an error frame with type
invalid_request_errorandcode: "context_length_exceeded". max_tokenstakes values from 1 to 65,536 on every model;max_output_tokensinGET /v1/modelsis the top of that range. The default is 4,096.- On every model,
max_tokensis the amount a request reserves from your balance. - As the limit on the length of the answer,
max_tokensis applied by the hosted open-weight models,shannon-1.6-lite,shannon-1.6-proandshannon-coder-1. - On the hosted open-weight models it limits the answer text. The reasoning before the answer is not counted against it, and a value below 256 acts as 256.
- A stream of
shannon-1.6-lite,shannon-1.6-pro,shannon-coder-1or the Shannon 3 family ends withfinish_reason: "length"when the answer was cut at its limit.
How a price is formed
- Prices are in USD per 1,000,000 tokens. Your balance is counted in tokens worth $5.00 per 1,000,000, so a model's price says how much balance its tokens take.
- Shannon models have one price. A call is charged
usage.total_tokensat that price. - Hosted open-weight models have three prices. Input that is read from the prompt cache is charged at the cached price, which is 25% of the input price rounded to $0.001. The rest of the input is charged at the input price, the output at the output price.
- Hosted open-weight models count tokens with each model's own tokenizer.
GET /v1/modelsmarks this astokenizer: "original". shannon-coder-1is counted in calls, not tokens, on/v1/chat/completionsand/v1/messages. Its listed price applies on/v1/responses.
What a request reserves, worked examples of a charge and the Shannon Coder call allowance are on Limits and balance. Limits and balance
Model ids
Send one of these ids as model.
shannon-1.6-lite
shannon-1.6-pro
shannon-2-lite
shannon-2-pro
shannon-3
shannon-3-pro
shannon-3.1
shannon-3.1-pro
shannon-3.5
shannon-coder-1
DeepSeek-V4-Pro-0813-3BIT-REAP
GLM-5.2-3BIT-REAP
Kimi-K3-3BIT-REAP
Nemotron3Ultra-3BIT-REAP
MiniMax-M3-3BIT-REAP
DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP
Kimi-K2.6-W4A16-AUTOROUND-REAP
Laguna-S-2.1-W4A16-AUTOROUND-REAP
inkling-W4A16-AUTOROUND-REAP
MiMo-V2.5-Pro-W8A16
MiMo-V2.5-W8A16
Hy3-W8A16 - Upper and lower case do not matter, and spaces around the id are removed:
SHANNON-3andshannon-3are the same model. - The reply always carries the published id in
model, whichever spelling you sent. - A display name such as
Shannon 3is not an id.
Four shorter spellings are accepted as well.
| You send | Model that answers |
|---|---|
shannon-1.6 | shannon-1.6-lite |
shannon-3-lite | shannon-3 |
shannon-3.1-lite | shannon-3.1 |
shannon-coder | shannon-coder-1 |
An id that is not published is answered with status 400, type invalid_request_error and the message unknown model: <id> on all three endpoints. No other model answers in its place.
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} - Always send
model./v1/responsesanswers a request without it with400. On/v1/chat/completionsand/v1/messagessuch a request is answered byshannon-1.6-lite. POST /v1/tokenizeandPOST /v1/messages/count_tokenstake the hosted open-weight ids.
List models
GET /v1/models returns the models of this page as JSON, with the same context windows, prices and capabilities. Use it to fill a model picker or to check a price in code.
GET https://api.shannon-ai.com/v1/models
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1"
)
for model in client.models.list():
print(model.id) import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/v1'
});
for await (const model of client.models.list()) {
console.log(model.id);
} curl "https://api.shannon-ai.com/v1/models" The reply, shortened to one entry of each kind:
{
"object": "list",
"data": [
{
"id": "shannon-3",
"object": "model",
"created": 1700000000,
"owned_by": "shannon-ai",
"display_name": "Shannon 3",
"context_window": 196608,
"max_output_tokens": 65536,
"pricing": {
"input_per_million_usd": 3.35,
"output_per_million_usd": 3.35,
"currency": "USD"
},
"capabilities": {
"tools": true,
"vision": true,
"reasoning": true,
"reasoning_effort": false,
"streaming": true,
"json_schema": true
},
"endpoints": [
"/v1/chat/completions",
"/v1/messages",
"/v1/responses"
]
},
{
"id": "MiniMax-M3-3BIT-REAP",
"object": "model",
"created": 1700000000,
"owned_by": "shannon-ai",
"display_name": "MiniMax-M3 · 3BIT-REAP",
"context_window": 262144,
"max_output_tokens": 65536,
"pricing": {
"input_per_million_usd": 0.5,
"cached_input_per_million_usd": 0.125,
"output_per_million_usd": 2,
"currency": "USD"
},
"tokenizer": "original",
"capabilities": {
"tools": true,
"vision": true,
"reasoning": true,
"reasoning_effort": true,
"streaming": true,
"response_format": true,
"json_schema": true,
"prompt_caching": true
},
"endpoints": [
"/v1/chat/completions",
"/v1/messages",
"/v1/responses",
"/v1/messages/count_tokens",
"/v1/tokenize"
]
}
]
} | Field | Type | Description | Present on |
|---|---|---|---|
object | string | Always list. | |
data | array | One entry per model that can be called. | |
data[].id | string | The id you send as model. | Every model |
data[].object | string | Always model. | Every model |
data[].created | integer | A fixed number, the same for every model: 1700000000. | Every model |
data[].owned_by | string | Always shannon-ai. | Every model |
data[].display_name | string | A name for display. It is not accepted as model. | Every model |
data[].context_window | integer | The context window in tokens. | Every model |
data[].max_output_tokens | integer | The largest output budget a request may ask for: 65536 on every model. | Every model |
data[].pricing.input_per_million_usd | number | The price of 1,000,000 input tokens in USD. | Every model |
data[].pricing.cached_input_per_million_usd | number | The price of 1,000,000 input tokens read from the prompt cache. | Hosted open-weight models |
data[].pricing.output_per_million_usd | number | The price of 1,000,000 output tokens in USD. On a Shannon model it equals the input price. | Every model |
data[].pricing.currency | string | Always USD. | Every model |
data[].tokenizer | string | original: tokens are counted with the model's own tokenizer. | Hosted open-weight models |
data[].capabilities.tools | boolean | The model can call the tools you declare. true on every model. | Every model |
data[].capabilities.vision | boolean | The model reads images. | Every model |
data[].capabilities.reasoning | boolean | The model reasons before it answers. | Every model |
data[].capabilities.reasoning_effort | boolean | The request field reasoning_effort takes effect on this model. | Every model |
data[].capabilities.streaming | boolean | true on every model. | Every model |
data[].capabilities.json_schema | boolean | response_format of type json_schema takes effect. | Every model |
data[].capabilities.response_format | boolean | response_format takes effect at all, at least as a JSON object. | Hosted open-weight models |
data[].capabilities.prompt_caching | boolean | Repeated prompt prefixes are cached and charged at the cached price. | Hosted open-weight models |
data[].endpoints | array | The paths that take this id. | Every model |
GET /v1/modelsneeds no key. The reply is the same for every caller and does not depend on your plan.- The list holds the ids that can be called. A model that cannot be served at the moment is left out of it.
- There is no endpoint for one model:
GET /v1/models/{id}answers404with typenot_found_error.