menu_book

Documentation

API reference, configuration, and subscription guide.

Intro

AI Router gives you a single OpenAI-compatible API endpoint for multiple models hosted in Switzerland. Everything is included in one flat monthly subscription — no per-token pricing, no surprises. This page covers the essentials to get you up and running.

Getting Started

AI Router provides a single OpenAI-compatible API endpoint for all models. Set your base URL, authenticate with an API key, and start sending requests in minutes. No special SDKs needed — any OpenAI client works as a drop-in replacement.

link Base URL

export AIROUTER_BASE_URL="https://api.airouter.ch/v1"

All requests go to this endpoint. The API follows the OpenAI API format for chat completions, embeddings, and streaming.

key Authentication

Authenticate by including your API key in the Authorization header. Keys are generated per user and available in your dashboard after subscribing.

export AIROUTER_API_KEY="sk-your-key-here" curl -H "Authorization: Bearer $AIROUTER_API_KEY" ...

terminal Quick Start

Send your first chat completion with cURL:

curl "https://api.airouter.ch/v1/chat/completions" \ -H "Authorization: Bearer $AIROUTER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen3.8", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What is the capital of Switzerland?"} ], "temperature": 0.6, "max_tokens": 4096 }'

code Python (OpenAI SDK)

Use the official OpenAI Python library — just change the base URL:

from openai import OpenAI client = OpenAI( api_key="sk-your-key-here", base_url="https://api.airouter.ch/v1" ) response = client.chat.completions.create( model="Qwen3.8", messages=[{"role": "user", "content": "Hello!"}] ) print(response.choices[0].message.content)
check_circle
OpenAI-compatible: Any SDK or tool that speaks the OpenAI API format works with AI Router. Just set base_url to https://api.airouter.ch/v1 and use your API key. Works with cURL, Python, Node.js, LangChain, OpenClaw, Claude Code, OpenCode, and more.

Models

AI Router provides access to five models through a single API endpoint. All models are hosted in Switzerland, included in the flat monthly subscription, and accessible via the OpenAI-compatible format.

table LLM Model Comparison

Property Qwen3.8 DeepSeek-V4-Flash
Model IDQwen3.8DeepSeek-V4-Flash
Parameters27B (dense)284B (13B active, MoE)
Context262,144 tokens262,144 tokens
Max output65,536 tokens65,536 tokens
Reasoning
Tool calling
Image input augmented
Structured output
Streaming (SSE) (SSE)
Languages119100+

Qwen3.8

Qwen3.8 is Alibaba's flagship dense model — a 27B-parameter hybrid (DeltaNet + Attention) LLM with native reasoning, vision, and tool calling. It is the default model at AI Router and powers image analysis for DeepSeek-V4-Flash via vision augmentation.

Model IDQwen3.8
Parameters27B (dense)
Context length262,144 tokens
Max output65,536 tokens
Quantization WeightsFP8
Quantization KV CacheFP8
ArchitectureHybrid (DeltaNet + Attention)
Languages119
Reasoning (on by default)
Tool calling
Image input
Streaming (SSE)
HF SlugQwen/Qwen3.8-27B-FP8

DeepSeek-V4-Flash

DeepSeek-V4-Flash is a 284B-parameter Mixture-of-Experts model (13B active) with deep reasoning capabilities. It is text-only; image requests are transparently routed through Qwen3.8 via vision augmentation.

Model IDDeepSeek-V4-Flash
Parameters284B (13B active, MoE)
Context length262,144 tokens
Max output65,536 tokens
Quantization WeightsFP4 + FP8 Mixed
Quantization KV CacheFP8
ArchitectureMoE (CSA + HCA)
Languages100+
Reasoning
Tool calling
Image input (augmented)
Streaming (SSE)
HF Slugdeepseek-ai/DeepSeek-V4-Flash-0731

Qwen3-Embedding

Qwen3-Embedding 4B is Alibaba's embedding model, served at 2,560 dimensions with a 32K context window. It understands 100+ languages including programming languages, making it suitable for RAG, semantic search, and code retrieval.

Model IDQwen3-Embedding
Parameters4B (dense)
Context length32,768 tokens
Quantization WeightsQ6_K
Quantization KV CacheQ8_0
ArchitectureDecoder-Only Transformer
Embedding Dimension2,560
Languages100+ (incl. code)
Endpoint/v1/embeddings
HF SlugQwen/Qwen3-Embedding-4B-GGUF

Whisper STT

Whisper large-v3-turbo is OpenAI's speech-to-text model — 809M parameters, running ~50× realtime on dedicated GPU infrastructure. It transcribes audio in 99+ languages, robust to noise and accents.

Model IDwhisper-large-v3-turbo
Parameters809M
Context length<25 MB (audio)
Quantizationint8_float16
Speed~50× realtime
ArchitectureEncoder-Decoder
Inputmp3, wav, m4a, ogg, webm
Languages99+
Endpoint/v1/audio/transcriptions
HF Slugopenai/whisper-large-v3-turbo

Kokoro TTS

Kokoro is a compact 82M-parameter text-to-speech model (StyleTTS 2 + ISTFTNet) with 68 natural voices across 10 languages. It synthesizes speech ~74× faster than realtime, with an input cap of 1K tokens (~5 minutes of audio) per request.

Model IDkokoro
Parameters82M
Context length1K tokens (~5 min audio)
QuantizationFP32
Speed~74× realtime
ArchitectureStyleTTS 2 + ISTFTNet
Outputmp3, wav, opus, flac, aac, pcm
Voices68 (10 languages)
Endpoint/v1/audio/speech
HF Slughexgrad/Kokoro-82M
info
Voices list endpoint: fetch the live list of all 68 voices with GET /v1/audio/voices — see Kokoro Voices under Configuration for the full list and usage.

DeepSeek Vision Augmentation

DeepSeek-V4-Flash is a text-only model and does not natively support image inputs. AI Router bridges this gap by automatically routing image-containing requests through Qwen3.8, which natively supports vision. The augmentation is transparent — you send the same OpenAI-compatible request with image content and we handle the rest.

swap_horiz How It Works

  1. Send your request — Include image content in the usual OpenAI format (content: [{ "type": "image_url", ... }]) using DeepSeek-V4-Flash as the model.
  2. Augmentation detects image content — The middleware detects image data in your request and routes it to Qwen3.8 for visual processing.
  3. Seamless response — You get a response as if DeepSeek handled the image itself. No special endpoint, no extra configuration.
  4. Follow-up turns use DeepSeek — Subsequent messages in the same conversation are routed back to DeepSeek-V4-Flash, including the image analysis context from Qwen3.8. DeepSeek reasons over the visual information and continues the conversation normally.
info
Transparent: Use the same SDK, same endpoint, same API key. Vision augmentation is applied automatically when needed.

Configuration

All models support standard OpenAI-compatible parameters. API calls always use the model's built-in defaults unless you override them. Below are the parameters you're most likely to need.

tune Model Setup

Qwen3.8 default: temperature 0.6 is the recommended default for thinking mode (with top_p 0.95, top_k 20, min_p 0). This gives a good balance of determinism and creativity for most tasks.

info
Default temperature: 0.6 for Qwen3.8 (thinking mode). DeepSeek-V4-Flash uses reasoning_effort instead — sampling parameters are silently ignored while thinking mode is enabled.

psychology reasoning_effort

Controls how much reasoning computation the model performs before responding. Higher effort → more thorough reasoning, higher latency, better results on complex tasks. Default is "medium".

ValueQwen3.8DeepSeekActual behavior
"none" Reasoning off. Direct answer, no chain-of-thought. Qwen3.8 only.
"low" Light reasoning. Faster responses, less thorough analysis. Qwen3.8 only.
"medium" Default. Balanced reasoning. Good for most tasks. Qwen3.8 only.
"high" DeepSeek's standard reasoning level.
"xhigh" Maximum reasoning. Higher latency, best for hard problems.
info
DeepSeek mapping reference: "none" / "low" / "medium" are not accepted — use "high" or "xhigh". "xhigh""max" internally. Non-thinking mode is not available through reasoning_effort and is not currently supported at AI Router for DeepSeek.
info
Qwen3.8: Reasoning is on by default at "medium" effort. "none" disables reasoning; "low", "medium", and "xhigh" select increasing reasoning depth. "max" is not accepted — the API returns a 400 error; use "xhigh" instead.

thermostat Sampling Parameters

ParameterTypeRangeDefaultDescription
temperature number 0.0 – 2.0 0.6 (Qwen3.8) Controls randomness. Lower → deterministic, higher → creative. At 0, the model always picks the most likely token. 0.6 is the AI Router default for Qwen3.8 thinking mode.
top_p number 0.0 – 1.0 1.0 Nucleus sampling — only tokens whose cumulative probability reaches top_p are considered. Adjust one or the other, not both.
top_k integer 0 – 100 20 Limits the sampling pool to the k most likely tokens. 0 = disabled (all tokens considered).
min_p number 0.0 – 1.0 0 Minimum token probability relative to the most likely token. Dynamically filters unlikely tokens. 0 = disabled.
presence_penalty number -2.0 – 2.0 0 Penalizes tokens that have already appeared, encouraging the model to introduce new topics. 0 = no penalty.
repetition_penalty number 1.0 – 2.0 1 Penalizes tokens based on their frequency in the output. 1.0 = no penalty; higher values discourage repetition.
info
Qwen3.8 recommended values (model card): Thinking: temperature 0.6, top_p 0.95, top_k 20, min_p 0. Non-thinking: temperature 0.7, top_p 0.8, top_k 20, min_p 0. Avoid greedy decoding (temperature 0) in thinking mode.
warning
DeepSeek thinking mode: Temperature, top_p, presence_penalty, and frequency_penalty have no effect when thinking mode is enabled (default). They are silently ignored. Sampling parameters are meaningful for Qwen3.8 only.

data_thresholding Max Tokens & Stop

ParameterTypeMaxDefaultDescription
max_tokens integer 65,536 Maximum tokens the model can generate in a single response. Up to ~197K output available (262K context minus input).

record_voice_over Kokoro Voices

Kokoro ships with 68 voices across 10 languages. Voice IDs follow the pattern <gender><lang>_<name> — e.g. af_bella = American English (a), female (f), "bella". The second letter is the gender (f = female, m = male).

CodeLanguageVoices (F+M)
aAmerican English (en-US)12 + 9 (21)
bBritish English (en-GB)4 + 4 (8)
eSpanish (es)1 + 2 (3)
fFrench (fr)1 + 0 (1)
hHindi (hi)2 + 2 (4)
iItalian (it)1 + 1 (2)
jJapanese (ja)4 + 1 (5)
pBrazilian Portuguese (pt)1 + 2 (3)
zMandarin Chinese (zh)4 + 4 (8)
v0Legacy v0.19 voices8 + 5 (13)

Fetch the live list:

curl "https://api.airouter.ch/v1/audio/voices" \ -H "Authorization: Bearer $AIROUTER_API_KEY"

Returns {"voices": [{"id": "af_bella", "name": "..."}, ...]}. The default voice is af_heart.

All 68 voices:

Voice IDGenderLanguage
af_alloyFen-US (American English)
af_aoedeFen-US (American English)
af_bellaFen-US (American English)
af_heartFen-US (American English)
af_jadziaFen-US (American English)
af_jessicaFen-US (American English)
af_koreFen-US (American English)
af_nicoleFen-US (American English)
af_novaFen-US (American English)
af_riverFen-US (American English)
af_sarahFen-US (American English)
af_skyFen-US (American English)
am_adamMen-US (American English)
am_echoMen-US (American English)
am_ericMen-US (American English)
am_fenrirMen-US (American English)
am_liamMen-US (American English)
am_michaelMen-US (American English)
am_onyxMen-US (American English)
am_puckMen-US (American English)
am_santaMen-US (American English)
bf_aliceFen-GB (British English)
bf_emmaFen-GB (British English)
bf_isabellaFen-GB (British English)
bf_lilyFen-GB (British English)
bm_danielMen-GB (British English)
bm_fableMen-GB (British English)
bm_georgeMen-GB (British English)
bm_lewisMen-GB (British English)
ef_doraFes (Spanish)
em_alexMes (Spanish)
em_santaMes (Spanish)
ff_siwisFfr (French)
hf_alphaFhi (Hindi)
hf_betaFhi (Hindi)
hm_omegaMhi (Hindi)
hm_psiMhi (Hindi)
if_saraFit (Italian)
im_nicolaMit (Italian)
jf_alphaFja (Japanese)
jf_gongitsuneFja (Japanese)
jf_nezumiFja (Japanese)
jf_tebukuroFja (Japanese)
jm_kumoMja (Japanese)
pf_doraFpt (Brazilian Portuguese)
pm_alexMpt (Brazilian Portuguese)
pm_santaMpt (Brazilian Portuguese)
zf_xiaobeiFzh (Mandarin Chinese)
zf_xiaoniFzh (Mandarin Chinese)
zf_xiaoxiaoFzh (Mandarin Chinese)
zf_xiaoyiFzh (Mandarin Chinese)
zm_yunjianMzh (Mandarin Chinese)
zm_yunxiMzh (Mandarin Chinese)
zm_yunxiaMzh (Mandarin Chinese)
zm_yunyangMzh (Mandarin Chinese)
af_v0FLegacy v0.19
af_v0bellaFLegacy v0.19
af_v0irulanFLegacy v0.19
af_v0nicoleFLegacy v0.19
af_v0sarahFLegacy v0.19
af_v0skyFLegacy v0.19
bf_v0emmaFLegacy v0.19
bf_v0isabellaFLegacy v0.19
bm_v0georgeMLegacy v0.19
bm_v0lewisMLegacy v0.19
am_v0adamMLegacy v0.19
am_v0gurneyMLegacy v0.19
am_v0michaelMLegacy v0.19

Subscription

AI Router uses a simple flat-rate subscription model. One price, unlimited access, no surprises. Below is everything you need to know about subscribing, what you get, and how billing works.

Individual / Freelancer

One flat price, unlimited access to all models — perfect for solo developers, freelancers, hobbyists, and personal projects.

how_to_reg How to Subscribe

  1. Visit airouter.ch — Click "Subscribe Now" on the landing page. You'll be redirected to Stripe's secure checkout.
  2. Complete payment — Enter your email and payment details. Stripe handles all billing — we never see your card information.
  3. Receive your API key — Immediately after successful payment, your API key is generated and available in your dashboard. You'll also receive a welcome email.
  4. Set a password — Follow the link in your welcome email or visit the dashboard to set a password for account access.
  5. Start building — Use your API key with any OpenAI-compatible SDK. No further setup required.
check_circle
Already subscribed? Head to your dashboard to view your API key, manage your subscription, or generate additional keys.

visibility What You Get

Unlimited API requests (fair use)
Qwen3.8 + DeepSeek-V4-Flash
262K context window
Qwen3-Embedding access
Vision & image input
OpenAI-compatible API
Streaming support (SSE)
Swiss-hosted, no prompt logging
Reasoning & tool calling
Dashboard & key management

All prices in CHF. Swiss VAT may apply depending on your location. Subscriptions are billed monthly. Cancel anytime — access remains active until the end of the current billing period.

Teams / Business

For teams and organizations that need multi-seat access, consolidated billing, and custom pricing. Business accounts are invitation-only — contact us to get started.

business Features

👥 Multi-seat

One account, multiple API keys

📄 Custom invoices

Tailored to your billing

📊 Volume discounts

Scales with team size

Contact support@airouter.ch to discuss your requirements.

Cancellation

You can cancel your subscription at any time via the Stripe customer portal, accessible from your dashboard. After cancellation, access remains active until the end of the current billing period.

If you need assistance, reach out to support@airouter.ch.