Plug in. Carry on.
Connect SillyTavern or an OpenAI-compatible application
with one base URL, one model ID, and your API key.
Explore all client and API guides →
Bring these three things.
Sign in to your console and create a key. Free access requires explicit collection consent. Keys appear only once, so save yours before leaving the page.
- API base URL
- Copy the exact URL from your console. It ends in
/v1. - API key
- Your private key from the console. Do not share it or put it in public code.
- Model ID
- Copy an available model ID from Models or the authenticated
GET /v1/modelsendpoint.
Connect SillyTavern.
Open your API connection settings.
Choose Chat Completion as the API type, then the custom OpenAI-compatible source. The exact label may vary by SillyTavern version.
Paste your connection details.
Use the API base URL from your console as the custom endpoint and your Garage API key as the credential. The base URL should contain
/v1once; do not add/chat/completionsin a base-URL field.Select the model.
Refresh the model list. If your client asks for a model ID manually, paste the exact ID shown on the Models page.
Set context and response length.
Keep your entire prompt plus requested output within the context limit shown in your console. Begin with a short response to check the connection.
Enable streaming and send a message.
Try one character conversation first, then check regeneration and stopping a response. Some sampling controls are model-specific and may not be supported.
Changing plans does not require a different API URL.
Open your consoleA familiar API.
Set API_BASE to your console’s URL and GARAGE_API_KEY to your private key. This POSIX shell example uses gemma-4-12b; choose an available model from Models if the catalog has changed.
curl "$API_BASE/chat/completions" \
-H "Authorization: Bearer $GARAGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemma-4-12b",
"messages": [
{"role": "user", "content": "The observatory lights came on at midnight. Continue the scene."}
],
"max_tokens": 512,
"stream": true
}'For an OpenAI-compatible SDK, override its base URL and API key. Use Chat Completions. Other API families, tools, images, and structured outputs are not implied by compatibility and need explicit model support.
Paid requests go next.
Requests already generating are allowed to finish. When a worker has capacity, waiting Priority requests are admitted before waiting free requests. Priority users also wait when the workers are busy.
Free
One concurrent request. Uses spare capacity and may wait longer when paid demand is sustained.
Priority
Up to four concurrent requests. Goes ahead of waiting free traffic; no minimum response speed is promised.
There is no daily token cap. Request-rate limits, bounded queues, context limits, and available compute still apply. Retry temporary capacity errors with a delay rather than sending parallel retries.
Context, reasoning, and streams.
The context cap covers input plus output. Character cards, system instructions, conversation history, and the new message all consume input tokens. Leave room for the generated response.
Streaming chat responses arrive as server-sent events. Compatible models may emit reasoning separately from final answer text; whether your client displays it depends on its support. Exposed reasoning is part of the generated output budget.
Stop unwanted generations in your client to release capacity. For retry logic, do not replay a stream after text has already arrived without telling the user: a new request can produce a different answer.
A few quick checks.
My key is rejected.
Copy the full key without spaces. If you revoked it, create a replacement and update that client. Check your account and plan state in the console.
The model list is empty.
Check the base URL and credential. Visit Models to see whether the serving pool is configured. A worker outage or incomplete setup can make models temporarily unavailable.
The response is taking a long time.
Workers may be busy or your prompt may be long. Free requests wait behind paid demand. Avoid submitting duplicate requests; they add queue pressure.
I see a context or output-limit error.
Reduce conversation history or the maximum generated response. Your prompt plus requested output must fit within the context cap, and your output request must fit its separate maximum.
I see a rate or capacity error.
Wait before retrying and respect any Retry-After header. Check your concurrency and requests-per-minute limits. A paid plan does not bypass all limits.
A sampling option is rejected.
Start with your client’s basic defaults. Advanced settings differ by model and inference engine. Disable the unsupported option and retry with a short prompt.