JanitorAI proxy stopped working? Two different breakages, two different fixes
If your JanitorAI DeepSeek proxy died this week, the cause has a timestamp: July 24, 2026, 15:59 UTC, when DeepSeek retired the deepseek-chat and deepseek-reasoner model names. If your configs came up blank instead, that's a separate April incident with an official Recover button. The one-line fix for each, plus the full triage table: 401s, 402s, the save-then-refresh ritual, and region age checks.

On July 24, 2026, at 15:59 UTC, a lot of JanitorAI chats went quiet mid-scene. Nothing on JanitorAI's side changed that afternoon. DeepSeek retired two model names — deepseek-chat and deepseek-reasoner — that thousands of proxy configs and nearly every 2025-era setup tutorial had hardcoded. Requests carrying the old strings now come back as errors, and inside JanitorAI that surfaces as the least helpful sentence in the hobby: proxy not working.
There is a second, unrelated breakage that gets tangled into the same threads: configs that come up blank. That one is not from this week — it traces to an April 8 bug in JanitorAI's redesigned settings panel, and it has an official recovery path most people miss. Two different failures, two different fixes. This page sorts them, then walks the rest of the checklist.
Did it die on July 24? That's DeepSeek retiring its old model names
If your DeepSeek proxy worked on Thursday and failed on Friday, this is almost certainly it. DeepSeek's V4 release notice (April 24, 2026) gave the legacy aliases a 90-day migration window; the window closed July 24 at 15:59 UTC, hard, with no grace alias. The fix in JanitorAI is one field: open API Settings, edit the proxy config, and change Model Name to deepseek-v4-flash. Proxy URL and API key stay as they are. Save, then refresh the page — JanitorAI's own setup guide treats the refresh as a required step, not superstition.
Two details save people a second round of confusion. First, the old names were never separate models: since late April both aliases quietly routed to V4 Flash (deepseek-reasoner to its thinking mode), so switching the string does not change what writes your replies — it only stops the request from dying at the front door. Explicit thinking control lives in a request-body parameter rather than the model name; JanitorAI added custom request parameters to its settings in a May update, but the safe default is plain deepseek-v4-flash, which answers fine without it. Second, the exact error text varies. DeepSeek never published a guaranteed status code for retired names — one bounded July 25 test measured HTTP 400 on both aliases, and write-ups citing 404 are out there too. Do not build your diagnosis on the number; build it on the date and the model string.
And one precision that spares a false alarm: this cutoff only touches configs that call DeepSeek directly (proxy URLs on api.deepseek.com). If your config goes through OpenRouter with a catalog ID like deepseek/deepseek-chat-v3-0324:free, that is OpenRouter's namespace, not DeepSeek's alias — it has its own deprecation calendar and did not break on July 24. If that setup fails, the cause is elsewhere in the table below.
Configs showing up blank? That's April's settings wipe — use the Recover button
The other failure family looks worse than it is: you open API Settings and your proxy URL, model and custom prompt are just gone. On April 8, 2026, JanitorAI shipped a redesign of the proxy settings panel with a bug underneath — per the team's own postmortem, legacy plumbing sent config data as empty values on save, wiping URLs, models and prompts for anyone who touched Save while it was live. The postmortem is worth reading as a model of how to own an incident: same-day fixes, backend guards so empty data can no longer overwrite existing configs, and a Recover button in proxy settings that restores previous configs from your account history in one click.
The Recover button has one deliberate gap: API keys are never stored in the history, for security, so after restoring you re-enter the key yourself. That gap is also why “my key looks weird now” posts circulated — the investigation found no cross-account exposure; what users saw was their own key in the new panel's format. If you left JanitorAI in spring and came back this month to a blank config, this incident is your answer — and if the restored config still fails, check its model name against the July 24 retirement above. The two breakages stack on exactly the people who took a three-month break.
Neither one? Walk the rest of the table
Everything below is boring, which is the point — boring causes are fixable in under five minutes once named. Work top to bottom.
| Symptom | Likely cause | Fix |
|---|---|---|
| Worked until Jul 24, now errors on every message | deepseek-chat / deepseek-reasoner retired | Model Name → deepseek-v4-flash, save, refresh |
| Proxy URL / model / prompt fields suddenly empty | April 8 settings-wipe bug | Recover button in proxy settings; re-enter the API key |
| 401 / unauthorized | Key pasted with spaces, truncated, or revoked | Re-copy the whole key; check it still exists at the provider |
| 402 / insufficient balance | Prepaid balance at $0 (DeepSeek and most direct APIs are prepaid) | Top up at the provider, not in JanitorAI |
| Changes don't take effect | Config saved but page not reloaded | Save, then full page refresh — the reload-required banner exists for a reason |
| “Connection failed” in AU / BR / UK | Age verification (k-ID) not completed for your region | Finish verification per the official help page, then retry |
| One provider fails while others work | Provider-side block or outage (Chutes and NanoGPT went through this in June) | Check the JanitorAI changelog and the provider's status page before rebuilding your config |
| Replies arrive, but loop or degrade | Not a proxy problem — model and context behavior | Why bots loop; measure a chat export in the repetition doctor (free, runs in your browser) |
Why proxy setups break in threes
A JanitorAI proxy chat depends on three parties that fail independently: the settings panel that stores your config, the provider's API contract, and your account state at that provider. This month's wave came from the middle one, April's from the first, and the everyday 401s and 402s from the third. Model-name retirements in particular are becoming routine housekeeping across the industry — we keep a sunset calendar for summer 2026 because six of them land between July 20 and August 31 alone.
Disclosure, since we are on the record anyway: we build Foreverse, a native tavern app where the same bring-your-own-key setup lives in the app with keys encrypted on the device — and a model retirement still breaks a hardcoded name there too, because no client can save you from an upstream contract change. What a client can do is make the fix take one field edit and keep your config from vanishing on save. That bar is the actual lesson of this month.
FAQ
Which model name should I put in my JanitorAI proxy config for DeepSeek now?
deepseek-v4-flash, exactly like that, in the Model Name field of your proxy configuration — then save and do a full page refresh. The old names deepseek-chat and deepseek-reasoner stopped resolving on July 24, 2026 at 15:59 UTC. If you were using deepseek-reasoner, you were already getting V4 Flash's thinking mode through the alias since late April, so the switch does not downgrade you; explicit thinking control needs a request-body parameter, and the safe default on JanitorAI is plain deepseek-v4-flash, which answers without it.
Did JanitorAI leak my API key during the settings bug?
JanitorAI's official investigation says no. The April 8, 2026 bug blanked configs on save — it did not cross accounts, and what some users reported as "a stranger's key" was their own key rendered in the new panel's format. The team's postmortem states every query is scoped to the logged-in user's ID. Keys are also never stored in the recovery history, which is why the Recover button restores URLs, models and prompts but asks you to re-enter the key. If any of this leaves you uneasy, rotating the key at your provider costs two minutes.
Why does the model name from my 2025 tutorial return an error?
Tutorials age faster than APIs, and there are two separate naming systems in play. Direct DeepSeek configs use DeepSeek's own names, where deepseek-chat is now retired. OpenRouter configs use OpenRouter's catalog IDs, like deepseek/deepseek-chat-v3-0324:free — a different namespace with its own deprecation schedule, untouched by the July 24 cutoff. Trust the provider's live model list over any screenshot: api-docs.deepseek.com for direct, openrouter.ai/models for OpenRouter.
My proxy connects now, but replies keep repeating themselves. Is that still a proxy problem?
No — once responses arrive, the connection has done its job. Loops are model-and-context behavior: the reply history feeds back into every request, and repeated phrasing snowballs. That failure family has its own write-up (why your bot keeps looping, linked below), and if you want a number instead of a hunch, paste a chat export into our free repetition doctor — it runs locally in the browser and scores how much of each reply is recycled text.
Questions or ideas? Join our Discord →