Basics
| Setting | Value |
|---|---|
| Base URL | https://wildwestapi.com/v1 |
| Chat endpoint | POST /v1/chat/completions |
| Anthropic endpoint | POST /v1/messages |
| Model list | GET /v1/models |
| Auth | Authorization: Bearer sk-ww-... |
Sign in with a six digit code sent to your email, then make a key in the dashboard. Give it a lifetime cap, a monthly cap, or both. The key is shown once, so copy it now. Keys start sk-ww-.
Your first request
curl https://wildwestapi.com/v1/chat/completions \
-H "Authorization: Bearer $WILDWEST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "outlaw-1-xploded",
"messages": [
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Hello"}
]
}'The response is the OpenAI shape your client already parses: the text is in choices[0].message.content, and usage tells you how many tokens it read and wrote. Usage and cost settle against your key the moment the response completes.
OpenAI SDK
Any OpenAI client works. Point it at the base URL and pass your key.
from openai import OpenAI
client = OpenAI(
base_url="https://wildwestapi.com/v1",
api_key="sk-ww-...", # your Wild West API key
)
reply = client.chat.completions.create(
model="outlaw-1-xploded",
messages=[
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Explain abliteration in two sentences."},
],
)
print(reply.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://wildwestapi.com/v1",
apiKey: process.env.WILDWEST_API_KEY,
});
const stream = await client.chat.completions.create({
model: "outlaw-1-xploded",
messages: [{ role: "user", content: "Write the opening of a heist story." }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}Set stream: true and read server-sent events as usual. Output tokens are counted as they stream, so if the client hangs up mid-response you pay for what was actually generated.
Models
The uncensored AI models list shows every model with its price. From code, call GET https://wildwestapi.com/v1/models. Each entry has an id (put this in model), a display name, context_length, and pricing.prompt and pricing.completion in dollars per token. Multiply by a million for the per-million price.
Flags on each entry say what it can do: supports_vision for image input, supports_tools for function calling, supports_reasoning for models that think before answering.
SillyTavern
- Open the API Connections panel (the plug icon at the top).
- Set API to Chat Completion.
- Set Chat Completion Source to Custom (OpenAI-compatible).
- Custom Endpoint (Base URL):
https://wildwestapi.com/v1 - Custom API Key: your
sk-ww-...key. - Press Connect, then pick a model from the list, or type its id.
- Send a test message. If it answers, you are done.
Use Chat Completion, not Text Completion. The full walkthrough, with settings that suit long roleplay, is in the SillyTavern setup guide.
Browser-only apps
The API does not answer cross-origin (CORS) requests today, so a web page cannot call it straight from your browser tab. Apps that call it from a server or from your own machine, like SillyTavern, scripts and backends, work normally.
Anthropic format
Tools built for Claude can talk to Wild West API through POST /v1/messages. Send the key as x-api-key or as a Bearer token. Use a Wild West model id in model.
curl https://wildwestapi.com/v1/messages \
-H "x-api-key: $WILDWEST_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "outlaw-1-xploded",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'Errors
| Status | Meaning | What to do |
|---|---|---|
| 401 | The key is missing, wrong or revoked. | Check for spaces, or make a new key. |
| 402 | Out of credit, or the key hit its cap. | Top up, or raise the cap on that key. |
| 404 | Unknown model id. | Copy the id from the model list. |
| 429 | Too many requests at once. | Wait a moment and retry. |
| 5xx | The model host had a problem. | Retry, or try another model. |
Error bodies follow the OpenAI shape, with a readable sentence in error.message.