DEV Community

Cover image for DeepSeek V4 Flash Vision Exp: Image Understanding at Text-Only Prices
TokenPAPA
TokenPAPA

Posted on Originally published at doc.tokenpapa.ai

DeepSeek V4 Flash Vision Exp: Image Understanding at Text-Only Prices

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)

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)
Enter fullscreen mode Exit fullscreen mode

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"}},
        ],
    }],
)
Enter fullscreen mode Exit fullscreen mode

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"},
        ],
    }],
)
Enter fullscreen mode Exit fullscreen mode

Note: Images only work in user messages. Putting an image in a system or assistant message 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"}}
Enter fullscreen mode Exit fullscreen mode

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 APIhttps://api.deepseek.com/anthropic, using image blocks with source.type = base64 / url / file
  • Responses API — images as input_image content blocks with the same detail semantics

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:

  1. Sign up at tokenpapa.ai$1 free credit
  2. Create an API key (no Chinese phone number needed)
  3. Point your OpenAI SDK at https://tokenpapa.ai/v1 and 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)
Enter fullscreen mode Exit fullscreen mode

Vision understanding at text-only prices — one key, one endpoint.


Originally published at https://doc.tokenpapa.ai/en/docs/blog/deepseek-v4-flash-vision-exp.

Top comments (0)