
How to Set Up Gemini in SillyTavern: Connection and Troubleshooting
Your API key works in one tool, but SillyTavern cannot find the model or returns a 400 error. Before changing a preset, establish which API route, URL shape, and model ID the client is actually sending.
Choose the connection path before entering a key
| Setting | Value for this path | Common mistake |
|---|---|---|
| API type | Chat Completion | Choosing Text Completion |
| Source | Custom (OpenAI-compatible) | Pasting this URL into a different provider's native connection |
| Base URL | https://direct.evolink.ai/v1 | Adding /chat/completions again in the base field |
| API key | Your EvoLink key | A key issued by a different provider |
| Model ID | gemini-4-argon | Using the page slug gemini-4 as an API model ID |
https://direct.evolink.ai/v1/chat/completions. SillyTavern's base field takes the shorter value because the client appends the route. EvoLink's request tutorial documents the Chat Completions URL; use the Gemini model page for its current model ID and supported protocols.Verify one short request before adding the preset
If you want to distinguish client configuration from route failure, try this minimal request using a local environment variable:
curl https://direct.evolink.ai/v1/chat/completions -H "Authorization: Bearer $EVOLINK_API_KEY" -H "Content-Type: application/json" -d '{"model":"gemini-4-argon","messages":[{"role":"user","content":"Reply with OK."}],"max_tokens":2048,"stream":false}'A successful raw response would establish that this credential, route, and model worked for that request. It would not establish compatibility with every later tool call or character preset. Record the status and body; do not paste credentials into screenshots or support logs.
In SillyTavern, save the custom profile and send a short test message. If the model dropdown is empty, the official documentation allows a manually entered model ID when a provider does not expose a usable model list. An empty list is a discovery problem, not proof that generation is unavailable.
Restore features one at a time
Start with a plain user message and ordinary text output. Then restore the system/character prompt, multi-turn history, streaming, and any tools or extensions one at a time. When a failure appears, compare the request before and after that change.
| Observation | Inspect first |
|---|---|
| 401 or authentication failure | Credential, destination, and account access |
| 404 or wrong-path response | Base URL, duplicated suffix, and model availability |
| 400 invalid argument | Actual serialized fields, roles, and optional features |
| Empty or truncated reply | Response body, output limit, finish reason, and client parsing |
| Request succeeds but client still warns | Model discovery/status check and installed-client behavior |
Do not turn on “Bypass API status check” merely to hide a failed request. First establish successful generation, then determine whether the warning concerns a separate discovery check.
Diagnose the exact model-turn 400 message
Requests ending with a model turn are not supported, inspect the final serialized conversation. A visible input box does not prove the final sent message is a user turn; prefill, continuation, history conversion, or extensions can change it.For a plain text test, use a fresh chat ending with a real user message and remove assistant-prefill or continuation settings. Reintroduce them separately. If tools are involved, inspect the complete tool-call/result sequence against the provider's requirements rather than deleting tool records or changing role names blindly.
SillyTavern documents prompt post-processing variants, including options that remove tools. A converter can change behavior as well as satisfy role constraints. Check which variant is active and test the intended feature after a change. A community report on another provider or model is a diagnostic clue, not a verified fix for your route.
Inspect long-chat usage and caching
Longer history can increase input usage even if the latest message is short. Record input, output, reported cache usage where available, and total billed amount for comparable requests. Do not infer cache hits simply because the same character prompt appears in the UI.
gemini.enableSystemPromptCache option as OpenRouter-specific. That switch is not evidence that the same behavior applies to this custom EvoLink path.Keep a reproducible support record
Retain installed SillyTavern version, connection type, base URL without credentials, model ID, enabled features, HTTP status, redacted body, and a minimal reproduction. Save the working profile before changing several settings.
For an Agent-assisted investigation, ask it to compare the serialized minimal request and failing request and identify the first unsupported field or sequence. Use EvoLink's model-page instructions for the actual call; do not send a troubleshooting transcript containing a live key.
FAQ
Is the Base URL the full Chat Completions endpoint?
/v1; the client supplies /chat/completions.What if the model list does not contain Gemini 4?
Check the current API model ID and use the documented manual-entry option. Then test generation independently of discovery.
Does every 400 require removing a final assistant message?
No. Inspect the full error. The model-turn diagnosis applies to that specific signature and still needs request inspection.
Can I reuse a Google-issued key on EvoLink?
Use the credential for the destination you are calling. This path uses an EvoLink key.
Does the cache setting guarantee savings here?
No. Confirm provider-specific support and actual reported usage on the selected route.
What should I send with a bug report?
Version, route and model, enabled features, redacted error, and minimal reproduction. Keep credentials out of it.
Sources
- SillyTavern custom endpoint and prompt conversion.
- SillyTavern configuration.
- EvoLink Chat Completions URL.
- EvoLink Gemini 4: model and protocol reference, checked October 16, 2026.


