Fieldguide Fieldguide / DeepSeek V4.1 Flash / Module 1
Module 1 Foundations — What DeepSeek Is Lesson 02 of 36 45 min Full lesson

The 2026 Lineup, and Why Model IDs Matter

Flash vs Pro, the September 2026 architecture refresh, and the retired-alias trap that silently changes your bill.

Learning objectives

  • Distinguish deepseek-flash, deepseek-v4-pro and the retired aliases
  • Read a model ID situation and know which string to send
  • Predict when a provider will silently reroute a retired name

Session agenda — 45 minutes

  • 5 minFraming — why this exists and what you will be able to do
  • 10 minCore concept — the idea, explained from first principles
  • 15 minWorked walkthrough — watch it happen, with the real fields and output
  • 10 minHands-on exercise — you run it and measure the result
  • 5 minCheckpoint — recall questions and a note to your future self

Why this lesson exists

Model names are load-bearing. A retired alias does not throw an error — it silently routes to a different model at a different price. This lesson is the antidote to that specific, expensive confusion.

The two names that matter

As of the September 2026 generation, the DeepSeek API accepts two supported model identifiers.

Model IDUnderlying modelUse it when
deepseek-flash DeepSeek-V4.1-Flash Default for almost everything. The high-throughput, cheapest-per-token, vision-capable workhorse.
deepseek-v4-pro DeepSeek-V4-Pro-0813 Rarely. Larger, slower, roughly four times the price, no vision support.

Notice what is not on that list: deepseek-chat, deepseek-v4-flash, deepseek-v4-flash-vision-exp. Those names still resolve — the API will not reject them — but the models behind them have been retired. A request sent to a retired name is served by V4.1-Flash and billed at the Flash price.

The rule: send deepseek-flash. It is the canonical name, it is unambiguous, and it is what the pricing table is indexed on. Everything else is compatibility debt.

Why retired aliases are a trap, not a courtesy

Rerouting retired names is a kindness that creates a specific class of bug. Consider the failure it enables:

  1. You write integration code in the V4 era against deepseek-v4-flash-vision-exp, because you needed the experimental vision model for a screenshot-parsing task.
  2. V4.1-Flash ships. The experimental model is retired. Your string still works.
  3. Your code keeps passing tests. Your bills keep looking reasonable.
  4. Six months later you are debugging why a pipeline behaves differently, and the answer is that the model changed underneath you and nothing told you.

The lesson generalises well beyond DeepSeek: any identifier your system sends that is not the canonical current name is a silent dependency on someone else's migration policy. Treat alias resolution as a thing to eliminate, not a feature to rely on.

How to detect it in one call

A probe response echoes the model that actually served the request. Send a one-token completion with any model string and read the model field in the response. If you sent an alias and the response says deepseek-flash, you have been rerouted. Do this after any provider announcement — it costs a fraction of a cent and it is the only ground truth available.

curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [{"role":"user","content":"hi"}],
    "max_tokens": 1
  }'
# Read the "model" field in the response. If it is not what you sent,
# you are on a compatibility route and should pin the canonical name.

The September 2026 architecture family

V4.1-Flash is described by DeepSeek as the smallest model in a new architecture family, released with native multimodal visual understanding. The family framing is the important part: a lab releasing the small model first, explicitly noting the architecture was built to scale "to larger models," is telling you the shape of the next few years.

What actually changed for you as a user:

  • Vision is native, not bolted on. There is no separate vision endpoint to call. You send image content blocks in the same message array. The old -vision-exp model is gone and its capability has been absorbed.
  • Prices fell. The release notes state a price reduction alongside the model. Re-read the pricing table any time you are doing cost math — this generation has moved twice.
  • Thinking is on by default. Both supported models support non-thinking and thinking modes, with thinking as the default. Lesson 9 is entirely about that switch.

Capabilities, in one table

This is the feature matrix you will keep coming back to. It is short, and every row is something you will eventually need.

Capabilitydeepseek-flashNotes
Context length1M tokensEnormous. Lesson 11 covers using it without wasting it.
Max output384K tokensLong enough for whole files and reports.
Thinking modeYes, default onNon-thinking available. Effort levels: low / high / max.
VisionYesNative multimodal input. Pro does not have this.
JSON outputYesStructured output support.
Tool callsYesThe basis of every agent pattern in Module 6.
OpenAI-format APIYesBase URL https://api.deepseek.com
Anthropic-format APIYesBase URL https://api.deepseek.com/anthropic
Responses APIYesNewer OpenAI-style surface.
Chat prefix completionBetaForce the start of a response. Useful for structured fills.
FIM completionBetaFill-in-the-middle. Non-thinking mode only.
Concurrency limit2,500Generous. Pro is capped at 500.

Checkpoint

  1. What are the two supported model IDs, and which is your default?
  2. What happens when you send deepseek-v4-flash today?
  3. Which supported model supports vision, and which does not?
  4. Name one capability that is beta-only, and one that is non-thinking-only.
Answers
  1. deepseek-flash and deepseek-v4-pro. Flash is the default for nearly everything.
  2. The request is served by V4.1-Flash and billed at the Flash price — the model behind that name is retired.
  3. deepseek-flash supports vision; deepseek-v4-pro does not.
  4. Chat prefix completion and FIM completion are beta. FIM is non-thinking mode only.

Exercise: build the alias detector

Write a small script — ten lines is plenty — that takes a model string, sends a one-token completion, and asserts that the model field in the response matches what was sent. Print a clear warning when it does not.

Then run it against deepseek-v4-flash. You should see the warning fire. You now own a reusable detector for the single most common silent-failure class in provider integrations, and you built it in one lesson.

Progress is stored in this browser only.
DeepSeek V4.1 Flash — The Practitioner Course Course syllabus · All courses