JanitorAI
Use these fields when configuring a custom OpenAI provider in JanitorAI.
OpenAIhttps://composite.lucidity.sh/v1/chat/completionsYOUR_API_KEYminimax/minimax-m3JanitorAI supports custom OpenAI-compatible providers under its API settings. Point it at Composite's OpenAI-compatible chat completions endpoint to run community presets, lorebooks and plugins on your own provider key, or on Synth, LuciditySH's creative model, free on Composite, with no key at all.
JanitorAI does not run its own models. It sends every message to whichever OpenAI-compatible API you configure under Settings → API, and shows you the reply. People call that connection a "proxy" because the request passes through a service that stands between JanitorAI and the underlying model. The same term shows up as "reverse proxy" in older setup threads, and it means the same thing here. Composite is one such proxy: it forwards your request to a model you choose, handles authentication and billing, and returns an OpenAI-formatted response JanitorAI already knows how to read. You are not limited to one model behind it: a single Composite API key can reach every model on the platform, so switching characters or stories to a different model does not require a new key or a new proxy setup.
Copy these directly into JanitorAI's API settings. Note that JanitorAI expects the full chat completions URL, not just the base URL.
Use these fields when configuring a custom OpenAI provider in JanitorAI.
OpenAIhttps://composite.lucidity.sh/v1/chat/completionsYOUR_API_KEYminimax/minimax-m3OpenAI.https://composite.lucidity.sh/v1/chat/completions into the OpenAI API URL field.minimax/minimax-m3) into the model field, or leave it blank to use the default.https://composite.lucidity.sh/v1/chat/completions for JanitorAI specifically.lucidityai/synth-2.5-flash, LuciditySH's creative model, free on Composite.The most common problems when using Composite as a JanitorAI proxy, and how to fix them.
Work through these in order: confirm the endpoint is the full https://composite.lucidity.sh/v1/chat/completions URL and not just the domain; confirm the API key was pasted with no leading or trailing spaces and no Bearer prefix typed in front of it; and confirm the model field contains an ID Composite actually serves, such as minimax/minimax-m3, rather than a name from another provider. Send a short test message before trusting a longer chat to the connection.
A 429 response on Synth means today's Synth requests are used up: 80 a day, or 300 a day in your first week after joining with a referral code. They reset once a day at the time shown on your account page, and credits or a plan make Synth unlimited. A key bound to your own provider has no Composite daily limit, so a 429 there is your provider's own rate limit.
Composite API keys start with cmp- and are sent as a bearer token, so the OpenAI API Key field should hold only the key itself. JanitorAI adds the Bearer header for you. An invalid-key error usually means the key was revoked, mistyped, or deleted; generate a fresh one on the API Keys page. Each key can also be scoped to specific models, so a key that works for one model can still fail on another it is not allowed to use.
| Use case | Suggestion |
|---|---|
| General roleplay, default choice | minimax/minimax-m3 |
| No provider key yet | lucidityai/synth-2.5-flash (Synth), free on every account |
| Long-running character or campaign | A higher context-length model from the Models page, paired with a memory-layer setting on the key |
| Highest reply quality, budget flexible | Compare current premium models on the Models page |
The catalog changes as models are added, so treat the Models page as the source of truth rather than a fixed list.
Every model has a fixed context window. Once a conversation exceeds it, Composite trims older messages to keep the request within limits, so long-running characters can start losing early details unless the key is set to one of Composite's memory-layer modes, which summarize and retrieve older history instead of dropping it outright. If replies start ignoring established facts in a long JanitorAI chat, check the key's memory-layer setting before assuming the model itself is at fault.
Still stuck after working through the above? The full docs cover account setup, API keys, and model access in more detail, and the feedback page reaches Composite directly if something looks broken rather than misconfigured.