Key points
- Use Chat Completion, source Custom (OpenAI-compatible), endpoint https://api.ornith.top/v1, model ID uncensored.
- Test the key with curl first so you can tell a key problem from a SillyTavern setting.
- Set the context size to match your chats; the model supports up to 100,000 tokens.
- Group chats can fire several requests at once, which a trial key limits to 2.
What you need before you start
You need three things: a running SillyTavern install, an API key, and the endpoint details. SillyTavern is a self-hosted chat front end for character and roleplay conversations, and it can talk to any service that follows the OpenAI chat format. This site provides such a service for lawful adult use: fiction, roleplay and companion apps for adults. It will not produce sexual content involving minors, and no setting changes that.
Collect these values:
- Base URL:
https://api.ornith.top/v1 - Model ID:
uncensored - API key: created on the API key page after you sign in with Google or with email and password.
New accounts can claim $0.50 of trial credit with one click on that page. It needs no card, it is one per person, and it lasts 7 days. That is plenty for testing a character card, because a typical chat turn costs a fraction of a cent (the math is further down).
Test the key with curl first
Before touching SillyTavern, send one request from a terminal. If it works, any later failure is a front-end setting; if it fails, the problem is the key or the network.
curl https://api.ornith.top/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Say hello in one short sentence."}]
}'
You should get JSON with a choices array. Look at the response headers too: X-Balance-USD shows your remaining credit, and X-Request-Id is what to quote if you ever contact support. You can also list the models with GET /v1/models:
curl https://api.ornith.top/v1/models \
-H "Authorization: Bearer $API_KEY"
The list shows the model ID to use in SillyTavern, which is uncensored.
Connect SillyTavern step by step
- Open SillyTavern and click the plug icon at the top to open API Connections.
- In the API dropdown choose Chat Completion.
- In the Chat Completion Source dropdown choose Custom (OpenAI-compatible).
- In Custom Endpoint (Base URL) enter
https://api.ornith.top/v1. Stop at/v1. Do not add/chat/completions, because the client appends that path itself. - Paste your key into the Custom API Key field.
- In Model ID type
uncensored. - Press Connect. A green status with the model name means the handshake worked.
Menu labels shift a little between SillyTavern releases, so if a name differs on your version, look for the same idea: a custom OpenAI-compatible source, an endpoint field, a key field and a model field. If Connect fails, repeat the curl test. An authentication error from curl means the key is wrong; a working curl with a failing Connect usually means a typo in the URL, such as a missing /v1 or a trailing path.
Once connected, open any character card and send a message. If you see a reply, the integration works. The rest is tuning.
Settings that matter for roleplay
Context size
The model has a 100,000-token context window, counting the prompt and the reply together. In SillyTavern, the context size slider controls how much history, character card and lorebook text is sent each turn. Bigger means the character remembers more and each request costs more, because you pay for input tokens every turn. A good starting point is a moderate value such as 16,000 to 32,000 tokens, raised only if your chats are long enough to need it. The response length setting maps to max_tokens, which is optional on this API; set a value if you want shorter replies.
Streaming
Turn on streaming in the Chat Completion settings. The API supports SSE with stream: true, so text appears as it is generated and you can stop a bad reply early. Usage is reported at the end of the stream.
Sampling
Temperature, top_p, stop sequences, seed and the frequency and presence penalties are passed through to the model. For creative chat, a temperature around 0.8 to 1.0 with top_p near 0.9 is a common starting point. If replies ramble or repeat, lower the temperature a little and add a small frequency penalty. Change one setting at a time so you can see its effect.
Your system prompt and card
The model is tuned to answer without content refusals, so the quality of the scene depends on your prompt and character card. A clear role, setting, tone and a few example lines of dialogue do more than any sampling tweak. If you write for adult audiences, keep the setting explicit about ages: every character should be an adult.
Cost per message, worked out
Pricing is $0.15 per 1M input tokens and $0.50 per 1M output tokens, from prepaid credit with no subscription. Because SillyTavern resends the card and history on every turn, input dominates.
Suppose a chat turn sends 6,000 tokens of context and gets 400 tokens back:
- Input: 6,000 at $0.15 per 1M is $0.0009.
- Output: 400 at $0.50 per 1M is $0.0002.
- Total: $0.0011 per turn.
A 200-turn session costs $0.22. The $0.50 trial credit covers about 450 such turns. Failed or refused requests are not charged. When you add credit, any whole amount from $20 to $500 works, with +5% from $50, +10% from $100 and +15% from $200, by card (Visa, Mastercard, Apple Pay, Google Pay) or crypto (USDT on TRC20, USDC on Base). Credit never expires. The pricing page has the details.
Fixing common errors
| Symptom | Likely cause | Fix |
|---|---|---|
| Connect fails right away | Wrong base URL or key | Use https://api.ornith.top/v1 with no trailing path; repeat the curl test |
HTTP 429, code rate_limited | Too many requests per minute | Slow down; trial keys allow 60 per minute, full keys 300 |
HTTP 429, code concurrency | Too many requests at once | Wait for the running reply to end; trial keys allow 2 at once, full keys 8 |
HTTP 429 with Retry-After: 5 | Temporary overload | Retry after 5 seconds |
| Request too large | Body over 8 MB | Lower the context size or trim the lorebook |
| Context too long | Prompt plus reply over 100,000 tokens | Lower context size or response length |
One detail catches people in group chats and with features that run extra background calls: a streamed request holds its concurrency slot until the stream ends. If SillyTavern fires a reply, a summary and an image-caption job at the same moment, a trial key with 2 slots will reject the third. A full key allows 8. Disable the extras you do not need, or space them out.
For all parameters and the exact error shapes, read the API docs.
