QUICKSTART API KEYS ENDPOINTS PYTHON CURL STREAMING REASONING FIELD LIMITS & TRIAL CLAUDE CODE CODEX CODEX DESKTOP ERRORS FAQ

DOCUMENTATION

CyberKimi speaks the OpenAI API dialect. If your tooling works with the OpenAI SDK, it works here — change the base URL, use your platform key, select lordx64/cyberkimi.

// QUICKSTART

1. Request access via the waitlist — v2 invites roll out from there (priority access = one month of subscription, $149). 2. Once invited, create an API key (Settings → Account → API Keys). 3. Call the API. That's the whole onboarding.

// API KEYS

Keys live in Settings → Account → API Keys. Create as many as you like, name them per tool (burp, ci-runner, laptop), and revoke them independently. Keys inherit your subscription state in real time — if a subscription lapses, its keys stop working within seconds.

Keys drive an unrestricted model. Never embed them in client-side code, public repos, or shared images. Rotate on suspicion.

// ENDPOINTS

WHATWHERE
Base URLhttps://platform.adverserial.ai/api
Chat completionsPOST /api/chat/completions
Model listGET /api/models
Model idlordx64/cyberkimi
AuthAuthorization: Bearer <your key>

// PYTHON (OPENAI SDK)

# pip install openai
from openai import OpenAI

client = OpenAI(
    api_key="sk-YOUR-PLATFORM-KEY",
    base_url="https://platform.adverserial.ai/api",
)

resp = client.chat.completions.create(
    model="lordx64/cyberkimi",
    messages=[
        {"role": "system", "content": "You are a red-team operator assistant."},
        {"role": "user", "content": "Write a Sigma rule for this behavior: ..."},
    ],
    max_tokens=2048,
)
print(resp.choices[0].message.content)

// CURL

curl https://platform.adverserial.ai/api/chat/completions \
  -H "Authorization: Bearer sk-YOUR-PLATFORM-KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"lordx64/cyberkimi","messages":[{"role":"user","content":"triage this log line: ..."}],"max_tokens":1024}'

// STREAMING

stream = client.chat.completions.create(
    model="lordx64/cyberkimi",
    messages=[...],
    max_tokens=2048,
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta
    print(delta.content or "", end="")

// THE REASONING FIELD

CyberKimi is a reasoning model: it thinks before it answers. The thinking trace arrives in message.reasoning, the final answer in message.content. Give max_tokens generously — if a response ends with finish_reason="length" and empty content, the model spent the whole budget thinking; raise the cap.

// LIMITS & TRIAL

ITEMVALUE
Free trial1 prompt per account, chat UI only (no API keys)
Context window1,000,000 tokens (whole codebases / pcaps in one call)
Rate limitsNo hard caps on Hacker Manifesto — fair use; contact us for batch-scale
API keysActive members only

// CLAUDE CODE & ANTHROPIC-API CLIENTS

For Claude Code, Cline, and other Anthropic-dialect clients, use the shim base URL — it sanitizes thinking blocks that the backend parser rejects:

export ANTHROPIC_BASE_URL="https://api.adverserial.ai"
export ANTHROPIC_AUTH_TOKEN="sk-YOUR-PLATFORM-KEY"
export ANTHROPIC_MODEL="lordx64/cyberkimi"
export ANTHROPIC_DEFAULT_OPUS_MODEL="lordx64/cyberkimi"
export ANTHROPIC_DEFAULT_SONNET_MODEL="lordx64/cyberkimi"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="lordx64/cyberkimi"
claude

// CODEX CLI

Codex (current versions) speaks the OpenAI Responses API — our shim translates it. The clean setup keeps CyberKimi as a profile so your default model stays untouched. In ~/.codex/config.toml add the provider:

[model_providers.cyberkimi]
name = "CyberKimi"
base_url = "https://api.adverserial.ai/v1"
env_key = "OPENAI_API_KEY"
wire_api = "responses"

Then create the profile file ~/.codex/cyberkimi.config.toml:

model = "lordx64/cyberkimi"
model_provider = "cyberkimi"

And use it:

export OPENAI_API_KEY="sk-YOUR-PLATFORM-KEY"
codex --profile cyberkimi

// CODEX DESKTOP APP

The Codex desktop app shares the same ~/.codex/config.toml but has no provider picker — its model list is account-bound. To run the desktop app on CyberKimi, set the provider as the top-level default:

model = "lordx64/cyberkimi"
model_provider = "cyberkimi"

[model_providers.cyberkimi]
name = "CyberKimi"
base_url = "https://api.adverserial.ai/v1"
wire_api = "responses"

[model_providers.cyberkimi.auth]
command = "/bin/cat"
args = ["/Users/YOU/.codex/cyberkimi-key"]

Then:

printf 'sk-YOUR-PLATFORM-KEY' > ~/.codex/cyberkimi-key && chmod 600 ~/.codex/cyberkimi-key

Fully quit the app (⌘Q) and relaunch. The command-based auth block matters here: GUI apps can't see shell environment variables, so env_key won't work for the desktop app — the file read always works. To go back to your OpenAI models, remove the top-level model_provider line and set model back, then relaunch.

Note: the model's self-reported name follows the harness (Codex says "GPT-5…", Claude Code says "Claude") until our identity-tuned checkpoint ships — the backend is CyberKimi regardless.

// ERRORS

CODEMEANING
401Missing/revoked key, or subscription lapsed
trial messageAccess is waitlist-only — join the waitlist
finish_reason=length, empty contentReasoning ate the token budget — raise max_tokens
503Platform scaling up — retry in a few seconds

// FAQ

Is this a different model from Kimi K3? It's Kimi K3 with the refusal layer ablated out of the weights and cyber-tuning on top — same brain, no leash, field training.

Do you log my prompts? Chats live in your platform account; the GPU backend is ours and phones home to no one. Delete chats any time from the platform.

Team plans? Enterprise tier: dedicated capacity, private weight deployment, SSO — contact@adverserial.ai.