← Apps, keys and settings

"Failed to fetch" in JanitorAI: what it means and how to fix it

Updated

"Failed to fetch" means your browser tried to reach the proxy address and got nothing usable back, so there is no provider message to show. Most often the tab was not reloaded after saving the proxy, the URL has a typo or stray space, or an extension blocked the call. With UnsavedAI, use the full URL ending in /v1/chat/completions, save, reload the tab and send again.

Try it now, free, no account neededStart a story with The NarratorAny story you want, you choose

What the message actually means

"Failed to fetch" is not written by JanitorAI or by your provider. It is the browser's own wording when a web request dies before any answer arrives: the address could not be reached, the connection was cut, or the browser refused to hand the answer to the page. Firefox says "NetworkError when attempting to fetch resource." for the same thing, and Safari says "Load failed".

That is what sets it apart from errors such as 401 or "model not found". Those come from a provider that received your message and replied. With "Failed to fetch" nobody replied, so the fix lies on the road between your browser and the provider, not in your key or model name.

The causes, most common first

  • The proxy was saved but the tab was never reloaded, so JanitorAI is still using whatever it loaded when the page opened.
  • The URL is off: a space before or after it, a line break from copying, a missing https://, or a misspelled domain.
  • A browser extension is in the way. Ad blockers, script blockers and privacy tools sometimes stop requests to domains they do not recognise.
  • The provider is down or restarting, or your own connection dropped for a moment.
  • The provider does not accept calls from a browser tab. JanitorAI sends proxy requests from your browser, and services built only for server apps refuse those; the browser reports the refusal as "Failed to fetch" too.

Fixing each one

  • Reload: save the proxy configuration, reload the whole JanitorAI tab (F5 on a computer, pull down on a phone), open the chat again and send a one-word message.
  • URL: click into the field, select everything, delete it and paste a fresh copy from your provider. It should start with https:// and end exactly where the provider's address ends.
  • Extensions: open a private window, where most extensions are off, sign in to JanitorAI there and try once. If it works, allow the provider's domain in your blocker or switch extensions back on one at a time.
  • Outage or network: check the provider's status or model page, then try another network, such as mobile data instead of Wi-Fi.
  • Server-only provider: there is no setting that fixes this inside JanitorAI. Pick a provider that supports JanitorAI's proxy.

How to tell which cause you have

  • Fails on every message right after you edited the proxy: the reload or the URL.
  • Worked yesterday, fails today and you changed nothing: an outage, or an extension that updated.
  • Works in a private window but not your usual one: an extension.
  • Works on mobile data but not home Wi-Fi: the network, a VPN or a DNS filter.

If you are comfortable with developer tools, press F12 and open the Console before sending. A line mentioning CORS points to the browser-call cause; ERR_NAME_NOT_RESOLVED means the domain in the URL is misspelled.

Failed to fetch with UnsavedAI

Our gateway never sees a request that ends in "Failed to fetch", so the message arrives exactly as the browser writes it. JanitorAI is the one site allowed to call our API straight from a browser tab, so the server-only cause does not apply; any other web page gets "Server clients only" instead.

Check three things. The Proxy URL is the full address ending in /v1/chat/completions, copied from the Setup page. The key starts with sk-. The model is gemma-4-12b, or gemma-4-31b on Priority. Save, reload the tab, send "hi". If it still fails, look at Models: a model shown as restarting comes back within a minute or two.

If a real message replaces "Failed to fetch", such as "Not found", the request did arrive and the URL probably stops at /v1. Paste any error into the "If a message fails" box on Setup and it shows the fix. Every field is in the JanitorAI guide.

Questions people ask

Is "Failed to fetch" caused by my API key?

Almost never. A wrong key gets an answer from the provider, which shows as a 401 or an invalid key message; see 401 Unauthorized errors.

Why does it work on my phone but not my laptop?

Different browser, different extensions and often a different network. Try the laptop in a private window, then on another connection.

Can a VPN cause it?

Yes, if the VPN or a blocker built into it drops the request. Switch it off for one test message to find out.

Characters for this story