Inference APIs
Reference/Errors/DeepSeek API

DeepSeek API 400 "Model Not Exist": deepseek-chat and deepseek-reasoner were retired

For two years deepseek-chat was the model id in every DeepSeek example, and deepseek-reasoner was the thinking version of the same model. In late July 2026 the DeepSeek API stopped accepting both. Requests that had worked the day before came back with HTTP 400 and the message Model Not Exist. The current docs list two ids, deepseek-flash and deepseek-v4-pro, and do not mention the old names at all, so anyone who pinned the old id in a config file, a cron job or a library default found out from the error.

Last verified September 18, 2026 against DeepSeek API docs: models and pricing, GitHub: apps failing with the retired id (July 25, 2026), GitHub: "mark deepseek-chat and deepseek-reasoner aliases as deprecated" (July 26, 2026) · 4 min read

ProviderDeepSeek API (api.deepseek.com)
HTTP status400 Bad Request
Error typeinvalid_request_error
MessageModel Not Exist
Modelsdeepseek-chat and deepseek-reasoner. deepseek-v4-flash still resolves but is served by V4.1 Flash
When it startedThe first GitHub reports are dated July 24 to 26, 2026. DeepSeek did not publish a deprecation notice that we could find; the current docs simply no longer list the ids
How commonAbout 580,000 files on GitHub contain deepseek-chat and 100,000 contain deepseek-reasoner (GitHub code search, September 17, 2026)
Can you wait it out?No. The ids are gone. Retrying returns the same 400
Short answer
  • Fastest fix at DeepSeek: rename deepseek-chat to deepseek-flash and add "thinking": {"type": "disabled"}, or the model will think by default and your bill and latency change. Rename deepseek-reasoner to deepseek-flash as is.
  • No code change: point base_url at an endpoint that still accepts the old ids. Ours does, with the same thinking defaults, on US GPUs.
  • Check libraries: if a framework has deepseek-chat as its default model, update the framework, not just your call.

What the error looks like

HTTP 400 · DeepSeek API (api.deepseek.com)
{
  "error": {
    "message": "Model Not Exist",
    "type": "invalid_request_error",
    "param": null,
    "code": "invalid_request_error"
  }
}

The status is 400, not 404, so many SDKs report it as a generic BadRequestError and the model id is not always in the message. If a request that has not changed starts failing with this body, the model id is the first thing to check.

The same body comes back for any id DeepSeek does not serve, including typos. What is new since July is that two ids that used to work are on that list.

Which ids changed, and what they map to now

Id you may have in codeWhat it wasStatus at api.deepseek.comCurrent DeepSeek idSame id on Inference APIs
deepseek-chatThe chat endpoint, non-thinking mode (V3 line, then V4 Flash)Rejected with 400 "Model Not Exist" since late July 2026deepseek-flash with thinking switched offWorks unchanged; thinking off by default
deepseek-reasonerThe same model in thinking modeRejected with 400 since late July 2026deepseek-flash (thinking is its default)Works unchanged; thinking on
deepseek-v4-flashDeepSeek V4 Flash (the 0731 release)Accepted, but served by DeepSeek-V4.1-Flash and billed at the Flash pricedeepseek-flashWorks and still runs the 0731 build
deepseek-v4-proDeepSeek V4 Pro (0813 release)Currentdeepseek-v4-proWorks unchanged

The thinking-mode detail matters. deepseek-chat never returned reasoning tokens. deepseek-flash does by default, and reasoning tokens are billed as output. A rename without switching thinking off makes short requests slower and more expensive than they were.

Fix 1: rename the id at DeepSeek

Change the model string and, for anything that used deepseek-chat, disable thinking:

Python (openai SDK) · keep calling api.deepseek.com
from openai import OpenAI

client = OpenAI(api_key="sk-...", base_url="https://api.deepseek.com")

# deepseek-chat was the NON-thinking mode. deepseek-flash thinks by default, so switch it off
# or you will pay for reasoning tokens you did not get before.
resp = client.chat.completions.create(
    model="deepseek-flash",
    messages=[{"role": "user", "content": "Summarise this in one line: ..."}],
    extra_body={"thinking": {"type": "disabled"}},
)

Then search your dependencies. LangChain, LlamaIndex, LiteLLM, Dify and many smaller wrappers shipped deepseek-chat as a default at some point. The GitHub reports for this error are mostly libraries and tools whose defaults had not been updated, not hand-written calls.

Fix 2: keep the old ids and change the base URL

DeepSeek V4 is an open-weight model, so hosts other than DeepSeek run it. We accept the retired ids as aliases and keep their behaviour: deepseek-chat runs with thinking off and deepseek-reasoner with thinking on, both on DeepSeek V4 Flash (the 0731 release). deepseek-flash maps to V4.1 Flash, as at DeepSeek. Tool calling and tool_choice work on all of them, including tool_choice: "required", which the old reasoner refused.

Python (openai SDK) · keep the old ids, change one line
from openai import OpenAI

client = OpenAI(api_key="your-inferenceapis-key", base_url="https://api.inferenceapis.com/v1")

# "deepseek-chat" and "deepseek-reasoner" keep working. deepseek-chat answers without thinking,
# deepseek-reasoner thinks first, exactly as before. Both run DeepSeek V4 Flash (0731) on US GPUs.
resp = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "Summarise this in one line: ..."}],
)
print(resp.choices[0].message.content)
Shell · check the three ids in ten seconds
for m in deepseek-chat deepseek-reasoner deepseek-flash; do
  curl -s https://api.inferenceapis.com/v1/chat/completions \
    -H "Authorization: Bearer $INFERENCEAPIS_API_KEY" -H "Content-Type: application/json" \
    -d "{\"model\":\"$m\",\"messages\":[{\"role\":\"user\",\"content\":\"Say ok\"}],\"max_tokens\":20}" \
    | python3 -c "import sys,json; d=json.load(sys.stdin); print('$m', '->', d['choices'][0]['message']['content'], d['usage'].get('completion_tokens_details'))"
done

The ids are listed by GET /v1/models, so client-side validation that checks the model list passes too.

What it costs, side by side

DeepSeek API, deepseek-flash (peak / off-peak)Inference APIs, deepseek-chat or deepseek-reasoner
Input, cache miss$0.30 / $0.15 per 1M$0.19 per 1M
Input, cache hit$0.006 / $0.003 per 1M$0.04 per 1M
Output$1.20 / $0.60 per 1M$0.38 per 1M
Model servedDeepSeek-V4.1-FlashDeepSeek-V4-Flash-0731 (V4.1 Flash is deepseek-flash here, $0.40 / $1.60)
Where it runsDeepSeek, ChinaTogether AI GPUs, United States
RetentionSee DeepSeek's privacy policyZero, see /trust
Rate limitsDynamic, per accountNone published; prepaid balance is the only cap

DeepSeek's prices are from its pricing page on September 17, 2026, and change by time of day. Ours are flat. If you are price-driven and can accept China hosting, DeepSeek off-peak is cheaper. If location, retention or a flat price matters, that is the case for a US host.

Frequently asked questions

Did DeepSeek announce the retirement?

Not in any place we could find. The docs were updated to list the new ids and the old ones stopped working. We date it from the first GitHub reports, July 24 to 26, 2026. If you know of an official notice, tell us and we will link it.

Is deepseek-flash the same model as deepseek-chat was?

No. deepseek-chat last pointed at DeepSeek V4 Flash; deepseek-flash is DeepSeek V4.1 Flash. DeepSeek also serves requests for the legacy deepseek-v4-flash id from V4.1 Flash now. If you need the 0731 build of V4 Flash specifically, it is deepseek-ai/DeepSeek-V4-Flash here.

Does deepseek-chat on Inference APIs return reasoning_content?

No. Thinking is off for that alias unless you send reasoning_effort or reasoning: {enabled: true} yourself. deepseek-reasoner returns reasoning_content on the message, and as delta.reasoning_content when streaming.

What about deepseek-coder?

That id was merged into deepseek-chat in 2024 and has not existed at DeepSeek since. We do not alias it.

Where Inference APIs fits

The second fix is what we sell. deepseek-chat, deepseek-reasoner, deepseek-v4-flash and deepseek-flash are all accepted ids on our endpoint, so a base URL change is the whole migration. The models run on GPUs in the United States with zero retention, billed per token from a prepaid balance. We are not cheaper than DeepSeek's own off-peak price and we say so in the table above.

Something changed or wrong? Tell us and we will re-verify the entry.