
How to Use DeepSeek V4 Flash Vision Exp API with Images
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.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.Quick answer: what you need before the first image call
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.| Check | Required result before launch | Why it matters |
|---|---|---|
| Model ID | Send deepseek-v4-flash-vision-exp exactly as documented | The text-only Flash ID does not process image evidence |
| Protocol | Your selected route explicitly documents image content | Text-only compatibility does not prove multimodal compatibility |
| Input method | URL or Base64 succeeds with a representative image | Content-block syntax and gateway validation can differ |
| Usage | The response includes the expected input and output usage | You need observable cost per accepted result |
| Billing | The completed request appears correctly in EvoLink usage or billing | A successful response alone does not prove the final charge path |
| Fallback | A verified vision route can take over | The -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.

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
Chat Completions: image_url
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"
}
}
]
}
]
}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
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."
}
]
}
]
}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
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"
}
]
}
]
}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.
| Method | Best fit | Production check |
|---|---|---|
| Public image URL | Public or short-lived signed assets | The gateway can fetch the URL, redirects are allowed, and the URL does not expose sensitive data |
| Base64 data URI | Small private images sent directly with the request | The final request size stays below the documented limit and logs do not retain sensitive payloads |
| Files API | Reused or managed files | EvoLink 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
Use this planning formula:
completed-task cost = image input + text input + output + retries + additional agent/tool roundsFor 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.
Validate the result before automation
A visual response can be fluent and still be wrong. Evaluate each workload against a defined acceptance rule:
| Workload | Acceptance metric | Escalation rule |
|---|---|---|
| Invoice extraction | Exact match for required fields | Human review when a required field is missing or disagrees with a checksum |
| Screenshot QA | Correct state and visible error text | Retry with a crop, then route to review |
| Chart analysis | Labels separated from interpretation | Reject unsupported numeric claims |
| UI agent | Correct next action without unsafe side effects | Require 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
| Symptom | Likely cause | What to do |
|---|---|---|
| Model is not in the allowed enum | The model ID is misspelled, stale, or unavailable to the account | Confirm the exact ID and account access; do not substitute the text-only Flash ID |
| Image/document content is not supported | The selected protocol remains text-only | Use a documented image-enabled protocol or a verified fallback model |
| 400 invalid content block | The payload uses the wrong protocol shape | Match image_url, image, or input_image to the documented route |
| Image cannot be fetched | URL is private, expired, redirected, or blocked | Use an accessible signed URL or supported Base64 input |
| Request is too large | Base64 or multiple images exceed the gateway limit | Resize, compress, split the request, or use a documented file route |
| 429 or timeout | Concurrency or route capacity is exceeded | Apply 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.
- Verify one successful URL or Base64 request on the selected protocol.
- Confirm response content, usage, billing, and error logging.
- Run the fixed visual evaluation set against Vision Exp and a fallback.
- Route only a small traffic share and monitor accepted-result cost.
- 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?
deepseek-v4-flash-vision-exp. Keep the -exp suffix; it indicates an experimental upstream release.Is DeepSeek V4 Flash Vision Exp available on EvoLink?
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?
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
- EvoLink DeepSeek V4 Chat Completions documentation
- EvoLink DeepSeek V4 Messages documentation
- EvoLink DeepSeek V4 Responses documentation
- DeepSeek Vision Guide
- DeepSeek V4 Flash Vision Exp release note
- DeepSeek API change log
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.


