Skip to main content

DeepSeek V4 Flash vs Pro: Choose an API for the Actual Task

Pick DeepSeek V4 Flash or Pro by task: output ceiling, tool-call control, cost per request, uncensored writing behavior, and when V4.1 Flash is better.

Author
Lydia
Published
Read
14 min read
Updated
Two adults at a wooden desk compare index cards and a pinboard of linked notes while weighing two options.

A text pipeline can need extraction, document review or roleplay, each with a different output budget. For a new integration, start with deepseek/v4.1-flash/chat: $0.30 input and $1.20 output per million, with a 384,000-token reply ceiling. If your integration is pinned to a V4 ID, use V4 Flash for routine work; choose Pro for its explicit parallel-tool control, a reply above 65,536 tokens, or a specific task where its result justifies three times the token price. Both V4 IDs read 1,048,576 tokens, so long input alone is not a reason to pay for Pro.

The V4.1 Flash migration guide covers the new-build route. The comparisons below apply to the two hosted V4 IDs.

Which one for which job

Your jobPickWhy
Extraction, classification, JSON output, routine chatV4 FlashSame input window, one third of the token price
First-pass code or document review that a person or second model checksV4 FlashCheapest way to scan; send only unclear findings upward
One reply longer than 65,536 tokens (full migration plan, whole-set transformation)V4 Pro384,000-token ceiling against 65,536
Workflow that needs parallel_tool_calls set on the requestV4 ProFlash does not accept the field
Final verification pass over a cheaper model's draftV4 ProKeep the more expensive pass focused on a small, evidence-backed subset
Architecture review, refactoring plans, documentationTry Pro after a Flash scanBroader coverage in the single-codebase benchmark below; useful when the missed detail matters
Code edits driven by exact line referencesFlash plus source verification; add Pro if neededBoth models made some incorrect claims in the benchmark; source inspection and application tests decide correctness
Roleplay or fiction in volumeV4 FlashAbout $0.57 against $1.72 per 100 roleplay turns

The contract differences

Current contractV4 FlashV4 ProV4.1 Flash (for reference)
Model IDdeepseek/v4-flash/chatdeepseek/v4-pro/chatdeepseek/v4.1-flash/chat
Input limit1,048,576 tokens1,048,576 tokens1,048,576 tokens
Output ceiling65,536 tokens384,000 tokens384,000 tokens
Default output limit32,768 tokens32,768 tokens32,768 tokens
reasoning_effortnone, low, high (default high)none, low, high (default high)none, low, high (default high)
Input used in this guideText messagesText messagesText messages
JSON-object outputSupportedSupportedSupported
parallel_tool_callsNot acceptedAccepted; default trueNot accepted
USD per million input / cached / output$0.44 / $0.014 / $1.32$1.32 / $0.044 / $3.96$0.30 / $0.006 / $1.20
Output speed in SpicyAPI’s review40 tokens/s46 tokens/sNot listed

The V4 Flash and V4 Pro pages show the current hosted fields. Both allow up to 256 messages and 128 tool definitions, with up to 60 minutes per request, and neither exposes temperature or top_p. SpicyAPI's side-by-side page shows the same fields from the live schema.

Both endpoints reject fields they do not list. A body copied from the Pro endpoint with parallel_tool_calls fails validation on Flash instead of being ignored, so keep per-model fields apart rather than sending the union.

Where these IDs stand upstream. DeepSeek’s current change log retires V4 Flash and temporarily routes its old alias to V4.1 Flash, while V4 Pro service continues with unchanged billing. SpicyAPI lists the separate IDs above; pin the full hosted ID, not an upstream alias, when maintaining a V4 integration. DeepSeek's September 10 announcement describes the native alias redirects, so a forum result that used native aliases may not compare the original V4 versions at all; distinguish model names, versioned IDs and observed results before relying on any "Flash vs Pro" page. For a new build, V4.1 Flash’s lower price and larger reply ceiling are the practical reason to start there.

What other developers found with the pair

An 18-run code-review benchmark on one Python codebase, using the dated 0731 Flash and 0813 Pro snapshots, found a useful difference:

  • Coverage: Pro produced 169 verifiable claims against Flash’s 70. Claim accuracy was close: 95.9% versus 95.7%.
  • Bug finding: Flash found all three known latent bugs; Pro found one. Flash also invented an edge case, so verify proposed fixes against source.
  • Consistency: Pro’s report depth varied by 2.7 times between repeated runs. A Flash scan followed by focused Pro verification performed best in that setup.

Use Flash for the inexpensive first pass and send an unclear finding, its source and a precise question to Pro. Neither model’s report replaces source checks or application tests.

Try it in Playground first

  1. Open DeepSeek V4 Flash and switch to Playground.
  2. Paste the catalog approval and inventory-timeout record from the example. Ask whether job E42 can be exported.
  3. Repeat on V4 Pro with the same input. Both answers should block export because the current inventory lookup failed.

Try both on one decision with one right answer

Suppose a creator's storefront export depends on an approved catalog and a current inventory lookup. The model must name what blocks the export without treating a pending step as complete. The fixture is cheap enough to run on both models before you send a large transcript.

Set SPICY_API_KEY using a key from API Keys. The request uses SpicyAPI's Chat Completions interface.

bash
cat > request.json <<'JSON'
{
  "model": "deepseek/v4-flash/chat",
  "messages": [
    {
      "role": "system",
      "content": "Return JSON with can_export (boolean), blockers (array of strings), and evidence (array of exact source quotes). Use only the supplied record. Every required dependency must be complete before export."
    },
    {
      "role": "user",
      "content": "Job E42 requires catalog approval and a current inventory lookup. Record: \"Catalog approved at 10:00. Inventory lookup timed out at 10:03. The last inventory snapshot is from yesterday.\" Can this job be exported now?"
    }
  ],
  "max_tokens": 2048,
  "reasoning_effort": "low",
  "response_format": {
    "type": "json_object"
  }
}
JSON

curl --fail-with-body https://api.spicyapi.ai/v1/chat/completions \
  -H "Authorization: Bearer $SPICY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  --data-binary @request.json --output response.json

python3 - <<'PY'
import json
from pathlib import Path

response = json.loads(Path("response.json").read_text())
choice = response["choices"][0]
if choice.get("finish_reason") != "stop":
    raise SystemExit("FAIL: reply did not finish normally")
answer = json.loads(choice["message"]["content"])
quotes = {"Catalog approved at 10:00.",
          "Inventory lookup timed out at 10:03.",
          "The last inventory snapshot is from yesterday."}
blockers = answer.get("blockers")
evidence = answer.get("evidence")
valid = (
    answer.get("can_export") is False
    and isinstance(blockers, list) and bool(blockers)
    and all(isinstance(item, str) and item.strip() for item in blockers)
    and any("inventory" in item.lower() for item in blockers)
    and isinstance(evidence, list) and bool(evidence)
    and all(isinstance(item, str) and item in quotes for item in evidence)
    and "Inventory lookup timed out at 10:03." in evidence
)
if not valid:
    raise SystemExit("FAIL: decision, blocker or source evidence is incorrect")
print("PASS: export is blocked by the timed-out inventory lookup")
PY

The correct decision is can_export: false, with the missing current inventory as the blocker. Yesterday's snapshot is not the required current lookup, and the evidence array should quote the timeout line.

This is a fixture check, not a general business validator: real exports should use the actual dependency statuses in your application. A model can quote a real sentence and still draw the wrong conclusion, which is why both decision and evidence are checked here.

To run Pro on the same input, change only the model ID. Keep the source, instructions, effort and output ceiling identical, and score each answer on two things: did it name the blocker, and do the quotes occur in the record? A longer explanation is not a better decision.

If Flash passes, this fixture gives you no reason to pay for Pro on that task. If either model invents an inventory success, do not pass its answer downstream because the JSON parsed. If both fail, check that the requirement was stated clearly before treating a higher price as the fix.

Let an Agent prepare the call

For repeated export-decision checks, ask your coding Agent to use the SpicyAPI Skill: “Read deepseek/v4-flash/chat, then adapt the example to my input; show the request before running it.” The CLI lookup is spicyapi models get deepseek/v4-flash/chat --json; the MCP lookup is spicyapi_model_get with model: "deepseek/v4-flash/chat". Chat calls use a compatible client or the chat API; the media task commands do not generate chat replies.

Which workflow deserves the higher rate?

For extracting a creator's release date, character names and requested image count from one complete brief, Flash has the common controls and ample output capacity. Pro's larger output ceiling supplies no benefit to a short JSON object. Start with Flash and use explicit missing values so “no release date supplied” does not become an invented date.

For a multi-record dependency review, make the job's rules concrete. An approved character reference is not enough when the shot needs an approved second character and a current inventory asset. A model should identify the missing second approval even if the surrounding production transcript repeatedly calls the shot ready. The fixture above tests this distinction using inventory. Pro may be worth comparing on a failed complex job.

For a very large transformation, the output requirement can settle the choice without a quality claim. If the actual returned document must exceed 65,536 tokens in one response, Flash's ceiling does not fit and Pro permits more output. If independent records can be returned in smaller groups, batching may keep Flash usable and make a failed group easier to retry. Do not split a task whose answer depends on relationships across those groups without carrying those relationships forward.

A selective upgrade is economical only when it stays selective. Under the 50,000-input/3,000-output assumptions below, 900 Flash calls plus 100 Pro calls cost $31.152, against $77.88 for all 1,000 on Pro. If every job first uses Flash and 100 then need Pro, the combined total is $33.748. These are hypothetical totals that explain the retry tradeoff; token use will differ in practice.

What a request costs at equal usage

For a request with 50,000 uncached input tokens and 3,000 billed output tokens:

  • Flash: 50,000 × $0.44/M + 3,000 × $1.32/M = $0.02596.
  • Pro: 50,000 × $1.32/M + 3,000 × $3.96/M = $0.07788.

A thousand such requests cost $25.96 and $77.88. If 40,000 of the input tokens are cached reads and 10,000 are uncached, the per-request figures become $0.00892 for Flash and $0.02684 for Pro. The cached rates are not an exact three-to-one ratio, so calculate totals rather than rounding from the headline.

Two things move the bill more than the model choice:

  • Reasoning is billed as output. The default effort is high. For extraction and classification, test low, or none to skip the reasoning pass, and compare accepted results as well as tokens.
  • Retries count. Cost per accepted answer is what matters, not cost per call.

Selective escalation keeps most of the saving. Send everything to Flash, and send a failed or ambiguous result to Pro together with the evidence for why it failed. If one request in ten escalates at the usage above, and an escalated request pays for both the Flash and the Pro call, the average is about $0.03375 per request, against $0.0779 for Pro on everything. A second model can repeat the same mistake, so keep the task's real correctness check in place.

When Pro's larger output matters

The 384,000-token ceiling matters only when the required reply really exceeds 65,536 tokens, for example an ordered migration plan with the SQL and rollback for every step that must come back together. A short report over a long input does not qualify; input capacity is identical.

Before asking for a huge reply, check that your consumer can validate and store it. A chapter-by-chapter edit, or records split into independent groups, is easier to recover after an interruption. Keep one response only when the parts depend on a shared structure.

Do not confuse the maximum with the default. Both default to 32,768 output tokens, and a reply that reaches the limit is cut off without an error. Set a small explicit value for short tasks such as the fixture above, and a larger one only where the deliverable needs it.

When parallel tool calls matter

Pro accepts parallel_tool_calls; Flash does not. That tells you which request body you may send, not that Flash cannot use tools: both accept tool definitions and tool_choice.

Independent reads are candidates for parallel calls, such as fetching an approved catalog and an inventory record at the same time. The export action depends on both results and must wait. Enforce that dependency in your application instead of treating a proposed tool sequence as permission to act. Setting parallel_tool_calls to false on Pro gives at most one call per turn when each call needs the previous result.

If your loop requires the explicit control, that is a concrete reason for Pro. If it runs sequential lookups and returns one short answer, start on Flash and add concurrency only after the baseline loop works.

Uncensored writing and roleplay

Both models carry an Uncensored tier on SpicyAPI: no platform content filter, and what remains is each model's own behaviour. In our September 2026 content-ladder tests both declined a blunt request for the higher-intensity adult-scene category (L4 in the reviews) when it arrived with no context, and both wrote it once a system prompt set up a fiction-writing frame:

Higher-intensity adult scene (L4)V4 FlashV4 Pro
Direct request, no frameRefused (3 of 3)Refused (3 of 3)
Framed as a story2 rendered, 1 softened1 attempt, refused
System prompt sets the fiction contextRendered (3 of 3)Rendered (3 of 3)

At L5, each model completed three phrasings of the adult-fiction brief and three of a separate non-adult graphic-fiction brief. Flash softened one run in the mildest suggestive category; the other lower-level probes completed. So for adult fiction, frame the job in the system prompt on either model, and do not pay for Pro in the hope that it refuses less. Our V4 Flash and V4 Pro reviews list every run.

Roleplay is output-heavy, which is where the three-to-one price shows: about $0.57 per 100 turns on Flash against $1.72 on Pro, assuming 10,000 uncached input tokens and 1,000 billed output tokens per turn, including any reasoning.

FAQ

Is V4 Flash enough for coding?

It is the cheaper starting point, and the one-codebase benchmark found all three known bugs with Flash. Before a suggested edit, verify the cited source and run the affected tests. A focused Pro pass is an escalation option, not a substitute for those checks.

Is Flash slow?

SpicyAPI’s review recorded 40 output tokens per second for Flash and 46 for Pro. That modest gap is not a reason by itself to triple the token budget, and actual latency depends on reasoning and the reply. Lower effort for short tasks rather than relying on that snapshot as a current speed guarantee.

Why would I choose Flash if Pro is the larger model?

Both hosted IDs accept the same long input, while Flash costs about one third at uncached token rates. For short extraction or classification replies, Pro's larger output ceiling buys nothing by itself. Escalate an ambiguous result when you have a concrete question for the more expensive pass.

Should I start a new integration on V4 or V4.1 Flash?

Start with V4.1 Flash unless you need a specific V4 contract or have a pinned integration to maintain. Only the retired V4 Flash alias routes to V4.1; V4 Pro continues, and these hosted contracts remain separately listed. Recheck any behaviour your application relies on before moving production traffic.

Also in 日本語 · 한국어 · Deutsch · Français · Español · Português (Brasil) · Русский · Italiano · Polski

Try it yourself

Pay only for what you run — no plan, no subscription.

Made with MiniMax H3 · ByteDance Seedance 2.0 Fast