All insights

Image generation

Can DeepSeek See Images? Yes—Here’s How to Use Image Input

Yes. DeepSeek’s deepseek-flash API accepts images. Learn the supported formats, three ways to send an image, key limits, and what image input does not guarantee.

Illustration for Can deepseek see images

Yes. DeepSeek’s deepseek-flash API model accepts images alongside text—for example, to describe a picture, read text in a screenshot, or analyze a chart. DeepSeek’s current API documentation identifies deepseek-flash as being served by DeepSeek-V4.1-Flash-1017, and its pricing page lists vision as a supported feature for that model. (DeepSeek Vision guide)

That answers the production API question; it does not mean every DeepSeek model or interface has identical image-input behavior. The practical guidance below is for the documented API.

How to send an image to the DeepSeek API

DeepSeek documents three ways to provide an image: inline base64, a publicly accessible image URL, or a file uploaded through the Files API and referenced by its file_id. The API supports JPEG, PNG, GIF, and WebP. (DeepSeek Vision guide)

Here is the basic Chat Completions shape for a local image encoded as a data URL:

{
  "model": "deepseek-flash",
  "messages": [
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "What is in this image?"},
        {
          "type": "image_url",
          "image_url": {
            "url": "data:image/jpeg;base64,<BASE64_IMAGE_DATA>"
          }
        }
      ]
    }
  ]
}

Send that payload to https://api.deepseek.com/chat/completions with your API key as a Bearer token. Replace the placeholder with the actual base64-encoded image data. DeepSeek also documents image input through its Responses API and Anthropic-compatible /messages endpoint; those APIs use different content-block shapes, so follow the matching guide. (DeepSeek Vision guide)

For the Chat Completions format shown above, put the image in a user message. The Vision guide says image content in system or assistant messages returns a 400 error. The Responses API has different placement options: its guide documents image parts in user or developer messages and in certain tool outputs. See the Responses API guide for endpoint-specific rules.

Which image method should you choose?

  • Inline base64: A straightforward choice for a local image. The encoded content counts toward the request-body limit.
  • External URL: Useful when the image is already hosted at a publicly accessible HTTP(S) address. DeepSeek downloads it for the request.
  • Files API: Upload once and reference the returned file_id. The documentation recommends this for reusing an image across requests or for images too large for the usual inline or URL limit. (DeepSeek Vision guide)
Input method Documented constraints A good fit when…
Base64 data URL One image may be up to 32 MiB; the whole request body is limited to 48 MiB. You have a local image that fits in the request.
External URL URL up to 8,192 characters; image up to 32 MiB; download must finish within 60 seconds. The image is publicly accessible and within those limits.
Files API file_id One image may be up to 64 MiB. You need to reuse an image or send one larger than the ordinary 32 MiB limit.

These are the image and request limits listed in DeepSeek’s Vision guide. It also lists a maximum of 600 images per request and a maximum image dimension of 8,192 pixels per side, reduced to 4,096 pixels per side for requests containing 15 or more images. (DeepSeek Vision guide)

Does image input guarantee accurate answers?

No. Being able to submit an image is not the same as guaranteeing a correct interpretation. DeepSeek’s documentation gives picture description, screenshot text reading, and chart analysis as example tasks, but the cited guide does not provide a task-specific accuracy guarantee. Test representative images from your own workflow, and check extracted text, chart values, and other consequential details before relying on them. (DeepSeek Vision guide)

Images are converted into tokens based on their dimensions, and those tokens are billed together with text tokens. For image_url inputs, the guide says the low detail setting downsizes an image to 512×512 and is intended to be faster and cheaper when fine detail is unnecessary; it does not specify a monetary saving. (DeepSeek Vision guide)

Bottom line: For image input through the documented DeepSeek API, use deepseek-flash. Choose base64 for a suitable local file, a public URL for an accessible hosted image, or the Files API when you need reuse or a larger file. Check the limits above and validate answers for your task.

Sources

Vision | DeepSeek API Docs

Change Log | DeepSeek API Docs

Models & Pricing | DeepSeek API Docs

Files API | DeepSeek API Docs

Responses API | DeepSeek API Docs

Contact us