Docs

One key, two API shapes, three models, no client changes.

Claude Code

One file, works the same on Windows, macOS and Linux. This is the recommended way — it survives closing the terminal.

~/.claude/settings.json — add or merge:

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://abliterateme.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-your-key",
    "ANTHROPIC_MODEL": "glm-5.3"
  }
}

Or as environment variables, for this terminal only:

# bash / zsh
export ANTHROPIC_BASE_URL="https://abliterateme.com"
export ANTHROPIC_AUTH_TOKEN="sk-your-key"
export ANTHROPIC_MODEL="glm-5.3"
# PowerShell
$env:ANTHROPIC_BASE_URL = "https://abliterateme.com"
$env:ANTHROPIC_AUTH_TOKEN = "sk-your-key"
$env:ANTHROPIC_MODEL = "glm-5.3"

Choosing a model

The model is chosen per request, in the model field. Clients that send one name everywhere — Claude Code, Cursor, Cline — take it from ANTHROPIC_MODEL, or from the picker in your dashboard, which is used whenever a request comes in with a name we do not recognise.

curl https://abliterateme.com/v1/models -H "x-api-key: sk-..."

{"data": [
  {"id": "glm-5.3",         "context": 1000000, "price_per_month": 4},
  {"id": "deepseek-v4-pro", "context": 1000000, "price_per_month": 5},
  {"id": "kimi-k3.1-pro",   "context": 1000000, "price_per_month": 6}
]}

Any name is accepted. If your client pins claude-* names, or sets ANTHROPIC_DEFAULT_SONNET_MODEL and friends, leave them exactly as they are — the request still works and gets your dashboard default.

OpenAI-compatible clients

from openai import OpenAI

client = OpenAI(base_url="https://abliterateme.com/v1", api_key="sk-your-key")
client.chat.completions.create(model="deepseek-v4-pro", messages=[...])

Same key for both shapes. Endpoints: POST /v1/messages and POST /v1/chat/completions.

Endpoints

MethodPath
POST/v1/messages
POST/v1/chat/completions
GET/v1/models
GET/health

curl

curl https://abliterateme.com/v1/messages \
  -H "x-api-key: sk-..." -H "content-type: application/json" \
  -d '{"model":"glm-5.3","max_tokens":128,
       "messages":[{"role":"user","content":"hello"}]}'

Context windows

All three models take a 1M token context. A session that runs past the working window is trimmed from the oldest turns and the request still runs — you get a normal completion, not an error, and the model simply remembers less. Setting max_tokens larger than what is left is fine too; we clamp it.

Reported usage.input_tokens counts what the model actually saw, so your context meter reflects the window, not your history.

Trial limits

Trial keys are rate limited and share a concurrency pool. When the pool is full you get 429 rate_limit_error; retry shortly. This is normal on the free plan and is not an error in your client.

The trial plan is intended for interactive agent tooling — clients that send their tool definitions with every request. Scripted, batch or benchmark use is rate limited more aggressively and may be held at 429 for the remainder of the trial.