Seedance 2.5 is live on EvoLinkTry Seedance 2.5
DeepSeek V4 Flash Vision Exp image-input API tutorial
Tutorial

How to Use DeepSeek V4 Flash Vision Exp API with Images

Jacey
Jacey
August 21, 2026
10 min read
DeepSeek released the experimental deepseek-v4-flash-vision-exp model on August 21, 2026 to accept text and images in the same request. EvoLink now documents the model across Chat Completions, Messages, and Responses. For EvoLink users, the implementation decision is not only how to format an image: choose the protocol that matches the existing application, inspect returned usage, and keep a fallback because the upstream model is explicitly experimental.
As of August 21, 2026, EvoLink's public DeepSeek V4 documentation lists deepseek-v4-flash-vision-exp for all three protocols. Chat Completions uses image_url, Messages uses an image content block with a Base64 or URL source, and Responses uses input_image. The examples below follow those documented shapes; run a representative request on the production account before expanding traffic.
Check the Vision Exp model page and live pricing
If your router also handles text-only requests, use the Vision Exp vs Flash comparison to keep image evidence on Vision Exp and throughput-oriented text traffic on Flash.

Quick answer: what you need before the first image call

The model ID is deepseek-v4-flash-vision-exp. EvoLink documents three image-input shapes: image_url for Chat Completions, an image content block for Messages, and input_image for Responses. Do not reuse one protocol's content block in another protocol.
CheckRequired result before launchWhy it matters
Model IDSend deepseek-v4-flash-vision-exp exactly as documentedThe text-only Flash ID does not process image evidence
ProtocolYour selected route explicitly documents image contentText-only compatibility does not prove multimodal compatibility
Input methodURL or Base64 succeeds with a representative imageContent-block syntax and gateway validation can differ
UsageThe response includes the expected input and output usageYou need observable cost per accepted result
BillingThe completed request appears correctly in EvoLink usage or billingA successful response alone does not prove the final charge path
FallbackA verified vision route can take overThe -exp model may change, fail, or be retired

If any runtime check fails, keep traffic on an already verified vision model and treat Vision Exp as an evaluation candidate for that workload.

Understand the image-input workflow

The practical workflow is: provide one or more images with a focused text instruction, select an enabled protocol, validate the structured result, and record usage before routing more traffic. Do not make a browser or agent action irreversible on the strength of one unreviewed visual answer.

Image, document, and chart inputs routed through a multimodal API into three structured response workflows
Image, document, and chart inputs routed through a multimodal API into three structured response workflows

Use a small evaluation set before building an integration around a demo. Include at least one clean screenshot, one dense interface, one scanned page, one chart with small labels, and one deliberately ambiguous image. Define the fields or decision you expect before calling the model.

Choose the protocol shape

The examples below match the current EvoLink content shapes for Vision Exp. Use the exact endpoint, required fields, and limits from the linked protocol page because the three payload structures are not interchangeable.

Chat Completions: image_url

Choose Chat Completions when your application already uses an OpenAI-style messages array. A user content array combines text and an image_url item:
{
  "model": "deepseek-v4-flash-vision-exp",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Return the visible error message and the UI state as JSON."
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://example.com/screenshot.png"
          }
        }
      ]
    }
  ]
}
EvoLink's current Chat Completions documentation lists Vision Exp, image_url, URL and Base64 examples, and multiple-image input. Keep image content inside a user message and send the exact Vision Exp model ID.

Messages: image content block

Messages fits applications already using the Anthropic-style request structure. EvoLink's current Messages documentation requires a top-level max_tokens field, so the image example keeps it:
{
  "model": "deepseek-v4-flash-vision-exp",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "image",
          "source": {
            "type": "url",
            "url": "https://example.com/invoice.png"
          }
        },
        {
          "type": "text",
          "text": "Extract invoice number, date, currency, subtotal, tax, and total."
        }
      ]
    }
  ]
}
EvoLink's current Messages documentation lists Vision Exp image blocks whose source.type can be base64 or url. Always use deepseek-v4-flash-vision-exp for image understanding: the documentation warns that the text-only Flash and Pro routes can discard the actual image rather than process it.

Responses: input_image

Responses is useful when a multimodal request belongs to a longer agent workflow. EvoLink's documented shape combines input_text and input_image:
{
  "model": "deepseek-v4-flash-vision-exp",
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Summarize the chart, then list every directly observed label."
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/chart.png"
        }
      ]
    }
  ]
}
The current EvoLink Responses documentation lists Vision Exp, input_image, and multiple-image input. Verify route-specific streaming events, tools, and errors separately; documented image support does not imply that every upstream Files API behavior is exposed through the same route.

Image URL, Base64, or Files API?

The right input method depends on data access, request size, reuse, and what EvoLink has enabled.

MethodBest fitProduction check
Public image URLPublic or short-lived signed assetsThe gateway can fetch the URL, redirects are allowed, and the URL does not expose sensitive data
Base64 data URISmall private images sent directly with the requestThe final request size stays below the documented limit and logs do not retain sensitive payloads
Files APIReused or managed filesEvoLink explicitly documents Files API support for Vision Exp and defines file lifetime and permissions

Prefer a signed URL when the image is too large for a comfortable Base64 request. Prefer Base64 when the image is small and must not be publicly reachable. Do not claim Files API support until it appears in EvoLink documentation for this route.

DeepSeek documents JPEG, PNG, GIF, and WebP upstream. Gateway file-size, URL, timeout, and multi-image limits can still be narrower.

Estimate image cost without duplicating the price table

DeepSeek states that one image is tokenized at up to 384 input tokens. That makes the input-image portion relatively easy to bound, but it is not the whole request cost.

Use this planning formula:

completed-task cost = image input + text input + output + retries + additional agent/tool rounds

For two images, use 768 image-input tokens as a conservative upstream ceiling before adding prompt and output tokens. Then compare the estimate with the actual usage returned by the enabled EvoLink route. Cached text prefixes may reduce repeated text cost, but do not assume that image content receives the same cache behavior.

Use the DeepSeek V4 Flash Vision Exp product page for current EvoLink token rates. This tutorial deliberately does not maintain a second price table.

Validate the result before automation

A visual response can be fluent and still be wrong. Evaluate each workload against a defined acceptance rule:

WorkloadAcceptance metricEscalation rule
Invoice extractionExact match for required fieldsHuman review when a required field is missing or disagrees with a checksum
Screenshot QACorrect state and visible error textRetry with a crop, then route to review
Chart analysisLabels separated from interpretationReject unsupported numeric claims
UI agentCorrect next action without unsafe side effectsRequire confirmation before irreversible actions

Track accepted-result rate, not only response success. A cheaper response that needs repeated calls or manual correction may cost more than a stronger fallback route.

Common image-request failures

SymptomLikely causeWhat to do
Model is not in the allowed enumThe model ID is misspelled, stale, or unavailable to the accountConfirm the exact ID and account access; do not substitute the text-only Flash ID
Image/document content is not supportedThe selected protocol remains text-onlyUse a documented image-enabled protocol or a verified fallback model
400 invalid content blockThe payload uses the wrong protocol shapeMatch image_url, image, or input_image to the documented route
Image cannot be fetchedURL is private, expired, redirected, or blockedUse an accessible signed URL or supported Base64 input
Request is too largeBase64 or multiple images exceed the gateway limitResize, compress, split the request, or use a documented file route
429 or timeoutConcurrency or route capacity is exceededApply bounded retries, reduce in-flight requests, and fail over

Do not invent a fixed RPM, TPM, file-size, or concurrency number for Vision Exp. Use the route-specific limits in EvoLink documentation and verify behavior on the account that will carry production traffic.

Production rollout policy

Start with a small, observable traffic class such as screenshot QA that already has human review. Keep model selection in configuration rather than hard-coding the experimental ID throughout the application.

  1. Verify one successful URL or Base64 request on the selected protocol.
  2. Confirm response content, usage, billing, and error logging.
  3. Run the fixed visual evaluation set against Vision Exp and a fallback.
  4. Route only a small traffic share and monitor accepted-result cost.
  5. Expand only after quality, latency, errors, and cost meet the threshold.

EvoLink's unified API makes that policy easier to operate because the team can compare routes, usage, and billing without rebuilding the entire integration around one experimental provider model.

FAQ

What is the exact DeepSeek V4 Flash Vision Exp model ID?

The model ID is deepseek-v4-flash-vision-exp. Keep the -exp suffix; it indicates an experimental upstream release.
Yes. As of August 21, 2026, EvoLink documents deepseek-v4-flash-vision-exp with image understanding across Chat Completions, Messages, and Responses. Use the exact payload shape from the selected protocol page.

Can I use the text-only deepseek-v4-flash ID for an image request?

No. EvoLink's documentation warns that the text-only Flash route can discard the actual image instead of processing it. Use deepseek-v4-flash-vision-exp or another verified vision model when the request depends on image evidence.

Should I use an image URL or Base64?

Use a signed URL for larger assets when the gateway can fetch it. Use Base64 for small private images when the documented request-size limit allows it. Protect sensitive data in either case.

Does the model support Files API uploads?

DeepSeek documents a Files API upstream, but that does not prove the same feature is exposed through EvoLink. Use it only after the EvoLink route documentation explicitly confirms support.

How much does one image cost?

DeepSeek says one image uses up to 384 input tokens. Add text input, output, retries, and any extra agent rounds, then apply the live rates shown on the product page.

Which image formats are supported?

DeepSeek documents JPEG, PNG, GIF, and WebP upstream. Confirm EvoLink-specific size, URL, and multi-image limits before production use.

What should I test before routing production traffic?

Test representative clean and difficult images, structured-output validity, small text, missing fields, latency, retries, usage, billing, and fallback behavior. Expand only when accepted-result cost meets your threshold.

Sources and next steps

Keep this tutorial synchronized with the three EvoLink protocol pages. Re-run the examples and billing check whenever the experimental model ID, image fields, or route limits change.

Ready to Reduce Your AI Costs by 89%?

Start using EvoLink today and experience the power of intelligent API routing.