Checked 2026-11-02

Janitor AI proxy not working: empty response, 400, 401, 404, 429 and the fix for each

Every message Janitor prints when a proxy fails, what it means on the API side, and the fix. If there is no code, two curl commands print the one Janitor hides.

A Janitor AI proxy fails for one of a handful of reasons, and Janitor's own message usually names which: the status code the API returned, or the words "No response from bot". The table below is written from the API's side, so each row says what RelaySwitch actually sent back and which field to change. Clearing cookies and toggling a VPN, the advice on most pages that rank for this, fixes none of the rows below.

Three settings carry almost every failure: a Proxy URL that stops at /v1 (Janitor posts to the address as given), a Model Name that is a display name instead of the id, and a key with a space around it. A correct configuration looks like this:

text
1Model Name: glm-5.3-flash-uncensored
2Proxy URL: https://api.relayswitch.io/v1/chat/completions
3API Key: sk-relay-...
4Custom Prompt: (leave blank)

01Match the message

Janitor showsWhat happened on the APIFix
No response from bot (pgshag2) / an empty reply bubbleThe request succeeded but the reply had no text: a thinking model spent max tokens before writing, a 402 (empty balance or key budget), or a filtered model refused the card.Raise max tokens to 1,000 or more in generation settings; check the balance in the console; or type an uncensored build as Model Name. Details in the next section.
ERROR 400: Bad Request / The AI provider rejected this requestA field the model refused, or a Custom Prompt that made the body invalid.Clear Custom Prompt, reset generation settings to the defaults, send again.
ERROR 401: Invalid CredentialsThe key is missing, mistyped, revoked, or has a space before or after it.Copy the key again from the console, paste it into API Key, Save Settings, refresh.
ERROR 402: Insufficient CreditsThe prepaid balance is empty, or the key reached the budget set on it.Top up from $10, or raise the budget on the key. The next message goes through.
ERROR 403The key is narrowed to a model list and Model Name is not on it (scope_denied).Add the model to the key, or change Model Name to one on its list.
No endpoints found for model name (404)model_not_found: the id is misspelled or not in the catalog. route_not_found: the Proxy URL stops at /v1 or has a typo in the path.Paste the id from the Models page. Set Proxy URL to https://api.relayswitch.io/v1/chat/completions exactly.
ERROR 429: Rate LimitedThe key hit its requests-per-minute or tokens-per-minute limit.Wait a few seconds before the next message or swipe, or raise the limit on the key.
ERROR 500 / 502 / Provider returned error / Model DownA host serving the model answered an error. The API hands the request to the next host for that model at the same price; a 503 means none answered.Send again. If it repeats, check the model on the status page or switch Model Name.
A network error occurred, try again later / Failed to fetchJanitor could not reach the URL from its own servers, or the page lost its saved proxy state. Nothing reached the API.Save Settings again, refresh, send a real message. Skip Check Key/Model.
Unknown prompt response from workerJanitor-side: the page lost its saved proxy state.Refresh the page, confirm the configuration reads Active, send again.
Proxies are not allowed on this characterThe character’s creator switched proxies off; no request is sent.Pick another character, or allow proxies on one you made.

Error headings as Janitor prints them (its help center, read 2026-11-02); the middle column is what the RelaySwitch API returned.

02Empty response, or "No response from bot"

This is the one message with no code, so it gets its own section. The request went through and was billed for its input, and the reply came back with no text. Three causes, in the order to try them:

  1. A thinking model and a small max tokens. Builds that reason before they answer spend part of the reply budget on thinking. Janitor's proxy form has no max tokens field; it lives in generation settings. Raise it to 1,000 or more, or type a build without a thinking step: GLM-5.3 Flash Uncensored (glm-5.3-flash-uncensored, $0.00032 for one 2K-in / 300-out turn), GLM-5.3 Uncensored (glm-5.3-uncensored, $0.00082 for one 2K-in / 300-out turn), Gemma 4 31B Fabled (gemma-4-31b-fabled, $0.0012 for one 2K-in / 300-out turn).
  2. A 402 shown as a blank bubble. Some Janitor layouts show an empty balance or a spent key budget as an empty reply instead of the code. The console shows the balance and each key's budget; a top-up or a higher budget fixes the next message.
  3. A filtered model refusing the card. A flagship with its developer's filter can return a stop with no text on a card it will not play. The uncensored builds answer the card as written, with no jailbreak prompt riding along as paid input.

A Proxy URL that stops at /v1 does not produce an empty reply here; it produces the 404 row above. If you see an empty bubble and the URL is wrong, fix the URL first and read the message again.

03The two commands that name the cause

Janitor hides most of the API's answer. From any terminal (or the console's Requests page, which lists every call with its status and error text), first prove the key:

bash
1curl https://api.relayswitch.io/v1/models -H "Authorization: Bearer sk-relay-..."

A working key returns a list whose id values are the exact strings for Model Name; a 401 here is the key. Then send one message the way Janitor does, with -i so the status line prints:

bash
1curl -i https://api.relayswitch.io/v1/chat/completions \
2 -H "Authorization: Bearer sk-relay-..." \
3 -H "Content-Type: application/json" \
4 -d '{"model": "glm-5.3-flash-uncensored", "max_tokens": 50,
5 "messages": [{"role": "user", "content": "Say ok."}]}'

200 with a reply means the proxy is fine and the problem is in Janitor's page or settings (save, refresh, send). 200 with an empty content and a finish_reason of length is the thinking case: raise max tokens. 402, 404 and 429 map to the rows above, and x-uplink-request-id on any answer identifies the exact call for support.

04When it is not your configuration

A host behind a model can fail; the key does not see most of it. A route that answers a 5xx or a 429 is retried on the next route for the same model before Janitor gets a reply, at the model's own price, and a request that still fails is not charged. The status page shows each model's daily canary and the API's incident history, and the proof page shows today's real-model verdict per id. If a model reads "down", type another id; the price of a message on each is on the ranked list.

Prices on this page are read from the live catalog: GLM-5.3 Flash Uncensored bills $0.1053 per million input tokens and $0.3685 per million output. Keys are prepaid from $10 by card or crypto in the console, no KYC, no subscription.

05Sources

Error headings, the Active / Save Settings / refresh flow and the Check Key/Model caveat are from Janitor's help center (help.janitorai.com: the proxy error guides and the quickstart, read 2026-11-02). Status codes and error names (model_not_found, route_not_found, scope_denied) are the RelaySwitch API's own, from the docs. Setup field by field: JanitorAI proxy setup.

Questions

What does it mean when Janitor AI says "proxy not allowed"?
The character’s creator switched proxies off for that character when editing it. No proxy setting on your side changes that: pick another character, or edit a character you made yourself and allow proxies.
What do I do if my proxy is not working on Janitor AI?
Read the message Janitor prints and match it to the table on this page; each code names one field. If there is no code, run the two curl commands: the first proves the key, the second prints the status code Janitor hides. Most proxies that "stop working" are a Proxy URL that stops at /v1, a Model Name that is not an exact id, or a key with a space around it.
Why does Janitor AI say "Proxy error: No response from bot"?
The API answered, but with no reply text. On a model that thinks before it answers, a small max tokens budget was spent on thinking: raise max tokens to 1,000 or more in Janitor’s generation settings, or switch to a build without a thinking step such as GLM-5.3 Flash Uncensored (glm-5.3-flash-uncensored). The other causes are an empty balance or key budget (a 402 Janitor shows as a blank bubble) and a filtered model refusing the card; an uncensored build answers it.
How do I enable a proxy on Janitor AI?
Open a chat whose character allows proxies, click the menu at the top right, choose API Settings, pick Proxy under Provider, click + Add Configuration, and fill Model Name, Proxy URL (https://api.relayswitch.io/v1/chat/completions), API Key. Click Add, Save Settings, refresh the page, and confirm the configuration reads Active.
What is Janitor AI proxy error 402?
The prepaid balance behind the key is empty, or the key reached the budget set on it. Top up from $10 or raise the budget on the key in the console; the next message goes through. Some layouts show a 402 as an empty reply instead of the code.
What is Janitor AI proxy error 404, "No endpoints found for model name"?
One of two fields. A Model Name the catalog does not list gets model_not_found; a Proxy URL that stops at /v1 or misspells the path gets route_not_found. Paste an id from the Models page and set Proxy URL to https://api.relayswitch.io/v1/chat/completions exactly.
What is Janitor AI proxy error 429?
The key hit its requests-per-minute or tokens-per-minute limit, usually from fast swipes or a group chat. Wait a few seconds and send again, or raise the limit on the key in the console. A 429 from a host behind the model is retried on another host before you see it, and a failed request is not charged.
Janitor AI shows "A network error occurred, try again later". Is that the proxy?
Usually not. Janitor relays proxy requests from its own servers, so a network error is between Janitor and the API or inside Janitor’s page state: save the settings again, refresh, and send a message instead of pressing Check Key/Model, which Janitor’s own quickstart calls unreliable. If the curl check on this page answers 200, the proxy is fine.
Does the same fix work for SillyTavern and Chub?
Yes, with one difference: SillyTavern, Chub and Risu take the base URL https://api.relayswitch.io/v1 and add /chat/completions themselves; Janitor takes the full https://api.relayswitch.io/v1/chat/completions. The key, the ids, the max tokens rule and the curl check are the same.

A proxy that tells you what failed

Prepaid from $10 by card or crypto. Every call has a request id, a status code and a receipt.

Join on Telegram