// documentation
Kodex AI setup guide
Connect any coding tool to Kodex AI with one key. Works with Anthropic-style and OpenAI-style clients — no SDK changes needed.
Base URLs
Requirements: a Kodex API key (sk-kodex-…, issued by your admin) and Node.js 18+ for Claude Code.
https://api.softsave.tech/api/public/v1https://api.softsave.tech/api/publicQuick install
The installer asks for your key, writes Claude Code settings, sets environment variables and verifies the connection.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
irm https://api.softsave.tech/setup.ps1 | iexcurl -fsSL https://api.softsave.tech/setup.sh | bashKODEX_API_KEY=sk-kodex-xxx bash -c "$(curl -fsSL https://api.softsave.tech/setup.sh)"Claude Code CLI & VS Code extension
Both read ~/.claude/settings.json. Restart VS Code after saving.
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY",
"ANTHROPIC_BASE_URL": "https://api.softsave.tech/api/public",
"ANTHROPIC_MODEL": "anthropic/claude-sonnet-4.5",
"ANTHROPIC_SMALL_FAST_MODEL": "google/gemini-2.5-flash",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
},
"hasCompletedOnboarding": true
}export ANTHROPIC_BASE_URL=https://api.softsave.tech/api/public
export ANTHROPIC_AUTH_TOKEN=YOUR_API_KEY
claude$env:ANTHROPIC_BASE_URL = "https://api.softsave.tech/api/public"
$env:ANTHROPIC_AUTH_TOKEN = "YOUR_API_KEY"
claudeCursor & Windsurf
Settings → Models → add an OpenAI-compatible model:
Base URL: https://api.softsave.tech/api/public/v1
API key: YOUR_API_KEY
Model: anthropic/claude-sonnet-4.5Cline & Roo Code
{
"cline.apiProvider": "anthropic",
"cline.anthropicBaseUrl": "https://api.softsave.tech/api/public",
"cline.apiKey": "YOUR_API_KEY",
"roo-cline.apiProvider": "anthropic",
"roo-cline.anthropicBaseUrl": "https://api.softsave.tech/api/public",
"roo-cline.apiKey": "YOUR_API_KEY"
}Or pick the "OpenAI Compatible" provider and use https://api.softsave.tech/api/public/v1.
Continue
models:
- name: Kodex Sonnet
provider: openai
model: anthropic/claude-sonnet-4.5
apiBase: https://api.softsave.tech/api/public/v1
apiKey: YOUR_API_KEYAuthentication
Send your key in either header on every request:
Authorization: Bearer YOUR_API_KEY
# or
x-api-key: YOUR_API_KEYMessages (Anthropic format)
curl https://api.softsave.tech/api/public/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{"model":"anthropic/claude-sonnet-4.5","max_tokens":1024,"messages":[{"role":"user","content":"Hello"}]}'$body = @{ model = "anthropic/claude-sonnet-4.5"; max_tokens = 1024; messages = @(@{ role = "user"; content = "Hello" }) } | ConvertTo-Json -Depth 5
Invoke-RestMethod -Method Post -Uri "https://api.softsave.tech/api/public/v1/messages" -Headers @{ "x-api-key" = "YOUR_API_KEY" } -ContentType "application/json" -Body $bodySet "stream": true to receive SSE events: message_start, content_block_delta, message_stop.
Chat completions (OpenAI format)
curl https://api.softsave.tech/api/public/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-5","messages":[{"role":"user","content":"Write a Python hello world"}]}'$body = @{ model = "openai/gpt-5"; messages = @(@{ role = "user"; content = "Write a Python hello world" }) } | ConvertTo-Json -Depth 5
Invoke-RestMethod -Method Post -Uri "https://api.softsave.tech/api/public/v1/chat/completions" -Headers @{ Authorization = "Bearer YOUR_API_KEY" } -ContentType "application/json" -Body $bodyfrom openai import OpenAI
client = OpenAI(base_url="https://api.softsave.tech/api/public/v1", api_key="YOUR_API_KEY")
r = client.chat.completions.create(model="anthropic/claude-sonnet-4.5", messages=[{"role":"user","content":"Hi"}])
print(r.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.softsave.tech/api/public/v1", apiKey: "YOUR_API_KEY" });
const r = await client.chat.completions.create({ model: "anthropic/claude-sonnet-4.5", messages: [{ role: "user", content: "Hi" }] });
console.log(r.choices[0].message.content);Models
curl https://api.softsave.tech/api/public/v1/models -H "Authorization: Bearer YOUR_API_KEY"Popular ids: anthropic/claude-sonnet-4.5, anthropic/claude-opus-4.1, openai/gpt-5, google/gemini-2.5-pro, google/gemini-2.5-flash, deepseek/deepseek-chat, openrouter/auto.
Errors & limits
400 invalid request body
401 missing, invalid or revoked API key
429 monthly request limit reached
503 upstream provider temporarily unavailableToken limits: Pro 10M/month (69,444 per 5h), Max 5x 33M/month (229,166 per 5h), Max 20x 60M/month (416,666 per 5h). Limits reset every 5 hours and on the 1st of each month.
Full installer scripts
# Kodex AI setup for Windows PowerShell
$ErrorActionPreference = "Stop"
$Base = "https://api.softsave.tech/api/public"
Write-Host "== Kodex AI setup ==" -ForegroundColor Cyan
$Key = $env:KODEX_API_KEY
if (-not $Key) { $Key = Read-Host "Enter your Kodex API key (sk-kodex-...)" }
if (-not ($Key.StartsWith("sk-") -or $Key.StartsWith("kx-"))) { Write-Host "Invalid key" -ForegroundColor Red; exit 1 }
$Dir = Join-Path $HOME ".claude"
New-Item -ItemType Directory -Force -Path $Dir | Out-Null
$Settings = @{
env = @{
ANTHROPIC_AUTH_TOKEN = $Key
ANTHROPIC_BASE_URL = $Base
ANTHROPIC_MODEL = "anthropic/claude-sonnet-4.5"
ANTHROPIC_SMALL_FAST_MODEL = "google/gemini-2.5-flash"
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC = "1"
}
hasCompletedOnboarding = $true
} | ConvertTo-Json -Depth 5
Set-Content -Path (Join-Path $Dir "settings.json") -Value $Settings -Encoding UTF8
Write-Host "Wrote $Dir\settings.json"
[Environment]::SetEnvironmentVariable("KODEX_API_KEY", $Key, "User")
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", $Base, "User")
[Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", $Key, "User")
[Environment]::SetEnvironmentVariable("OPENAI_BASE_URL", "$Base/v1", "User")
[Environment]::SetEnvironmentVariable("OPENAI_API_KEY", $Key, "User")
Write-Host "Verifying connection..."
try {
Invoke-RestMethod -Uri "$Base/v1/models" -Headers @{ Authorization = "Bearer $Key" } | Out-Null
Write-Host "Connected. Restart PowerShell / VS Code." -ForegroundColor Green
} catch {
Write-Host "Verification failed: $($_.Exception.Message)" -ForegroundColor Red; exit 1
}
#!/usr/bin/env bash
# Kodex AI setup for macOS / Linux
set -e
BASE="https://api.softsave.tech/api/public"
echo "== Kodex AI setup =="
if [ -z "$KODEX_API_KEY" ]; then
printf "Enter your Kodex API key (sk-kodex-...): "
read -r KODEX_API_KEY < /dev/tty
fi
case "$KODEX_API_KEY" in sk-*|kx-*) ;; *) echo "Invalid key"; exit 1;; esac
mkdir -p "$HOME/.claude"
cat > "$HOME/.claude/settings.json" <<EOF
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "$KODEX_API_KEY",
"ANTHROPIC_BASE_URL": "$BASE",
"ANTHROPIC_MODEL": "anthropic/claude-sonnet-4.5",
"ANTHROPIC_SMALL_FAST_MODEL": "google/gemini-2.5-flash",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
},
"hasCompletedOnboarding": true
}
EOF
echo "Wrote $HOME/.claude/settings.json"
for f in "$HOME/.bashrc" "$HOME/.zshrc"; do
[ -f "$f" ] || continue
grep -q "KODEX_API_KEY" "$f" || cat >> "$f" <<EOF
# Kodex AI
export KODEX_API_KEY="$KODEX_API_KEY"
export ANTHROPIC_BASE_URL="$BASE"
export ANTHROPIC_AUTH_TOKEN="$KODEX_API_KEY"
export OPENAI_BASE_URL="$BASE/v1"
export OPENAI_API_KEY="$KODEX_API_KEY"
EOF
done
echo "Verifying connection..."
code=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer $KODEX_API_KEY" "$BASE/v1/models")
if [ "$code" = "200" ]; then echo "Connected. Restart your terminal / VS Code."; else echo "Verification failed (HTTP $code)"; exit 1; fi