Most Janitor AI errors come back from the model's side: a 429 is a rate limit the provider enforced, "no endpoints found" is OpenRouter declining to route. Two errors are different, because they happen before any model is involved. A network error means the request never got an answer. A 401 means it got one, and the answer was that the key is not valid. Neither has anything to do with which model you chose, and, with one narrow exception covered at the end, neither has anything to do with your IP address, which is worth saying early because we sell IP addresses and would rather not sell you one for this.
Janitor's own OpenRouter error guide covers the first in one line: network errors mean your API URL is wrong, or you did not refresh after saving changes, and the URL must be exactly https://openrouter.ai/api/v1/chat/completions. This page extends that to every backend people paste, adds a way to prove which of the two settings is broken, and then handles the 401.
The network error: almost always the URL
Janitor's Proxy URL field takes the full path of an OpenAI-format chat-completions endpoint, and it forwards your messages there. If the path is wrong, the provider's server either rejects the request with an error Janitor cannot parse or never answers, and Janitor shows a network error. The mistakes are always the same five: a missing /chat/completions, a URL that ends at /v1, http instead of https, a trailing space copied from a guide, or a domain that belongs to the provider's website rather than its API. Compare yours, character by character, with the right one.
| Backend | Proxy URL, exactly | Key comes from |
|---|---|---|
| OpenRouter | https://openrouter.ai/api/v1/chat/completions | openrouter.ai, Keys page (starts sk-or-) |
| DeepSeek | https://api.deepseek.com/v1/chat/completions | platform.deepseek.com |
| Google Gemini | https://generativelanguage.googleapis.com/v1beta/openai/chat/completions | Google AI Studio |
| Anthropic Claude (compatibility layer) | https://api.anthropic.com/v1/chat/completions | platform.claude.com, Keys |
| Mistral | https://api.mistral.ai/v1/chat/completions | Mistral's console (La Plateforme) |
Two notes from the providers' own documents. Google's OpenAI-compatible base URL is https://generativelanguage.googleapis.com/v1beta/openai/, so the /openai/ segment is part of the path and its absence is the most common Gemini network error. Anthropic's compatibility layer uses https://api.anthropic.com/v1/ as the base, and Anthropic describes that layer as intended for testing and comparing models rather than as a long-term solution, which is worth knowing before you build an evening on it.
After correcting the URL, save, then refresh the page. Janitor's guide lists the unrefreshed page as its own cause, and it catches people who fixed the URL and tested on a stale tab.
Prove which setting is broken with one curl call
Janitor gives you one error and two settings. Curl separates them. From any terminal, with your real URL and key:
curl -sS https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"nvidia/nemotron-3-ultra-550b-a55b:free","messages":[{"role":"user","content":"hi"}]}'
Read the outcome, not the content of the reply:
- A JSON answer with a message in it. URL and key are both fine. The problem is inside Janitor: the URL field differs from what you just typed, the model id is wrong, or the page was not refreshed.
- A JSON error with
401or "unauthorized" in it. The URL is right and the key is wrong. Go to the 401 section. curl: (6) Could not resolve hostor(7) Failed to connect. The URL's domain is wrong, or your network cannot reach it. Check the spelling first; if it is exact, this is the one network-error case that is actually about your network, covered at the end.- An HTML page instead of JSON. You pasted the provider's website address, not its API address.
Swap in the DeepSeek, Gemini, Claude or Mistral URL and a model id from that provider to test those the same way.
The 401: always the key, never the address
A 401 Unauthorized is the provider saying the credential in the request is not valid. It cannot be caused by the URL, because a wrong URL never reaches a provider that could reject a key, and it cannot be caused by your IP address, because providers authenticate by key. The causes:
- A space. Keys copied from a web page often carry a leading or trailing space or a line break. Delete the field, paste again, and check both ends.
- A revoked or expired key. Providers let you revoke keys, and some expire. Generate a new one.
- The wrong provider's key. A Gemini key on OpenRouter's URL, or an OpenRouter key on DeepSeek's, is a 401 every time. Match the key to the URL in the table.
- An inactive or unfunded account. DeepSeek's and Anthropic's APIs need a funded account before a key works; OpenRouter blocks even free models when the balance is negative, which it reports as 402 rather than 401, but the symptom to the user is the same refusal.
- A shared key that was rotated. If the key came from a Discord post, the owner changed it. This is the borrowed-proxy problem, and the fix is your own key.
Janitor's error guide also lists a 402 (insufficient balance) and a 404 (provider restrictions, a retired model, or privacy settings) as neighbours of these errors; our no endpoints found page handles the 404s, and the 429 page the rate limits.
Janitor forwards to the Proxy URL
the full chat-completions path
Wrong URL or unreachable host
network error; fix the URL, refresh
Provider reads the key
Authorization header
Key rejected
401; regenerate, paste clean, match provider
Model answers
any further error is the model's side
The one network-error case that is your network
If the URL is exact and curl reports that it cannot resolve or connect to the host, the request is not leaving your network, or the provider is refusing your region before it answers. School and office networks filter API hosts and, often, janitorai.com itself. Some providers do not serve some countries: Anthropic publishes a supported-countries list, Google lists where the Gemini API is available, DeepSeek's platform terms exclude sanctioned countries, and Janitor AI itself blocked UK addresses from 24 July 2025 until it moved to age verification on 15 June 2026.
That case, and only that case, is what a network proxy is for. On 24 August 2026 we sent 50 free proxies from our free proxy list to janitorai.com and every one of the 20 that could carry HTTPS got the site, so Janitor's own edge is not the obstacle; the obstacle, when it exists, is between you and the internet or between you and the provider. The tool is a single static residential or ISP address in a country where both the site and the provider are offered, from $0.44 per GB on a usage meter, kept for the session, and it is a decision to read against the site's and provider's terms first. For the URL and the key, which is what nearly every network error and every 401 comes down to, it does nothing, and the fixes above are free.
Sources
- Janitor AI Help Center, OpenRouter Error Guide: network errors as a wrong URL or an unrefreshed page, the exact OpenRouter URL, and the neighbouring 402 and 404 errors.
- Janitor AI Help Center, The Absolute Beginner's Guide to Using a Proxy with Janitor, Part Two: the DeepSeek and OpenRouter URLs.
- Google, OpenAI compatibility for the Gemini API: the base URL https://generativelanguage.googleapis.com/v1beta/openai/.
- Anthropic, OpenAI SDK compatibility: the base URL https://api.anthropic.com/v1/ and the note that the layer is intended for testing and comparison.
- Mistral, API reference: https://api.mistral.ai/v1/chat/completions with a Bearer key.
- OpenRouter, API rate limits: 402 on a negative balance.
- HProxy measurement, 24 August 2026: 50 free proxies from our list pointed at janitorai.com; all 20 that could carry HTTPS received the site.