The Infrastructure of Uncensored Intelligence

The uncensored AI API: Shannon models with no refusals and no filters, served from our own GPUs. OpenAI- and Anthropic-compatible — drop in the SDK you already use, one key, streaming, tool calling and reasoning on every endpoint.

21 uncensored models 256K context window from $0.50/1M 3 compatible APIs 3 networks: TLS, Tor, I2P
shannon deepseekzaimoonshotainvidiaminimaxxiaomitencentpoolsidethinkingmachines
Reachable over Tor and I2P Onion service, I2P eepsite and an encrypted TLS mirror. Same /v1 routes, same key, streaming included; no cookies, no JavaScript, no third-party requests. api-encrypted.shannon-ai.com shannon…4cad.onion acvnvkde….b32.i2p Tor & I2P endpoints →

Models & pricing

PER 1M TOKENS

9 Shannon tiers and 12 hosted open-weight models behind one endpoint, with streaming and tool calling on every id. Usage is billed against your token quota, valued at $5 per million quota tokens. Model ids are stable — pin them in production; GET /v1/models returns this same table.

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
DeepSeek-V4-Pro-08133BIT-REAPDeepSeek · 1.6T MoE · 49B active Text in JSON schema $1.95 / $0.488 / $3.90 More →
GLM-5.23BIT-REAPZ.ai · 744B MoE · 40B active Text in JSON schema $0.73 / $0.183 / $2.34 More →
Kimi-K33BIT-REAPMoonshot AI · 2.8T MoE · 104B active Text + image in JSON schema $3.83 / $0.958 / $19.12 More →
Nemotron3Ultra3BIT-REAPNVIDIA · 550B hybrid Mamba-Attention MoE · 55B active Text in JSON schema $0.75 / $0.188 / $3.30 More →
MiniMax-M33BIT-REAPMiniMax · 428B MoE · 23B active · sparse attention Text + image in JSON schema $0.50 / $0.125 / $2.00 More →
DeepSeek-V4-Flash-0731W4A16-AUTOROUND-REAPDeepSeek · 284B MoE · 13B active Text in JSON schema $0.50 / $0.125 / $2.00 More →
Kimi-K2.6W4A16-AUTOROUND-REAPMoonshot AI · 1T MoE · 32B active Text + image in JSON schema $0.78 / $0.195 / $3.67 More →
Laguna-S-2.1W4A16-AUTOROUND-REAPPoolside · 118B MoE · 8B active Text in No structured output $0.50 / $0.125 / $2.00 More →
inklingW4A16-AUTOROUND-REAPThinking Machines · 975B MoE · 41B active Text + image in JSON object $1.42 / $0.355 / $6.07 More →
MiMo-V2.5-ProW8A16Xiaomi · 1.02T MoE · 42B active · 8-bit Text in JSON schema $0.50 / $0.125 / $2.00 More →
MiMo-V2.5W8A16Xiaomi · 8-bit multimodal · W8A16 Text + image in JSON schema $0.50 / $0.125 / $2.00 More →
Hy3W8A16Tencent · 295B MoE · 21B active · 8-bit Text in JSON schema $0.50 / $0.125 / $2.00 More →

Token counts for these ids use each model's own tokenizer and chat template, so a prompt costs the number of tokens the original model would count. Cached input is a repeated prompt prefix served from the prompt cache, billed at 25% of the input rate. Prompt caching →

Shannon models one flat rate for input and output

Model Context Input Structured output Price / 1M tokens
Shannon 1.6 Liteshannon-1.6-lite 192K Text + image in JSON schema $3.90
Shannon 1.6 Proshannon-1.6-pro 192K Text + image in JSON schema $7.80
Shannon 2 Liteshannon-2-lite 192K Text + image in JSON schema $3.90
Shannon 2 Proshannon-2-pro 192K Text + image in JSON schema $5.85
Shannon 3shannon-3 192K Text + image in JSON schema $3.35
Shannon 3 Proshannon-3-pro 192K Text + image in JSON schema $3.35
Shannon 3.1shannon-3.1 192K Text + image in JSON schema $3.35
Shannon 3.1 Proshannon-3.1-pro 192K Text + image in JSON schema $3.35
Shannon Coder 1shannon-coder-1 128K Text in JSON schema $8.00

Streaming responses include exact token usage in the final chunk. You are billed only for the tokens you send and the reasoning and answer you receive, counted with each model's own tokenizer; cached input is billed at the cached rate.

Quick Start

1 · Create a key → 2 · Point your SDK at Shannon → 3 · Ship
Python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1"
)

response = client.chat.completions.create(
    model="shannon-3",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello, Shannon!"}
    ],
    max_tokens=1024
)

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

Response format

200 · JSON
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1234567890,
  "model": "Shannon 1.6 Lite",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! I'm Shannon, your AI assistant. How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 18,
    "total_tokens": 43
  }
}

API Playground

Interactive

Try every model and endpoint in the browser with your own key — streaming output, request inspector, and generated code you can paste straight into your app.

Interactive API console

Chat with any model, three endpoint dialects, tool calls, live latency and cost.

Launch Playground

Capabilities

Everything the chat product can do, exposed over the wire.

Compatible

Drop-in Replacement

Works with OpenAI and Anthropic SDKs. Just change the base URL.

Tools

Function Calling

Define tools, let Shannon call them. Supports auto, forced, and none modes.

Search

Built-in Web Search

Real-time web search with source citations. Automatically available.

JSON

Structured Outputs

JSON mode and JSON Schema enforcement for reliable data extraction.

Agentic

Multi-turn Tools

Automatic function execution loops. Up to 10 iterations per request.

Fast

Streaming

Server-sent events for real-time token streaming.

Overview

LIVE

Point your existing OpenAI or Anthropic SDK at Shannon and keep the same code. Every endpoint speaks the format you already use.

Base URL

OpenAI-Compatible

https://api.shannon-ai.com/v1/chat/completions

Use the Chat Completions API with function calling and streaming.

Base URL

Anthropic-Compatible

https://api.shannon-ai.com/v1/messages

Claude Messages format with tools and anthropic-version header.

Headers

Authentication

Authorization: Bearer <your-key>

Or X-API-Key with anthropic-version for Claude-style calls.

Access

Status

Public docs - Key required to call

Streaming, function calling, structured outputs, web search.

Before your first request

  • Point your SDK at Shannon — Set baseURL to the OpenAI or Anthropic endpoints above.
  • Attach your API key — Use Bearer tokens for OpenAI calls or X-API-Key + anthropic-version.
  • Enable tools & structured outputs — Supports OpenAI tools/functions, JSON schema, and built-in web_search.
  • Track usage — View token and search consumption on this page when signed in to your account.

Authentication

One key works everywhere. OpenAI-style requests use a Bearer header; Anthropic-style requests use x-api-key.

OpenAI-compatible
Authorization: Bearer YOUR_API_KEY

Anthropic-compatible

Anthropic-compatible
x-api-key: YOUR_API_KEY
anthropic-version: 2023-06-01

Encrypted, Tor & I2P endpoints

The API is also published as a Tor onion service and an I2P eepsite. Same routes, same key; only the base URL and the proxy change.

NetworkBase URL
Clear webhttps://api.shannon-ai.com/v1
Clear webhttps://api-encrypted.shannon-ai.com/v1
Tor (onion service)http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1
I2P (eepsite)http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1

cURL through Tor

cURL · Tor
curl --socks5-hostname 127.0.0.1:9050 http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "shannon-3-lite", "stream": true, "messages": [{"role": "user", "content": "Hello over Tor"}]}'

cURL through I2P

cURL · I2P
curl --proxy http://127.0.0.1:4444 http://acvnvkdea4xaczzjap7chysqqi4kkvp2eorfwkasindzmjpa47da.b32.i2p/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

SDK base URL

Python · openai
import httpx
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="http://shannonmd773o5vxz75byha5rkea7nzr3srotw46uwythq3pjl6y4cad.onion/v1",
    http_client=httpx.Client(proxy="socks5h://127.0.0.1:9050", timeout=600),
)

Cookies are never accepted on /v1, so the API key is the only credential. Streaming works over both networks; keep-alive frames are sent every few seconds.

Function Calling

Python
from openai import OpenAI
import json

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1"
)

# Define available tools/functions
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get current weather for a location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "City name, e.g., 'Tokyo'"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"]
                    }
                },
                "required": ["location"]
            }
        }
    }
]

response = client.chat.completions.create(
    model="shannon-3",
    messages=[{"role": "user", "content": "What's the weather in Tokyo?"}],
    tools=tools,
    tool_choice="auto"
)

# Check if model wants to call a function
if response.choices[0].message.tool_calls:
    tool_call = response.choices[0].message.tool_calls[0]
    print(f"Function: {tool_call.function.name}")
    print(f"Arguments: {tool_call.function.arguments}")

tool_choice

"auto" Model decides whether to call a function (default)
"none" Disable function calling for this request
{"type": "function", "function": {"name": "..."}} Force a specific function call

Function Call Response

200 · JSON
{
  "id": "chatcmpl-xyz",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_abc123",
            "type": "function",
            "function": {
              "name": "get_weather",
              "arguments": "{\"location\": \"Tokyo\", \"unit\": \"celsius\"}"
            }
          }
        ]
      },
      "finish_reason": "tool_calls"
    }
  ]
}

Structured Outputs

Python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1"
)

# Force JSON output with schema
response = client.chat.completions.create(
    model="shannon-3",
    messages=[
        {"role": "user", "content": "Extract: John Doe, 30 years old, engineer"}
    ],
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "person_info",
            "schema": {
                "type": "object",
                "properties": {
                    "name": {"type": "string"},
                    "age": {"type": "integer"},
                    "occupation": {"type": "string"}
                },
                "required": ["name", "age", "occupation"]
            }
        }
    }
)

import json
data = json.loads(response.choices[0].message.content)
print(data)  # {"name": "John Doe", "age": 30, "occupation": "engineer"}

Response Format Options

{"type": "json_object"} Force valid JSON output (no specific schema)
{"type": "json_schema", "json_schema": {...}} Force output matching your exact schema

Streaming

Server-sent events, OpenAI chunk format. Thinking models stream reasoning_content deltas before the answer; the final chunk carries exact usage.

Python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1"
)

# Enable streaming for real-time responses
# Thinking models stream reasoning_content first, then content
stream = client.chat.completions.create(
    model="GLM-5.2-3BIT-REAP",
    messages=[
        {"role": "user", "content": "Write a short poem about AI"}
    ],
    stream=True
)

for chunk in stream:
    delta = chunk.choices[0].delta
    if getattr(delta, "reasoning_content", None):
        print(delta.reasoning_content, end="", flush=True)  # thinking stream
    if delta.content:
        print(delta.content, end="", flush=True)

Responses API

NEW

POST /v1/responses — the OpenAI Responses dialect: instructions, input items, function_call / function_call_output for tool loops, reasoning summaries as output items. Same models, same key.

Python
from openai import OpenAI

client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.shannon-ai.com/v1")

response = client.responses.create(
    model="shannon-3",
    instructions="You are a concise assistant.",
    input="Summarize the three-way handshake in two sentences.",
    reasoning={"effort": "low"},
)
print(response.output_text)

# Tool loop: function_call items come back in response.output; answer them
# with function_call_output items on the next call.

Streaming emits response.created, reasoning_summary_text.delta, output_text.delta, function_call_arguments.delta and response.completed; a failed generation ends with response.failed. Non-streaming is the default.

Reasoning effort

NEW

Every thinking model streams its trace as reasoning_content deltas (or a thinking block) before the answer, and finish_reason: length tells you the answer hit max_tokens. The depth knob — reasoning_effort on /v1/chat/completions (off, low, medium, high), reasoning.effort on /v1/responses, thinking.budget_tokens on /v1/messages — is read by the hosted open-weight models; the Shannon tiers accept it and choose their own depth. GET /v1/models reports reasoning_effort per model.

Python
from openai import OpenAI

client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.shannon-ai.com/v1")

# reasoning_effort: off | low | medium | high. Read by the hosted open-weight
# models, where it sets how long the solve pass thinks. Shannon tiers accept the
# field and pick their own depth -- GET /v1/models reports which is which.
stream = client.chat.completions.create(
    model="GLM-5.2-3BIT-REAP",
    reasoning_effort="medium",
    stream=True,
    messages=[{"role": "user", "content": "Is 221 prime?"}],
)
for chunk in stream:
    delta = chunk.choices[0].delta
    if getattr(delta, "reasoning_content", None):
        print(delta.reasoning_content, end="", flush=True)   # thinking
    if delta.content:
        print(delta.content, end="", flush=True)             # answer

Prompt caching

AUTOMATIC

The hosted open-weight models cache repeated prompt prefixes automatically. When a request starts with the same system prompt, tools and earlier messages as a recent request on the same model, that shared prefix is read from cache and billed at 25% of the model's input price. There is nothing to enable, and cache writes are free.

How it works

  • Prefix, in order — The prompt is read in order: system prompt, tool definitions, then the messages. The cache matches from the start of that sequence up to the first token that differs.
  • What counts as a hit — A request whose prompt begins with the same content as a recent request — typically the previous turn of the same conversation with new messages appended. The matching prefix is cached input; everything after it is regular input.
  • Granularity — Prompts shorter than roughly 1,500 tokens are not cached. Longer shared prefixes are cached in blocks of about 1,500 tokens, so the last partial block of a shared prefix is billed as regular input.
  • Lifetime — Best effort. Entries typically stay available for a few minutes after their last use and can be evicted sooner under load. A miss changes only the price, never the response.
  • Which models — Every hosted open-weight id. GET /v1/models reports capabilities.prompt_caching: true and pricing.cached_input_per_million_usd for them. Shannon models bill one flat rate.

Pricing

Cached input tokens bill at 25% of the model's input rate, rounded to $0.001 per 1M. Writing to the cache costs nothing extra, and output is billed as usual. Each id's cached rate is in the Models & pricing table.

Example: a 20,000-token prompt on Kimi-K3-3BIT-REAP with 18,000 tokens read from cache bills 2,000 tokens at $3.83 and 18,000 at $0.958 per 1M — $0.0249 of input instead of $0.0766.

Usage fields

Endpoint Cached input Reasoning
/v1/chat/completions usage.prompt_tokens_details.cached_tokens — part of prompt_tokens usage.completion_tokens_details.reasoning_tokens — part of completion_tokens
/v1/responses usage.input_tokens_details.cached_tokens — part of input_tokens usage.output_tokens_details.reasoning_tokens — part of output_tokens
/v1/messages usage.cache_read_input_tokens — reported apart: input_tokens is the uncached part; cache_creation_input_tokens is always 0 thinking is counted in output_tokens
Chat Completions · usage
{
  "usage": {
    "prompt_tokens": 20000,
    "completion_tokens": 812,
    "total_tokens": 20812,
    "prompt_tokens_details": {
      "cached_tokens": 18000
    },
    "completion_tokens_details": {
      "reasoning_tokens": 604
    }
  }
}

Streaming responses carry the same fields in the final usage payload: the last chunk on Chat Completions (with stream_options.include_usage), response.completed on Responses and message_delta on Messages.

Getting more cache hits

  • Keep the system prompt and tool definitions byte-for-byte stable across calls. Put per-call values such as timestamps or request ids at the end of the latest message, not in the system prompt.
  • Only append to the history. Editing, trimming or summarising earlier turns changes the prefix, and everything after the first change is billed as regular input.
  • Do not reorder tools, messages or content blocks between calls, and serialise JSON (tool schemas, tool arguments and results) the same way every time.
  • Stay on one model id for a conversation, and send follow-up calls while the entry is warm — minutes, not hours.

Request fields

prompt_cache_key (Chat Completions and Responses) and cache_control on Messages content blocks are accepted, so existing client code runs unchanged. Neither is required: caching is automatic and works the same without them.

Counting tokens

Two free endpoints count tokens for the hosted open-weight models before you send a request. Counts use each model's own tokenizer and chat template, and the count for a full request equals the input tokens it is billed for. Authenticate with the same API key; Shannon model ids return 400.

Endpoint Body Returns
POST /v1/messages/count_tokens Anthropic-compatible: model, system, messages, tools {"input_tokens": n}
POST /v1/tokenize model and text — counts the text as-is, with no chat formatting {"model": "…", "tokens": n}
POST /v1/tokenize model, messages and optional tools (OpenAI chat format) — counts the full prompt, the billed input {"model": "…", "tokens": n}
cURL · count_tokens
curl https://api.shannon-ai.com/v1/messages/count_tokens \
  -H "x-api-key: YOUR_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Kimi-K3-3BIT-REAP",
    "system": "You are a concise assistant.",
    "messages": [{"role": "user", "content": "Summarise the attached report."}]
  }'

# {"input_tokens": <count>}
cURL · tokenize (text)
curl https://api.shannon-ai.com/v1/tokenize \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "Kimi-K3-3BIT-REAP", "text": "Hello, world"}'

# {"model": "Kimi-K3-3BIT-REAP", "tokens": <count>}
cURL · tokenize (messages)
curl https://api.shannon-ai.com/v1/tokenize \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Kimi-K3-3BIT-REAP",
    "messages": [
      {"role": "system", "content": "You are a concise assistant."},
      {"role": "user", "content": "Summarise the attached report."}
    ],
    "tools": []
  }'

# {"model": "Kimi-K3-3BIT-REAP", "tokens": <count>}

Counting is free and does not draw from your balance. Use it to size a prompt against the context window or to estimate a cost before sending.

Anthropic Format

Drop-in for the Anthropic SDK — point it at our base URL and keep your Messages code.

https://api.shannon-ai.com/v1/messages
Python
import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com"
)

response = client.messages.create(
    model="shannon-3",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ],
    # Tool use (Anthropic format)
    tools=[{
        "name": "web_search",
        "description": "Search the web",
        "input_schema": {
            "type": "object",
            "properties": {
                "query": {"type": "string"}
            },
            "required": ["query"]
        }
    }]
)

print(response.content[0].text)

CLI coding tools

NEW

Use Shannon as the model behind Claude Code, Codex CLI and other agent CLIs.

Claude Code

Anthropic's official CLI coding agent. Point it at Shannon to use as your AI backend for reading, editing, and running code directly in your terminal.

ANTHROPIC_BASE_URL=https://api.shannon-ai.com ANTHROPIC_API_KEY=sk-YOUR_KEY claude

Codex CLI

OpenAI's open-source coding agent. Uses the Responses API for multi-turn tool use, file editing, and shell commands — all routed through Shannon.

OPENAI_BASE_URL=https://api.shannon-ai.com/v1 OPENAI_API_KEY=sk-YOUR_KEY codex

Claude Code

Shell
# Install Claude Code (requires Node.js 18+)
npm install -g @anthropic-ai/claude-code

# Connect to Shannon AI as backend
export ANTHROPIC_BASE_URL=https://api.shannon-ai.com
export ANTHROPIC_API_KEY=sk-YOUR_API_KEY

# Launch Claude Code in bare mode (no Anthropic account needed)
claude

# Or run a one-shot command
claude -p "Explain this codebase"

# Claude Code will use Shannon's Anthropic-compatible API
# for all AI operations: reading files, editing code,
# running tests, and multi-turn tool use.

Codex CLI

Shell
# Install Codex CLI
npm install -g @openai/codex

# Connect to Shannon AI as backend
export OPENAI_BASE_URL=https://api.shannon-ai.com/v1
export OPENAI_API_KEY=sk-YOUR_API_KEY

# Launch Codex
codex

# Or run a one-shot command
codex "fix the bug in main.py"

# Codex uses the Responses API (POST /v1/responses)
# Shannon handles tool calls including:
# - Reading and writing files
# - Running shell commands
# - Multi-turn function calling

SDKs

Any OpenAI or Anthropic SDK works out of the box.

Python

Official OpenAI Python SDK - works with Shannon

pip install openai Documentation →

JavaScript / TypeScript

Official OpenAI Node.js SDK - works with Shannon

npm install openai Documentation →

Go

Community Go client for OpenAI-compatible APIs

go get github.com/sashabaranov/go-openai Documentation →

Ruby

Community Ruby client for OpenAI-compatible APIs

gem install ruby-openai Documentation →

PHP

Community PHP client for OpenAI-compatible APIs

composer require openai-php/client Documentation →

Rust

Async Rust client for OpenAI-compatible APIs

cargo add async-openai Documentation →

Python (Anthropic)

Official Anthropic Python SDK - works with Shannon

pip install anthropic Documentation →

TypeScript (Anthropic)

Official Anthropic TypeScript SDK - works with Shannon

npm install @anthropic-ai/sdk Documentation →

Error Handling

Status Type Meaning
400 Bad Request Invalid request format or parameters
401 Unauthorized Invalid or missing API key
429 Quota Exceeded Token or search quota exceeded
429 Rate Limited Too many requests, slow down
500 Server Error Internal error, retry later

Error body

4xx · JSON
{
  "error": {
    "message": "Invalid API key provided",
    "type": "authentication_error",
    "code": "invalid_api_key"
  }
}

Changelog

2.2.0

2026-03-28
  • New Claude Code support — use Shannon as your Anthropic backend for the official CLI coding agent
  • New Codex CLI support — full Responses API with multi-turn tool use for OpenAI's coding agent
  • Improved Anthropic streaming format fixes — proper content_block lifecycle, tool_use deltas, toolu_ prefixes
  • Improved Schema sanitization for Gemini — strips $schema, additionalProperties, $ref and other unsupported fields from tool schemas

2.1.0

2025-01-03
  • New Added shannon-coder-1 model for Claude Code CLI integration
  • New Call-based quota system for Coder model
  • Improved Improved function calling reliability

2.0.0

2024-12-15
  • New Added Anthropic Messages API compatibility
  • New Multi-turn tool execution (up to 10 iterations)
  • New JSON Schema response format support
  • Improved Enhanced web search with better citations

1.5.0

2024-11-20
  • New Added shannon-deep-dapo model for complex reasoning
  • New Built-in web_search function
  • Improved Reduced latency for streaming responses

1.0.0

2024-10-01
  • New Initial API release
  • New OpenAI-compatible chat completions endpoint
  • New Function calling support
  • New Streaming via Server-Sent Events

Your API Key

GUEST

Sign in to view and manage your API key.

•••••••••••••••• Sign in

Billing

GUEST

Sign in to see your balance. Every API call, hosted or Shannon, draws from the same balance as chat: today's plan allowance first, then purchased credit.

Per-model prices are in the Models & pricing section above. Hosted models bill input, cached input (25% of the input rate) and output separately, counted with each model's own tokenizer; Shannon models bill one flat rate. Both are settled from your balance at $5 per 1M quota tokens. See prices →

Your Usage

Sign in to see your recent API activity.

—
API calls (30 days)
—
Billed tokens (30 days)
—
Cost (30 days)

Cached input is the number of prompt tokens read from the prompt cache on a hosted open-weight call; those tokens are already priced at the cached rate inside Billed tokens and Cost.

Ready to Build?

Free tier included with every account. Your key is one click away.