Qwen3.8 Flash API
AvailableQwen3.8 Flash is the small, fast member of the Qwen3.8 family. It takes up to 1,048,576 tokens in one request, bills cached prompt prefixes at a fraction of the input rate, and reasons before answering unless you turn that off. On our 2026-09-22 check it passed all five of our tool-call, JSON, arithmetic, code and instruction tests and streamed at about 78 tokens per second with eight concurrent requests all answered.
Quickstart
Set INFERENCE_API_KEY to your key from the API Keys page, then run:
curl https://api.inferenceapis.com/v1/chat/completions \
-H "Authorization: Bearer $INFERENCE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3.8-Flash",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello! What can you do?"}
]
}'
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.inferenceapis.com/v1",
api_key=os.environ["INFERENCE_API_KEY"],
)
response = client.chat.completions.create(
model="Qwen/Qwen3.8-Flash",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello! What can you do?"},
],
)
print(response.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.inferenceapis.com/v1",
apiKey: process.env.INFERENCE_API_KEY,
});
const response = await client.chat.completions.create({
model: "Qwen/Qwen3.8-Flash",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Hello! What can you do?" },
],
});
console.log(response.choices[0].message.content);
When to use it
- You want a fast, inexpensive model with a 1M-token window and prompt caching
- Long-document summarisation and extraction where the whole file goes in one request
- You need vision; use Qwen3-VL 235B
- You need the strongest coding model; GLM 5.3 and DeepSeek V4 Pro rank higher
What it costs in practice
| Workload | Cost |
|---|---|
| Chat assistant — 10,000 turns of 800 tokens in, 300 out | $2.70 |
| Long prompts or RAG — 10,000 requests of 8,000 in, 500 out | $14.50 |
| Generation-heavy — 10,000 requests of 500 in, 2,000 out | $10.75 |
Computed from the live rates below. This is a reasoning model, and thinking is billed as output, so real output counts run above the visible answer; see controlling reasoning to keep that down. There is no subscription or minimum; new accounts start with free credit.
Endpoint
Content-Type: application/json
/openai/v1/… is accepted too, so Groq-style base URLs work with only the host changed.
Model IDs and aliases
Send any of these as model; they all resolve to this model and bill at its rate.
| ID | Note |
|---|---|
Qwen/Qwen3.8-Flash | Canonical |
qwen3.8-flash | Alias |
Request body
| Parameter | Type | Description |
|---|---|---|
model required |
string | Model ID: Qwen/Qwen3.8-Flash — also accepted: qwen3.8-flash |
messages required |
array | Conversation so far. Each item has a role (system, user or assistant) and content. |
max_tokens |
integer | Maximum number of tokens to generate (includes reasoning tokens — use a few hundred or more). |
temperature |
number | Sampling temperature. Higher values give more varied output. |
top_p |
number | Nucleus sampling cutoff. |
stream |
boolean | Stream the response as server-sent events. The final chunk includes usage. |
tools |
array | Tool definitions for function calling (OpenAI format). |
response_format |
object | {"type": "json_object"} for JSON mode. |
stop |
string | array | Sequences where the model stops generating. |
seed |
integer | Seed for more reproducible sampling. |
Response
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"model": "Qwen/Qwen3.8-Flash",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hi! I can answer questions, write and edit text, help with code and more.",
"reasoning": "The user is greeting me and asking about capabilities..."
},
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 28, "completion_tokens": 17, "total_tokens": 45 }
}
Controlling reasoning
Send reasoning_effort: "none" to switch thinking off. Model families disagree on the parameter for this, and the wrong one is silently ignored, so the gateway accepts one spelling on every model (also "minimal", reasoning: {"enabled": false} and thinking: {"type": "disabled"}) and sends the switch this model honours; the X-Thinking: off response header confirms it. On the Responses API use reasoning: {"effort": "minimal"}. Leave thinking on for multi-step coding and maths; turn it off for extraction, classification, routing and chat. All models compared.
resp = client.chat.completions.create(
model="Qwen/Qwen3.8-Flash",
reasoning_effort="none", # thinking off; omit it to let the model reason
messages=[{"role": "user", "content": "Extract the invoice number from: ..."}],
max_tokens=500,
)
print(resp.choices[0].message.content)Token counts are single measurements from September 17, 2026 and vary with the question; the direction is what matters.
Pricing
| Input | $0.15 / 1M tokens |
| Cached input | $0.02 / 1M tokens |
| Output | $0.50 / 1M tokens |
| Billing | Pay as you go from prepaid credits. No subscription, no daily request or token cap. See all pricing. |
Notes
- Reasoning is on by default and shows up as
reasoning_content. Sendreasoning_effort: "none"to switch it off; the gateway translates that to the switch this model actually honours. - Cached input: when the start of your prompt matches a recent request, those tokens bill at the cached-input rate automatically.
Compare Qwen3.8 Flash with…
Errors
Errors use the OpenAI envelope: {"error": {"message", "type", "code"}}. 401 missing or invalid key · 402 insufficient_balance · 404 model_not_found · 503 model_unavailable · 502 backend error, safe to retry. Full table with what to retry: API documentation. Errors from other providers: provider error reference.
