DeepSeek - Aug 13, 2026

DeepSeek V4 Pro vs Flash Routing With a Cache Ledger

Refresh DeepSeek V4 Pro and Flash routing for production agents using source-dated prices, cache-hit accounting and OpenAI-compatible smoke tests.

Target markets: US, UK, Canada, Germany, Japan, SingaporeAgent routingOpenAI-compatible

The 2026-08-13 AIWave keyword report keeps DeepSeek API inside the P0 cluster, but it also flags a quality problem: part of the volume comes from blacklisted markets while Tier 1 impressions still need stronger click-through. The correct response is not another broad DeepSeek overview. A useful Tier 1 page should help a US, UK, German, Dutch, Japanese or Singaporean developer route DeepSeek V4 Pro and Flash inside a production agent, preserve cache-hit economics and record source-dated pricing evidence before traffic reaches a customer account.

Keyword source: the 2026-08-13 report highlights DeepSeek API, DeepSeek V4, DeepSeek access overseas and direct-API routing pain points. This article avoids the 2026-08-11 cache-ledger angle by focusing on a post-report routing refresh and operational cache logs.

Pricing Inputs Checked on 2026-08-13

DeepSeek's public API pricing page checked on 2026-08-13 lists V4 Flash and V4 Pro with separate cache-hit input, cache-miss input and output rows, plus OpenAI-format and Anthropic-format base URLs. The same page says pricing is expected to rise, which makes dated evidence part of the implementation rather than a footnote. Treat the numbers below as planning values that must be rechecked against account billing before production rollout.

RouteCached inputFresh inputOutputProduction use
deepseek-v4-flash$0.0028 / 1M$0.14 / 1M$0.28 / 1MExecution, extraction, short revisions and repeated coding-agent steps.
deepseek-v4-pro$0.003625 / 1M$0.435 / 1M$0.87 / 1MPlanning, incident review, architecture, migration and security-sensitive analysis.
Shared constraintsCache state must be loggedFresh context changes costOutput caps still matterDo not compare only headline input rows.

The practical takeaway is that a long coding session can become affordable or expensive based on repeated context. If the same repository summary, design document or retrieval bundle is sent again, cache hits should be visible in the application ledger. If prompts churn every call, fresh input dominates the estimate.

Build the Router Around Cache State

A router should classify the task, estimate the route and write cache assumptions before the API call. That makes later invoice reviews explainable. A customer success team can answer why Pro was selected for an incident review, while engineering can see when Flash handled routine execution. The code keeps the OpenAI-compatible pattern and uses the required placeholder key.

from dataclasses import dataclass
from openai import OpenAI

client = OpenAI(api_key="YOUR_API_KEY_HERE", base_url="https://api.aiwave.live/v1")

@dataclass(frozen=True)
class DeepSeekRoute:
    cached_input_per_m: float
    fresh_input_per_m: float
    output_per_m: float
    source_date: str

PRICES = {
    "deepseek-v4-flash": DeepSeekRoute(0.0028, 0.14, 0.28, "2026-08-13"),
    "deepseek-v4-pro": DeepSeekRoute(0.003625, 0.435, 0.87, "2026-08-13"),
}

def estimate(model: str, input_tokens: int, output_tokens: int, cache_hit_ratio: float) -> float:
    price = PRICES[model]
    cached = input_tokens * cache_hit_ratio
    fresh = input_tokens - cached
    return round(
        cached / 1_000_000 * price.cached_input_per_m
        + fresh / 1_000_000 * price.fresh_input_per_m
        + output_tokens / 1_000_000 * price.output_per_m,
        6,
    )

def choose_step(task: str, input_tokens: int, output_tokens: int, cache_hit_ratio: float) -> dict:
    needs_planning = any(word in task.lower() for word in ("architecture", "incident", "security", "root cause"))
    model = "deepseek-v4-pro" if needs_planning else "deepseek-v4-flash"
    return {
        "model": model,
        "estimated_usd": estimate(model, input_tokens, output_tokens, cache_hit_ratio),
        "cache_hit_ratio": cache_hit_ratio,
        "pricing_checked_at": PRICES[model].source_date,
    }

print(choose_step("incident root cause review", 180_000, 7_500, 0.62))

Do not let the model switch happen only inside client code. Production systems should keep route policy on the server, with a versioned rule set, output caps, retry policy and rollback target. The client can request a capability, but the server should decide whether DeepSeek V4 Pro, DeepSeek V4 Flash or another Chinese model family owns the step.

What the Cache Ledger Should Store

This ledger is the difference between a demo and a production migration. Developers searching for DeepSeek API information from Tier 1 countries are often comparing direct provider access, broad gateways and focused Chinese-model APIs. AIWave should win the query by showing the route controls that make the spend auditable.

The page should link to AIWave Chat Completions, the live model catalog and pricing, then cite the DeepSeek pricing page as the external source. Related articles can cover Qwen, GLM, Kimi and ERNIE, but this article should stay centered on DeepSeek V4 routing. That matches the keyword report without repeating the earlier overseas-access page.

The copy should avoid price-floor language and should not claim unverified uptime or customer scale. The stronger message is premium yet affordable access to Chinese models with dated source checks, cache-aware routing and a ledger that engineering and finance can inspect together.

External sources checked

Related AIWave guides

FAQ

Why route DeepSeek V4 Pro and Flash separately?

Flash is a practical execution route, while Pro should be reserved for planning, incident, security and architecture steps where mistakes are more expensive.

Why does cache state belong in the ledger?

DeepSeek pricing separates cache-hit and cache-miss input, so repeated context and fresh context can produce very different estimates.

Can this be used with an OpenAI-compatible client?

Yes. AIWave documents an OpenAI-compatible Chat Completions endpoint and the example uses the standard client shape with a placeholder key.