Skip to content

Models overview

One page per model. Everything on these pages was measured against the live endpoint, so where a model disagrees with its upstream documentation, these pages follow the endpoint.

GET /v1/models is the source of truth for which models exist right now; it currently returns two.

DeepSeek-V4-FlashQwen3.8-Flash-Next
Vendor buildDeepSeek-V4-Flash-0731Qwen3.8-Flash-Next-FP8
Parameters43 layers, 256+1 experts, 6 activated125B total / 6B activated, 512 experts, 10+1 activated
AttentionMLA — 64 Q heads, 1 KV headHybrid — 36 linear-attention layers + 12 QSA layers
LicenceMITQwen Community License 1.0
Context1,048,576262,144
Inputtexttext
Streaming
Tool calling
Parallel tool calls
response_format: json_object
response_format: json_schema
Image input
Thinking
Thinks when reasoning_effort omitted
Usable reasoning_effort tiersminimal low medium high xhigh maxlow medium only
usage.reasoning_tokens
system anywhere in messages❌ first position only
More than one system
developer role

The messages differences trace back to one thing: Qwen ships a Jinja chat template that raises on anything but a single leading system message, and DeepSeek ships no Jinja template at all.

The intersection that works on every model today:

  • one system message, at index 0, using the role name system — not developer
  • reasoning_effort set explicitly to low or medium, never omitted
  • read thinking text from choices[0].message.reasoning
  • read thinking token count from usage.completion_tokens_details.reasoning_tokens
  • response_format: {"type": "json_object"} for JSON, never json_schema
  • text-only content

These hold regardless of which model you call:

Accepted parameterstemperature, max_tokens, top_p, stream, response_format, tools, tool_choice
Dropped silentlystop, seed, logit_bias, logprobs, top_logprobs, top_k, min_p, repetition_penalty
thinking parameterRejected with 400 — use reasoning_effort
Tokenizer reportedGPT
Stabilityexperimental

Anything outside the accepted set is removed before the request reaches the serving backend — no error, no effect. If you need those parameters, run a dedicated endpoint, which passes your body straight through to vLLM or SGLang.