Does DeepSeek V4 Have Vision?
OpenRouter ·

DeepSeek V4 is not one model. On our catalog it is a family that includes V4.1 Flash, V4 Pro 0813, V4 Flash 0731, V4 Flash Vision Exp, two older 0423 checkpoints, and a Flash “latest” alias. The names tell you the tier and the release. They do not tell you which ones accept an image.
This guide goes through the family one model at a time, with the exact slugs from our catalog, and shows two ways to use V4 on an image. The first sends the image to a V4 model that reads images. The second runs a separate vision model in front of a text-only V4 model.
The short answer, by model
Two V4 models accept images. DeepSeek V4.1 Flash reads images natively and is the model to use for new image work. DeepSeek V4 Flash Vision Exp also reads images, and DeepSeek labels it experimental.
Every other V4 slug on our catalog is text in, text out. That includes V4 Pro 0813, V4 Flash 0731, the two 0423 checkpoints, and the ~deepseek/deepseek-v4-flash-latest alias. A request that sends an image_url part to one of these models fails, because the model does not list image among its input modalities.

Which V4 models exist and what they accept
The table lists each V4 model on our catalog with the modality column that answers the question. Prices are the listed catalog rates per million tokens on 11 September 2026, rounded to three decimal places where a listed rate has more digits.
| Model | Slug | Input | Price in / out | Context | Image input |
|---|---|---|---|---|---|
| V4.1 Flash | deepseek/deepseek-v4.1-flash | text, image | $0.15 / $0.60 | 1,048,576 | Yes |
| V4 Flash Vision Exp | deepseek/deepseek-v4-flash-vision-exp | text, image | $0.22 / $0.66 | 1,048,576 | Yes, experimental |
| V4 Pro 0813 | deepseek/deepseek-v4-pro-0813 | text | $0.579 / $1.738 | 1,048,576 | No |
| V4 Flash 0731 | deepseek/deepseek-v4-flash-0731 | text | $0.065 / $0.18 | 1,310,720 | No |
| V4 Pro 0423 | deepseek/deepseek-v4-pro | text | $0.860 / $1.720 | 1,048,576 | No |
| V4 Flash 0423 | deepseek/deepseek-v4-flash | text | $0.085 / $0.171 | 1,048,576 | No |
All six return text only. Each model page lists the current price, context length, and input modalities, and those values change as providers and checkpoints change. Read the page before you commit a slug to production.
The ~deepseek/deepseek-v4-flash-latest alias redirects to the latest model in the V4 Flash family. At the time of writing it resolved to Flash 0731 and listed text as its only input modality. Do not use the alias for image requests. Pin deepseek/deepseek-v4.1-flash or deepseek/deepseek-v4-flash-vision-exp directly.
V4.1 Flash reads images natively
DeepSeek V4.1 Flash is the first model built on DeepSeek’s Causal Encoder-Decoder architecture. It activates 8B parameters on input and 16B on output from a 552B-parameter backbone. Image understanding is part of the architecture, with visual and text embeddings trained jointly from the start of pre-training. It has a 1,048,576-token context window and a 384,000-token maximum output on the DeepSeek endpoint, and it supports tool calling, response_format, and structured outputs.
Calling it with an image is the same chat request you already make, with an image part added to the message content. The TypeScript SDK nests the request body under chatRequest and uses camelCase field names, so the image part is imageUrl in the SDK and image_url on the wire.
import { OpenRouter } from "@openrouter/sdk";
const openRouter = new OpenRouter({
apiKey: process.env.OPENROUTER_API_KEY,
});
const result = await openRouter.chat.send({
chatRequest: {
model: "deepseek/deepseek-v4.1-flash",
messages: [
{
role: "user",
content: [
{ type: "text", text: "What error state is this screenshot showing?" },
{ type: "image_url", imageUrl: { url: "https://example.com/screenshot.png" } },
],
},
],
stream: false,
},
});
if (!("choices" in result)) {
throw new Error("Expected a non-streaming response");
}
console.log(result.choices[0]?.message.content);
The url field accepts a public image URL or a base64 data URL. Send the text part before the image part. The image inputs guide covers the base64 form, supported image types, and sending several images in one request.
V4 Flash Vision Exp is the experimental option
DeepSeek V4 Flash Vision Exp is an experimental vision-enabled version of V4 Flash 0731. It adds image understanding while matching the base model on text tasks. It shipped on 21 August 2026, and until V4.1 Flash shipped on 10 September 2026 it was the only V4 model that accepted images.
It takes the same request as the example above with the model field changed to deepseek/deepseek-v4-flash-vision-exp. It has a 1,048,576-token context window and supports tool calling, response_format, and structured outputs.
DeepSeek labels this model experimental. Use V4.1 Flash for new image work unless you have a specific reason to test the experimental model, and pin the exact slug if you do.
Put a vision model in front of a text-only V4 model
V4 Pro 0813, V4 Flash 0731, and the 0423 checkpoints do not accept images. If you want one of them to reason over an image, run a vision model first and pass its text output into the V4 model. The V4 model never sees the pixels. It reads the description.
Two models that accept image and video input are Qwen3.8 27B at qwen/qwen3.8-27b and Kimi K3 at moonshotai/kimi-k3. Our vision models collection lists every catalog model that accepts image input.
import { OpenRouter } from "@openrouter/sdk";
const openRouter = new OpenRouter({
apiKey: process.env.OPENROUTER_API_KEY,
});
const imageUrl = "https://example.com/screenshot.png";
const userTask = "Explain the error and propose a fix.";
// Step 1: a vision model reads the image and returns a text description.
const seen = await openRouter.chat.send({
chatRequest: {
model: "qwen/qwen3.8-27b",
messages: [
{
role: "user",
content: [
{
type: "text",
text: "Describe this screenshot for a reasoning model. Report only what is visible.",
},
{ type: "image_url", imageUrl: { url: imageUrl } },
],
},
],
stream: false,
},
});
if (!("choices" in seen)) {
throw new Error("Expected a non-streaming response");
}
const description = seen.choices[0]?.message.content;
if (typeof description !== "string") {
throw new Error("Expected a text description from the vision model");
}
// Step 2: a text-only V4 model reasons over the description.
const reasoned = await openRouter.chat.send({
chatRequest: {
model: "deepseek/deepseek-v4-pro-0813",
messages: [
{
role: "user",
content: `Image notes:\n${description}\n\nTask: ${userTask}`,
},
],
stream: false,
},
});
if (!("choices" in reasoned)) {
throw new Error("Expected a non-streaming response");
}
console.log(reasoned.choices[0]?.message.content);
Swap qwen/qwen3.8-27b for moonshotai/kimi-k3 to put Kimi K3 on the image, or swap deepseek/deepseek-v4-pro-0813 for deepseek/deepseek-v4-flash-0731 on the text turn.
Two calls cost more than one. On 11 September 2026, Qwen3.8 27B listed at $0.42 per million input tokens and $3.00 per million output tokens, and Kimi K3 listed at $2.10 and $10.53. You pay the V4 model on top of that. Use this pattern when you need a text-only V4 model or video input, not as the default way to read an image with V4.
Which route to use
Match the route to the model you need and the input you have.
- A still image or document, and Flash-tier quality is enough. Send it to
deepseek/deepseek-v4.1-flashin one call. - A still image, and you want to test the experimental model. Send it to
deepseek/deepseek-v4-flash-vision-expin one call, and pin the slug. - Pro-tier reasoning on an image. No V4 Pro model accepts images. Run a vision model first and pass its text into
deepseek/deepseek-v4-pro-0813. - Video input. No V4 model accepts video. Run a model that does, such as Qwen3.8 27B or Kimi K3, and pass its text into a V4 model. The video inputs guide covers the request shape.
- Mixed text and image traffic. Keep text-only requests on the text model you already use and send image requests to V4.1 Flash.
If images arrive without warning, check the message content in your own code and pick the model before you send the request. Provider routing chooses between providers of the model you named. It does not switch to a different model, so it cannot turn an image request to a text-only model into a request to a vision model.
How to check a model’s modalities yourself
The model page and the models API are the source of truth for what a slug accepts. Each model page lists its input and output modalities. The models API returns the same data as architecture.input_modalities on every model.
curl -s https://openrouter.ai/api/v1/models \
| jq -r '.data[] | select(.id | startswith("deepseek/deepseek-v4")) | "\(.id)\t\(.architecture.input_modalities | join(","))"'
The models page filtered to image input shows every model on our catalog that accepts images. If a later V4 checkpoint adds image input, its model page and the API response will show it, and we will update this page.
Frequently asked questions
Does DeepSeek V4 Flash have vision?
It depends on the checkpoint. deepseek/deepseek-v4.1-flash and deepseek/deepseek-v4-flash-vision-exp accept text and images. deepseek/deepseek-v4-flash-0731 and deepseek/deepseek-v4-flash are text-only, and the ~deepseek/deepseek-v4-flash-latest alias resolved to Flash 0731 at the time of writing.
Does DeepSeek V4 Pro have vision?
No. deepseek/deepseek-v4-pro-0813 and the older deepseek/deepseek-v4-pro list text as their only input modality. To use Pro on an image, run a vision model first and pass its text description into Pro.
Which DeepSeek V4 model should I use for images?
Use deepseek/deepseek-v4.1-flash. It reads images natively, it is not marked experimental, and it listed at $0.15 per million input tokens and $0.60 per million output tokens on 11 September 2026. deepseek/deepseek-v4-flash-vision-exp is the experimental alternative.
How much does DeepSeek V4 image input cost?
Image input is billed through the model’s token prices. On 11 September 2026, V4.1 Flash listed at $0.15 in and $0.60 out per million tokens, and V4 Flash Vision Exp listed at $0.22 in and $0.66 out. Check the model page before you size a budget, because listed prices change.
Can DeepSeek V4 handle video?
No V4 model on our catalog lists video as an input modality. For video, use a model that does, such as qwen/qwen3.8-27b or moonshotai/kimi-k3, then pass its text output into a V4 model.