Qwen3.8 Max is the flagship tier of Alibaba's Qwen3.8 family, a sparse mixture-of-experts multimodal model with roughly 2.4 trillion total parameters of which about 95 billion activate per token, which keeps serving cost and latency well below what the total parameter count would imply. It builds on the architectural foundation established by Qwen3.5 and accepts text, images, video, and documents as input while producing text output. Reported context handling reaches close to one million tokens, with a maximum generation length of 131,072 tokens, so the model is aimed at long-horizon agentic work such as repository-scale coding, multi-step research, data analysis, and office document workflows.
For vision work the model performs image and video understanding, document and chart interpretation, text recognition inside images, and grounded visual question answering, and Alibaba reports gains concentrated in multimodal and agentic evaluation categories rather than general reasoning. Published figures include 86.6 on Terminal-Bench 2.1, 67.7 on SWE-bench Pro, 93.0 on PaperBench, 82.8 on IFBench, and 92.6 on GPQA Diamond. It is the first model in the Max tier of the Qwen line for which the team states weights will be released publicly, alongside a smaller Qwen3.8 27B checkpoint. No training or safety model card has been published.
Drag and drop an image here, or click to browse
Captioning will run automatically
—
Usage
Past 30 DaysVision Evals is Roboflow's ground-truth benchmark: every model runs the same real-world samples across six vision tasks, and answers are scored against ground truth.
Evals updated August 3, 2026Pricing updated August 5, 2026
Qwen3.8 Max averages 84.0% across the six Vision Evals tasks, ranking #2 of 24 models overall.
It leads the field in Object Detection and Counting.
Its weakest relative showing is Data Extraction, ranking #9 of 24 at 87.6%.
At $0.0074 per sample it is the 16th cheapest of the 24 benchmarked models, and its average inference time of 18.0s per sample makes it the 23rd fastest.
Field medians: Object Detection 56.0%, Counting 62.2%, Identification 84.4%, OCR 89.1%, Data Extraction 86.6%, Reasoning 55.3%.
| Task | Score | Field (0 to 100) | Rank | Cost / sample | Speed |
|---|---|---|---|---|---|
| Object Detection | 77.1% | #1 of 24 | $0.013 | 30.49s | |
| Counting | 82.4% | #1 of 24 | $0.0046 | 11.37s | |
| Identification | 90.6% | #7 of 24 | $0.0027 | 7.16s | |
| OCR | 92.8% | #5 of 24 | $0.0056 | 14.68s | |
| Data Extraction | 87.6% | #9 of 24 | $0.0029 | 5.59s | |
| Reasoning (low) | 73.5% | #4 of 24 | $0.0047 | 11.76s | |
| Reasoning (high) | 80.8% | #2 of 24 | $0.011 | 32.95s |
Overall benchmark score against estimated cost per sample. Upper-left is the sweet spot: high quality at low cost.
24 models on the current benchmark · scores and efficiency pooled across all six tasks at low effort · Qwen3.8-Max highlighted
Qwen3.8 Max scores from a single evaluation run · Methodology
View all Vision Evals →Qwen3.8 Max costs $2.00 per 1M input tokens and $6.00 per 1M output tokens.
Pricing updated Aug 5, 2026
Qwen3.8 Max runs as a hosted REST endpoint through Roboflow Workflows. Pick a task, then hand the prompt to your coding agent or copy the code. Forking the workflow into a free Roboflow workspace replaces the your-workspace and YOUR_API_KEY placeholders with your own.
Add the Roboflow MCP server
claude mcp add --transport http roboflow https://mcp.roboflow.com/mcp
Run /mcp and authorize Roboflow in your browser when the OAuth flow opens.
Start a new Claude Code session so the MCP loads, then paste the prompt below (it works the same in any agent).
Fork this workflow to your Roboflow workspace to use it.
Integrate the Roboflow "Qwen3.8 Max" workflow into my app.
- Endpoint: POST https://serverless.roboflow.com/<your-workspace>/workflows/playground-qwen3-8-max-c
- Auth: send my Roboflow API key as `api_key` in the request body, read from the ROBOFLOW_API_KEY env var (never hardcode).
- Body: { "api_key": ..., "inputs": { `image`: { type: "url" | "base64", value }, `model_api_key`: my provider key } }.
With the Roboflow MCP connected, call `workflows_get` on "playground-qwen3-8-max-c" to read the exact input schema and treat it as the source of truth. A live `workflows_run` for this workflow also needs my OpenRouter key (`model_api_key`) passed as a runtime parameter; if you don't have it yet, skip the test run — it will fail with a server error without the provider key, which is expected and not a problem with your code — and rely on the schema. Validate the real run via the REST call once the keys below are set. Without the MCP, use the contract above.
Before running the app, set up these keys so it does not error at runtime:
- `ROBOFLOW_API_KEY` (sent as `api_key`) from https://app.roboflow.com/settings/api
- `OPENROUTER_API_KEY` (sent as `model_api_key`) from https://openrouter.ai/keys — my OpenRouter key
Create a .gitignore'd .env with these variables, using placeholder values for any I haven't given you. Then pause and tell me directly, in your reply: the full path to the .env file, exactly which keys I need to paste in, and the link to get each one. Wait for me to confirm I've added them before you run anything. Do not run the app until I confirm.
Then add the integration to my codebase: match my project's language, framework, and conventions; read every key from environment variables (never hardcode); add basic error handling; and include a small runnable example. If you can't tell what language my project uses, ask me.pip install inference-sdkFork this workflow to your Roboflow workspace to use it.
# 1. Import the library
from inference_sdk import InferenceHTTPClient
# 2. Connect to your workflow
client = InferenceHTTPClient(
api_url="https://serverless.roboflow.com",
api_key="YOUR_API_KEY"
)
# 3. Run your workflow on an image
result = client.run_workflow(
workspace_name="your-workspace",
workflow_id="playground-qwen3-8-max-c",
images={
"image": "YOUR_IMAGE.jpg" # Path to your image file
},
parameters={
"model_api_key": "YOUR_OPENROUTER_API_KEY"
},
use_cache=True # cache workflow definition for 15 minutes
)
# 4. Get your results
print(result)Fork this workflow to your Roboflow workspace to use it.
const response = await fetch('https://serverless.roboflow.com/your-workspace/workflows/playground-qwen3-8-max-c', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
api_key: 'YOUR_API_KEY',
inputs: {
"image": {"type": "url", "value": "IMAGE_URL"},
"model_api_key": "YOUR_OPENROUTER_API_KEY"
}
})
});
const result = await response.json();
console.log(result);Fork this workflow to your Roboflow workspace to use it.
curl --location 'https://serverless.roboflow.com/your-workspace/workflows/playground-qwen3-8-max-c' \
--header 'Content-Type: application/json' \
--data '{
"api_key": "YOUR_API_KEY",
"inputs": {
"image": {"type": "url", "value": "IMAGE_URL"},
"model_api_key": "YOUR_OPENROUTER_API_KEY"
}
}'Add the Roboflow MCP server
claude mcp add --transport http roboflow https://mcp.roboflow.com/mcp
Run /mcp and authorize Roboflow in your browser when the OAuth flow opens.
Start a new Claude Code session so the MCP loads, then paste the prompt below (it works the same in any agent).
Fork this workflow to your Roboflow workspace to use it.
Integrate the Roboflow "Qwen3.8 Max" workflow into my app.
- Endpoint: POST https://serverless.roboflow.com/<your-workspace>/workflows/playground-qwen3-8-max-op
- Auth: send my Roboflow API key as `api_key` in the request body, read from the ROBOFLOW_API_KEY env var (never hardcode).
- Body: { "api_key": ..., "inputs": { `image`: { type: "url" | "base64", value }, `prompt`: text, `model_api_key`: my provider key } }.
With the Roboflow MCP connected, call `workflows_get` on "playground-qwen3-8-max-op" to read the exact input schema and treat it as the source of truth. A live `workflows_run` for this workflow also needs my OpenRouter key (`model_api_key`) passed as a runtime parameter; if you don't have it yet, skip the test run — it will fail with a server error without the provider key, which is expected and not a problem with your code — and rely on the schema. Validate the real run via the REST call once the keys below are set. Without the MCP, use the contract above.
Before running the app, set up these keys so it does not error at runtime:
- `ROBOFLOW_API_KEY` (sent as `api_key`) from https://app.roboflow.com/settings/api
- `OPENROUTER_API_KEY` (sent as `model_api_key`) from https://openrouter.ai/keys — my OpenRouter key
Create a .gitignore'd .env with these variables, using placeholder values for any I haven't given you. Then pause and tell me directly, in your reply: the full path to the .env file, exactly which keys I need to paste in, and the link to get each one. Wait for me to confirm I've added them before you run anything. Do not run the app until I confirm.
Then add the integration to my codebase: match my project's language, framework, and conventions; read every key from environment variables (never hardcode); add basic error handling; and include a small runnable example. If you can't tell what language my project uses, ask me.pip install inference-sdkFork this workflow to your Roboflow workspace to use it.
# 1. Import the library
from inference_sdk import InferenceHTTPClient
# 2. Connect to your workflow
client = InferenceHTTPClient(
api_url="https://serverless.roboflow.com",
api_key="YOUR_API_KEY"
)
# 3. Run your workflow on an image
result = client.run_workflow(
workspace_name="your-workspace",
workflow_id="playground-qwen3-8-max-op",
images={
"image": "YOUR_IMAGE.jpg" # Path to your image file
},
parameters={
"prompt": "Describe what you see in the image",
"model_api_key": "YOUR_OPENROUTER_API_KEY"
},
use_cache=True # cache workflow definition for 15 minutes
)
# 4. Get your results
print(result)Fork this workflow to your Roboflow workspace to use it.
const response = await fetch('https://serverless.roboflow.com/your-workspace/workflows/playground-qwen3-8-max-op', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
api_key: 'YOUR_API_KEY',
inputs: {
"image": {"type": "url", "value": "IMAGE_URL"},
"prompt": "Describe what you see in the image",
"model_api_key": "YOUR_OPENROUTER_API_KEY"
}
})
});
const result = await response.json();
console.log(result);Fork this workflow to your Roboflow workspace to use it.
curl --location 'https://serverless.roboflow.com/your-workspace/workflows/playground-qwen3-8-max-op' \
--header 'Content-Type: application/json' \
--data '{
"api_key": "YOUR_API_KEY",
"inputs": {
"image": {"type": "url", "value": "IMAGE_URL"},
"prompt": "Describe what you see in the image",
"model_api_key": "YOUR_OPENROUTER_API_KEY"
}
}'Add the Roboflow MCP server
claude mcp add --transport http roboflow https://mcp.roboflow.com/mcp
Run /mcp and authorize Roboflow in your browser when the OAuth flow opens.
Start a new Claude Code session so the MCP loads, then paste the prompt below (it works the same in any agent).
Fork this workflow to your Roboflow workspace to use it.
Integrate the Roboflow "Qwen3.8 Max" workflow into my app.
- Endpoint: POST https://serverless.roboflow.com/<your-workspace>/workflows/playground-qwen3-8-max-mlc
- Auth: send my Roboflow API key as `api_key` in the request body, read from the ROBOFLOW_API_KEY env var (never hardcode).
- Body: { "api_key": ..., "inputs": { `image`: { type: "url" | "base64", value }, `classes`: string array, `model_api_key`: my provider key } }.
With the Roboflow MCP connected, call `workflows_get` on "playground-qwen3-8-max-mlc" to read the exact input schema and treat it as the source of truth. A live `workflows_run` for this workflow also needs my OpenRouter key (`model_api_key`) passed as a runtime parameter; if you don't have it yet, skip the test run — it will fail with a server error without the provider key, which is expected and not a problem with your code — and rely on the schema. Validate the real run via the REST call once the keys below are set. Without the MCP, use the contract above.
Before running the app, set up these keys so it does not error at runtime:
- `ROBOFLOW_API_KEY` (sent as `api_key`) from https://app.roboflow.com/settings/api
- `OPENROUTER_API_KEY` (sent as `model_api_key`) from https://openrouter.ai/keys — my OpenRouter key
Create a .gitignore'd .env with these variables, using placeholder values for any I haven't given you. Then pause and tell me directly, in your reply: the full path to the .env file, exactly which keys I need to paste in, and the link to get each one. Wait for me to confirm I've added them before you run anything. Do not run the app until I confirm.
Then add the integration to my codebase: match my project's language, framework, and conventions; read every key from environment variables (never hardcode); add basic error handling; and include a small runnable example. If you can't tell what language my project uses, ask me.pip install inference-sdkFork this workflow to your Roboflow workspace to use it.
# 1. Import the library
from inference_sdk import InferenceHTTPClient
# 2. Connect to your workflow
client = InferenceHTTPClient(
api_url="https://serverless.roboflow.com",
api_key="YOUR_API_KEY"
)
# 3. Run your workflow on an image
result = client.run_workflow(
workspace_name="your-workspace",
workflow_id="playground-qwen3-8-max-mlc",
images={
"image": "YOUR_IMAGE.jpg" # Path to your image file
},
parameters={
"classes": ["class1", "class2", "class3"],
"model_api_key": "YOUR_OPENROUTER_API_KEY"
},
use_cache=True # cache workflow definition for 15 minutes
)
# 4. Get your results
print(result)Fork this workflow to your Roboflow workspace to use it.
const response = await fetch('https://serverless.roboflow.com/your-workspace/workflows/playground-qwen3-8-max-mlc', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
api_key: 'YOUR_API_KEY',
inputs: {
"image": {"type": "url", "value": "IMAGE_URL"},
"classes": ["class1", "class2", "class3"],
"model_api_key": "YOUR_OPENROUTER_API_KEY"
}
})
});
const result = await response.json();
console.log(result);Fork this workflow to your Roboflow workspace to use it.
curl --location 'https://serverless.roboflow.com/your-workspace/workflows/playground-qwen3-8-max-mlc' \
--header 'Content-Type: application/json' \
--data '{
"api_key": "YOUR_API_KEY",
"inputs": {
"image": {"type": "url", "value": "IMAGE_URL"},
"classes": ["class1", "class2", "class3"],
"model_api_key": "YOUR_OPENROUTER_API_KEY"
}
}'Add the Roboflow MCP server
claude mcp add --transport http roboflow https://mcp.roboflow.com/mcp
Run /mcp and authorize Roboflow in your browser when the OAuth flow opens.
Start a new Claude Code session so the MCP loads, then paste the prompt below (it works the same in any agent).
Fork this workflow to your Roboflow workspace to use it.
Integrate the Roboflow "Qwen3.8 Max" workflow into my app.
- Endpoint: POST https://serverless.roboflow.com/<your-workspace>/workflows/playground-qwen3-8-max-od
- Auth: send my Roboflow API key as `api_key` in the request body, read from the ROBOFLOW_API_KEY env var (never hardcode).
- Body: { "api_key": ..., "inputs": { `image`: { type: "url" | "base64", value }, `classes`: string array, `model_api_key`: my provider key } }.
With the Roboflow MCP connected, call `workflows_get` on "playground-qwen3-8-max-od" to read the exact input schema and treat it as the source of truth. A live `workflows_run` for this workflow also needs my OpenRouter key (`model_api_key`) passed as a runtime parameter; if you don't have it yet, skip the test run — it will fail with a server error without the provider key, which is expected and not a problem with your code — and rely on the schema. Validate the real run via the REST call once the keys below are set. Without the MCP, use the contract above.
Before running the app, set up these keys so it does not error at runtime:
- `ROBOFLOW_API_KEY` (sent as `api_key`) from https://app.roboflow.com/settings/api
- `OPENROUTER_API_KEY` (sent as `model_api_key`) from https://openrouter.ai/keys — my OpenRouter key
Create a .gitignore'd .env with these variables, using placeholder values for any I haven't given you. Then pause and tell me directly, in your reply: the full path to the .env file, exactly which keys I need to paste in, and the link to get each one. Wait for me to confirm I've added them before you run anything. Do not run the app until I confirm.
Then add the integration to my codebase: match my project's language, framework, and conventions; read every key from environment variables (never hardcode); add basic error handling; and include a small runnable example. If you can't tell what language my project uses, ask me.pip install inference-sdkFork this workflow to your Roboflow workspace to use it.
# 1. Import the library
from inference_sdk import InferenceHTTPClient
# 2. Connect to your workflow
client = InferenceHTTPClient(
api_url="https://serverless.roboflow.com",
api_key="YOUR_API_KEY"
)
# 3. Run your workflow on an image
result = client.run_workflow(
workspace_name="your-workspace",
workflow_id="playground-qwen3-8-max-od",
images={
"image": "YOUR_IMAGE.jpg" # Path to your image file
},
parameters={
"classes": ["class1", "class2", "class3"],
"model_api_key": "YOUR_OPENROUTER_API_KEY"
},
use_cache=True # cache workflow definition for 15 minutes
)
# 4. Get your results
print(result)Fork this workflow to your Roboflow workspace to use it.
const response = await fetch('https://serverless.roboflow.com/your-workspace/workflows/playground-qwen3-8-max-od', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
api_key: 'YOUR_API_KEY',
inputs: {
"image": {"type": "url", "value": "IMAGE_URL"},
"classes": ["class1", "class2", "class3"],
"model_api_key": "YOUR_OPENROUTER_API_KEY"
}
})
});
const result = await response.json();
console.log(result);Fork this workflow to your Roboflow workspace to use it.
curl --location 'https://serverless.roboflow.com/your-workspace/workflows/playground-qwen3-8-max-od' \
--header 'Content-Type: application/json' \
--data '{
"api_key": "YOUR_API_KEY",
"inputs": {
"image": {"type": "url", "value": "IMAGE_URL"},
"classes": ["class1", "class2", "class3"],
"model_api_key": "YOUR_OPENROUTER_API_KEY"
}
}'Add the Roboflow MCP server
claude mcp add --transport http roboflow https://mcp.roboflow.com/mcp
Run /mcp and authorize Roboflow in your browser when the OAuth flow opens.
Start a new Claude Code session so the MCP loads, then paste the prompt below (it works the same in any agent).
Fork this workflow to your Roboflow workspace to use it.
Integrate the Roboflow "Qwen3.8 Max" workflow into my app.
- Endpoint: POST https://serverless.roboflow.com/<your-workspace>/workflows/playground-qwen3-8-max-ocr
- Auth: send my Roboflow API key as `api_key` in the request body, read from the ROBOFLOW_API_KEY env var (never hardcode).
- Body: { "api_key": ..., "inputs": { `image`: { type: "url" | "base64", value }, `model_api_key`: my provider key } }.
With the Roboflow MCP connected, call `workflows_get` on "playground-qwen3-8-max-ocr" to read the exact input schema and treat it as the source of truth. A live `workflows_run` for this workflow also needs my OpenRouter key (`model_api_key`) passed as a runtime parameter; if you don't have it yet, skip the test run — it will fail with a server error without the provider key, which is expected and not a problem with your code — and rely on the schema. Validate the real run via the REST call once the keys below are set. Without the MCP, use the contract above.
Before running the app, set up these keys so it does not error at runtime:
- `ROBOFLOW_API_KEY` (sent as `api_key`) from https://app.roboflow.com/settings/api
- `OPENROUTER_API_KEY` (sent as `model_api_key`) from https://openrouter.ai/keys — my OpenRouter key
Create a .gitignore'd .env with these variables, using placeholder values for any I haven't given you. Then pause and tell me directly, in your reply: the full path to the .env file, exactly which keys I need to paste in, and the link to get each one. Wait for me to confirm I've added them before you run anything. Do not run the app until I confirm.
Then add the integration to my codebase: match my project's language, framework, and conventions; read every key from environment variables (never hardcode); add basic error handling; and include a small runnable example. If you can't tell what language my project uses, ask me.pip install inference-sdkFork this workflow to your Roboflow workspace to use it.
# 1. Import the library
from inference_sdk import InferenceHTTPClient
# 2. Connect to your workflow
client = InferenceHTTPClient(
api_url="https://serverless.roboflow.com",
api_key="YOUR_API_KEY"
)
# 3. Run your workflow on an image
result = client.run_workflow(
workspace_name="your-workspace",
workflow_id="playground-qwen3-8-max-ocr",
images={
"image": "YOUR_IMAGE.jpg" # Path to your image file
},
parameters={
"model_api_key": "YOUR_OPENROUTER_API_KEY"
},
use_cache=True # cache workflow definition for 15 minutes
)
# 4. Get your results
print(result)Fork this workflow to your Roboflow workspace to use it.
const response = await fetch('https://serverless.roboflow.com/your-workspace/workflows/playground-qwen3-8-max-ocr', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
api_key: 'YOUR_API_KEY',
inputs: {
"image": {"type": "url", "value": "IMAGE_URL"},
"model_api_key": "YOUR_OPENROUTER_API_KEY"
}
})
});
const result = await response.json();
console.log(result);Fork this workflow to your Roboflow workspace to use it.
curl --location 'https://serverless.roboflow.com/your-workspace/workflows/playground-qwen3-8-max-ocr' \
--header 'Content-Type: application/json' \
--data '{
"api_key": "YOUR_API_KEY",
"inputs": {
"image": {"type": "url", "value": "IMAGE_URL"},
"model_api_key": "YOUR_OPENROUTER_API_KEY"
}
}'License terms and commercial-use guidance for Qwen3.8 Max.
This model is released under the Apache License 2.0, a permissive open-source license that allows commercial use, modification, distribution, and patent use.
Yes. Under the terms of the Apache 2.0 license, you can freely use this model for commercial purposes, including in proprietary products. You must retain the copyright notice and disclaimers when redistributing.
License information is provided as a guide and is not legal advice.
Yes. Qwen3.8 Max accepts image input and handles OCR, data extraction, object counting, identification, visual reasoning, and object detection. On Roboflow's Vision Evals its strongest task is Object Detection at 77.1% (#1 of 24). You can test it on your own image in the demo above.
Yes, and it is one of the model's strongest vision skills: its transcriptions match the ground truth 92.8% on average (#5 of 24) on Vision Evals OCR. Pulling specific fields out of documents (data extraction) scores 87.6%.
Yes. On Vision Evals, Qwen3.8 Max scores 77.1% mAP@50 on object detection (#1 of 24) and 82.4% exact-match accuracy on object counting.
On our benchmark's task mix, Qwen3.8 Max averages $0.0074 per sample at $2.00 per 1M input and $6.00 per 1M output tokens (#16 of 24 on cost), with an average speed of 18.0s per sample across the benchmark. Actual cost depends on your images and prompts.
On the overall Vision Evals ranking, Qwen3.8 Max sits #2 of 24 at 84%, just behind Gemini 3.5 Flash (86.6%) and just ahead of Gemini 3.1 Pro (83.1%). See the full side-by-side: Qwen3.8 Max vs Gemini 3.5 Flash.