DeepSeek V4 Flash Vision Exp: Image Understanding at Text-Only Prices
DeepSeek V4 Flash Vision Exp adds image input to the $0.14/1M model — describe images, OCR screenshots, analyze charts. Formats, limits, code examples, and how to call it through one API key.
DeepSeek V4 Flash Vision Exp: Image Understanding at Text-Only Prices
DeepSeek just made its cheapest model multimodal. deepseek-v4-flash-vision-exp accepts images in addition to text — describe a photo, extract text from a screenshot, or analyze a chart — without moving to a pricier flagship tier.
For overseas developers watching DeepSeek V4 API pricing per 1M tokens, this is the interesting part: the vision model sits at the exact same price point as DeepSeek V4 Flash. You get vision capability for the price of text.
Here's everything the official docs cover, plus how to call it through one API key on TokenPAPA.
What DeepSeek V4 Flash Vision Exp Can Do
The experimental vision model (deepseek-v4-flash-vision-exp) takes images alongside your text prompt. Practical uses:
- Describe images — explain what's in a photo, diagram, or product shot
- OCR screenshots — pull text out of UI screenshots, receipts, and documents
- Analyze charts & tables — read plotted data, extract numbers, summarize trends
- Visual QA in agents — attach an image in a user message and let the model reason over it
Unlike some vendors that gate vision behind premium models, DeepSeek shipped it on the budget tier.
Supported Image Formats
| Format | Notes |
|---|---|
| JPEG | ✔ |
| PNG | ✔ |
| GIF | ✔ |
| WebP | ✔ |
Format is detected from the file's actual content — not the filename extension or the declared MIME type. A PNG renamed to .jpg is still treated as PNG.
How to Send Images (OpenAI-Compatible)
Images are passed as content blocks (an array) instead of a plain string — the same structure as OpenAI. Three ways to supply an image:
1. Base64 Inline (Simplest for Local Files)
import base64
from openai import OpenAI
client = OpenAI(api_key="your-key", base_url="https://tokenpapa.ai/v1")
with open("image.jpg", "rb") as f:
b64 = base64.b64encode(f.read()).decode("utf-8")
response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{b64}"}},
],
}],
)
print(response.choices[0].message.content)2. Public Image URL
Pass a publicly accessible http(s) URL — the model downloads it automatically:
response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image."},
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}},
],
}],
)3. Files API Reference
Upload once, reuse across requests via file_id — best for images > 32 MiB or repeated use:
response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{"type": "file", "file_id": "file-api-xxxxxxxxxxxxxxxx"},
],
}],
)Note: Images only work in
usermessages. Putting an image in asystemorassistantmessage returns a 400 error. Non-vision models also reject images (400, "This model does not support image").
Detail Level Control
For image_url input you can set a detail field to control processing:
| Value | Behavior |
|---|---|
low | Scales to 512×512 before inference — faster, fewer tokens |
high | Keeps original (equivalent to original, for compatibility) |
original | Keeps original |
auto | Auto-select; currently equivalent to original |
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg", "detail": "low"}}How Images Are Billed (Token Conversion)
Images are converted to tokens by size and billed together with text:
- Images under ~384×384 are scaled up (aspect preserved)
- Larger images are scaled down to roughly 800×800 total pixels
- Max 384 tokens per image — a 2000×2000 and a 5000×5000 image cost the same
- Multi-image requests: each image is computed independently, same rule
This means vision stays predictable: even large images cap at a few hundred tokens, keeping DeepSeek V4 API pricing per 1M tokens the dominant cost factor.
Limits at a Glance
| Limit | Value |
|---|---|
| Supported formats | JPEG, PNG, GIF, WebP |
| External URL length | 8192 characters |
| Request body size | 48 MiB |
| Max single image (base64 / URL) | 32 MiB |
Max single image (Files API file_id) | 64 MiB |
| Max images per request | 600 |
| Max image dimension | 8192 px per side (4096 px if ≥15 images) |
API Compatibility
Besides the OpenAI-compatible endpoint, the vision model works with:
- Anthropic API —
https://api.deepseek.com/anthropic, usingimageblocks withsource.type=base64/url/file - Responses API — images as
input_imagecontent blocks with the samedetailsemantics
On TokenPAPA, the OpenAI-compatible endpoint https://tokenpapa.ai/v1 is all you need — the same code above runs unchanged.
FAQ
Q: Is DeepSeek V4 Flash Vision Exp available on TokenPAPA?
A: Yes — deepseek-v4-flash-vision-exp is live on TokenPAPA today. One API key gives you access to it alongside DeepSeek V4 Flash/Pro, GPT, Claude, Gemini, Qwen, and more, all through the same OpenAI-compatible endpoint.
Q: Do vision requests cost more than text? A: No per-image surcharge. Images are converted to tokens (max 384 per image) and billed at the standard rate. Since the model is priced identically to DeepSeek V4 Flash, vision stays budget-friendly.
Q: What are DeepSeek V4 Flash prices? A: On TokenPAPA, DeepSeek V4 Flash is $0.14 per 1M input and $0.42 per 1M output tokens. The vision-exp model sits at the same price line.
Q: Can I send multiple images in one request?
A: Yes — up to 600 images per request, each billed independently. Just add more image_url or file content blocks to the user message.
Get Started
Try DeepSeek V4 Flash Vision Exp in minutes:
- Sign up at tokenpapa.ai — $1 free credit
- Create an API key (no Chinese phone number needed)
- Point your OpenAI SDK at
https://tokenpapa.ai/v1and send an image
from openai import OpenAI
client = OpenAI(api_key="your-key", base_url="https://tokenpapa.ai/v1")
response = client.chat.completions.create(
model="deepseek-v4-flash-vision-exp",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Extract the text from this screenshot."},
{"type": "image_url", "image_url": {"url": "https://example.com/screenshot.png"}},
],
}],
)
print(response.choices[0].message.content)Vision understanding at text-only prices — one key, one endpoint.
How is this guide?
Last updated on
