// 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.

OpenAI-compatible (VS Code, Cursor, Continue)
https://api.softsave.tech/api/public/v1
Anthropic-compatible (Claude Code, Cline, Roo)
https://api.softsave.tech/api/public

Quick install

The installer asks for your key, writes Claude Code settings, sets environment variables and verifies the connection.

Windows — PowerShell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
irm https://api.softsave.tech/setup.ps1 | iex
macOS / Linux — bash
curl -fsSL https://api.softsave.tech/setup.sh | bash
Non-interactive (CI)
KODEX_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.

~/.claude/settings.json
{
  "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
}
bash / zsh
export ANTHROPIC_BASE_URL=https://api.softsave.tech/api/public
export ANTHROPIC_AUTH_TOKEN=YOUR_API_KEY
claude
PowerShell
$env:ANTHROPIC_BASE_URL = "https://api.softsave.tech/api/public"
$env:ANTHROPIC_AUTH_TOKEN = "YOUR_API_KEY"
claude

Cursor & Windsurf

Settings → Models → add an OpenAI-compatible model:

settings
Base URL: https://api.softsave.tech/api/public/v1
API key:  YOUR_API_KEY
Model:    anthropic/claude-sonnet-4.5

Cline & Roo Code

VS Code settings.json
{
  "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

~/.continue/config.yaml
models:
  - name: Kodex Sonnet
    provider: openai
    model: anthropic/claude-sonnet-4.5
    apiBase: https://api.softsave.tech/api/public/v1
    apiKey: YOUR_API_KEY

Authentication

Send your key in either header on every request:

headers
Authorization: Bearer YOUR_API_KEY
# or
x-api-key: YOUR_API_KEY

Messages (Anthropic format)

POST/api/public/v1/messagesauth: API key
curl
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"}]}'
PowerShell
$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 $body

Set "stream": true to receive SSE events: message_start, content_block_delta, message_stop.

Chat completions (OpenAI format)

POST/api/public/v1/chat/completionsauth: API key
curl
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"}]}'
PowerShell
$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 $body
Python (openai SDK)
from 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)
Node.js (openai SDK)
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

GET/api/public/v1/modelsauth: API key
curl
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

status codes
400  invalid request body
401  missing, invalid or revoked API key
429  monthly request limit reached
503  upstream provider temporarily unavailable

Token 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

setup.ps1 — https://api.softsave.tech/setup.ps1
# 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
}
setup.sh — https://api.softsave.tech/setup.sh
#!/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