skip to content
superbot.gg

set up your clients

Point your client at superbot and keep using it. Every setup here is three values: a base URL, a key and a model id.

Mint a key on the account api page. Routes, limits and the error contract are on developers.

What to paste

These values are the whole configuration. Where the client asks for a model name, enter superbot.

Base URLhttps://api.superbot.gg/v1
key headerAuthorization: Bearer sbc_… or x-api-key
model idssuperbot: Your Superbot agent. superbot-omni: Superbot agent, run on your computer.
your client: how a request reaches superbotyour clientsuperbotsuperbot.ggvendor keysprev upstreamsuperbot agent
sign in to see which lanes you hold

Keeping chats apart

superbot keeps its server-side memory of a chat per conversation. Name a conversation with the x-superbot-session: <id> header: letters, digits, _ and -, at most 59 characters. Every call that sends the same id continues the same thread, even when your client does not resend the earlier messages.

With no header, superbot uses the conversation id your client already sends: prompt_cache_key, metadata.session_id, metadata.conversation_id, a Responses conversation or an Anthropic metadata.user_id. Codex and Claude Code send these, so the agent keeps each of their chats apart. With none of them, superbot keys the chat on its first message, so two chats that open with the same words share a thread.

The OpenAI user field is not a conversation id.

curl with the session header
curl https://api.superbot.gg/v1/chat/completions \
  -H "Authorization: Bearer sbc_…" \
  -H "x-superbot-session: my-chat-1" \
  -H "Content-Type: application/json" \
  -d '{"model": "superbot", "messages": [{"role": "user", "content": "ping"}]}'

The full rules are on developers.

Cursorfull

Cursor BYOK: key, base URL and custom model.

Cursor: how a request reaches superbotCursorsuperbotsuperbot.ggvendor keysprev upstreamsuperbot agent
sign in to see which lanes you hold
  1. Open Cursor Settings, then Models.
  2. Paste your sbc_ key into the OpenAI API key box.
  3. Paste the base URL from the card above.
  4. Put it in Override OpenAI Base URL.
  5. Click Add Custom Model and name it superbot.
  6. Add superbot-omni as a second custom model if you want it.
  7. Select superbot in the model picker, then send one message.
  8. With superbot relay: quit Cursor, run superbot clients wire cursor, skip 2-6.
what to paste
Override OpenAI Base URL: https://api.superbot.gg/v1
OpenAI API key: sbc_…
Custom model: superbot
route it with superbot relay
# quit Cursor first: it rewrites its state store on quit
superbot clients wire cursor

# what it puts in place for you
Override OpenAI Base URL: https://api.superbot.gg/v1
OpenAI API key: sbc_…
Custom models: superbot, superbot-omni

# undo: restores the config it backed up
superbot clients unwire cursor
verify outside Cursor
curl https://api.superbot.gg/v1/chat/completions \
  -H "Authorization: Bearer sbc_…" \
  -H "Content-Type: application/json" \
  -d '{"model":"superbot","messages":[{"role":"user","content":"ping"}]}'

traps

source: cursor.com, retrieved 2026-09-19

Devinnone

No custom endpoint, in the cloud or Desktop

Devin: how a request reaches superbotDevinsuperbotsuperbot.ggvendor keysprev upstreamsuperbot agent
this client cannot be dialed here

Devin has no base URL to change, so it cannot be pointed at superbot.

  1. Devin takes no custom base URL, in the cloud or in Devin Desktop.
  2. Use superbot's hosted MCP server instead. Devin connects to it as a remote MCP server, so it gets superbot's tools and keeps its own models.
  3. For the Devin CLI, setup is the recipe at /install/devin.md: devin mcp add -s user superbot with the MCP URL, then devin mcp login superbot.
  4. If a custom base URL ever appears, paste the same three values as any other client.

traps

source: docs.devin.ai, retrieved 2026-09-19

Claude Codefull

Claude Code BYOK: base URL, key, model.

Claude Code: how a request reaches superbotClaude Codesuperbotsuperbot.ggvendor keysprev upstreamsuperbot agent
sign in to see which lanes you hold
  1. Set ANTHROPIC_BASE_URL to the base URL above.
  2. Set ANTHROPIC_API_KEY, which is sent as x-api-key.
  3. Or set ANTHROPIC_AUTH_TOKEN, sent as Authorization: Bearer.
  4. Pick the model with ANTHROPIC_MODEL or --model.
  5. Set CLAUDE_CODE_MAX_CONTEXT_TOKENS to the window the snippet prints for that model.
  6. You can also set model in settings.json. Or put all of it in the "env" block there.
  7. Restart Claude Code, then send one message.
shell setup
export ANTHROPIC_BASE_URL="https://api.superbot.gg/v1"
export ANTHROPIC_API_KEY="sbc_…"
export ANTHROPIC_MODEL="superbot"
export CLAUDE_CODE_MAX_CONTEXT_TOKENS="1000000"
settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.superbot.gg/v1",
    "ANTHROPIC_API_KEY": "sbc_…",
    "ANTHROPIC_MODEL": "superbot",
    "CLAUDE_CODE_MAX_CONTEXT_TOKENS": "1000000"
  }
}

traps

source: code.claude.com, retrieved 2026-09-19

Codex CLIfull

Codex CLI: custom provider in config.toml.

Codex CLI: how a request reaches superbotCodex CLIsuperbotsuperbot.ggvendor keysprev upstreamsuperbot agent
sign in to see which lanes you hold
  1. Open ~/.codex/config.toml, and create it if it is missing.
  2. Add a [model_providers.superbot] table.
  3. Give it base_url, env_key and wire_api.
  4. Set wire_api = "responses", the only value Codex still supports.
  5. Export SUPERBOT_API_KEY with a caller key. That is the name env_key points at.
  6. Set the top-level model_provider, model and model_context_window keys, above the table, then restart Codex.
config.toml
model_provider = "superbot"
model = "superbot"
model_context_window = 1000000

[model_providers.superbot]
name = "superbot"
base_url = "https://api.superbot.gg/v1"
env_key = "SUPERBOT_API_KEY"
wire_api = "responses"
the env key
export SUPERBOT_API_KEY="sbc_…"

traps

source: learn.chatgpt.com, retrieved 2026-09-19

GitHub Copilot (VS Code)partial

Chat works via a Custom Endpoint provider.

GitHub Copilot (VS Code): how a request reaches superbotGitHub Copilot (VS Code)superbotsuperbot.ggvendor keysprev upstreamsuperbot agent
sign in to see which lanes you hold
  1. Open the model picker in chat and select Manage Language Models.
  2. Select Add Models, then Custom Endpoint, and name the group.
  3. Enter your key from /account/api.
  4. Then choose the API type: Chat Completions, Responses, Messages.
  5. VS Code opens chatLanguageModels.json. Paste the snippet below into it and save.
  6. The snippet gives the full URL.
  7. Select the model in the picker. Restart VS Code if it does not show up.
chatLanguageModels.json
[
  {
    "name": "superbot",
    "vendor": "customendpoint",
    "apiKey": "sbc_…",
    "models": [
      {
        "id": "superbot",
        "name": "superbot",
        "url": "https://api.superbot.gg/v1/chat/completions",
        "apiType": "chat-completions",
        "toolCalling": true
      }
    ]
  }
]

traps

source: code.visualstudio.com, retrieved 2026-09-19

Continuefull

One OpenAI provider entry in config.yaml.

Continue: how a request reaches superbotContinuesuperbotsuperbot.ggvendor keysprev upstreamsuperbot agent
sign in to see which lanes you hold
  1. Open config.yaml.
  2. Under models: add one entry, or edit the one already there.
  3. Set provider: openai and apiBase to the base URL above.
  4. Set apiKey to your sbc_ caller key.
  5. Set model to superbot, and give the entry a name.
  6. Save, reload the extension, then send a chat message.
config.yaml
models:
  - name: superbot
    provider: openai
    apiBase: https://api.superbot.gg/v1
    apiKey: sbc_…
    model: superbot
    useResponsesApi: false
verify outside Continue
curl https://api.superbot.gg/v1/chat/completions \
  -H "Authorization: Bearer sbc_…" \
  -H "Content-Type: application/json" \
  -d '{"model":"superbot","messages":[{"role":"user","content":"ping"}]}'

traps

source: docs.continue.dev, retrieved 2026-09-19

Clinefull

Either dialect, three fields to fill in.

Cline: how a request reaches superbotClinesuperbotsuperbot.ggvendor keysprev upstreamsuperbot agent
sign in to see which lanes you hold
  1. Open Cline and click the settings gear.
  2. Set API Provider to OpenAI Compatible.
  3. Paste the base URL above into Base URL.
  4. Paste your sbc_ caller key into API Key.
  5. Type your model id into Model, or pick it from the list.
  6. Type the context window from the card into the model's Context Window field.
  7. Send one message and confirm the reply arrives.
what to paste
Base URL: https://api.superbot.gg/v1
API Key: sbc_…
Model: superbot
Context window: 1000000

traps

source: docs.cline.bot, retrieved 2026-09-19

Roo Codepartial

Two providers; tool calling unverified.

Roo Code: how a request reaches superbotRoo Codesuperbotsuperbot.ggvendor keysprev upstreamsuperbot agent
sign in to see which lanes you hold
  1. Open Roo Code settings.
  2. Set API Provider to OpenAI Compatible.
  3. Paste the base URL above into Base URL.
  4. Paste your sbc_ caller key into API Key.
  5. Set Model to your model id, or pick it from the list.
  6. Type the context window from the card into the model's Context Window field.
  7. Send a message and read the reply.
what to paste
Base URL: https://api.superbot.gg/v1
API Key: sbc_…
Model: superbot
Context window: 1000000

traps

source: docs.roocode.com, retrieved 2026-09-19

Zedfull

settings.json plus a key in the keychain.

Zed: how a request reaches superbotZedsuperbotsuperbot.ggvendor keysprev upstreamsuperbot agent
sign in to see which lanes you hold
  1. Open settings.json.
  2. Add a language_models.openai_compatible block.
  3. Set its api_url to the base URL above.
  4. List the model in available_models with name and max_tokens.
  5. Store your sbc_ key in Agent Settings, or set SUPERBOT_API_KEY.
  6. Pick the model in the assistant panel, then send a message.
settings.json
{
  "language_models": {
    "openai_compatible": {
      "superbot": {
        "api_url": "https://api.superbot.gg/v1",
        "available_models": [
          {
            "name": "superbot",
            "display_name": "superbot",
            "max_tokens": 1000000
          }
        ]
      }
    }
  }
}
api key
export SUPERBOT_API_KEY="sbc_…"

traps

source: zed.dev, retrieved 2026-09-19

Aiderfull

Aider via openai/: base URL and key.

Aider: how a request reaches superbotAidersuperbotsuperbot.ggvendor keysprev upstreamsuperbot agent
sign in to see which lanes you hold
  1. Export OPENAI_API_BASE with the base URL above.
  2. Export OPENAI_API_KEY with a caller key.
  3. Run aider --model openai/superbot.
  4. Use --openai-api-base instead of the env var if you prefer flags.
  5. Send one prompt to confirm the route.
shell setup
export OPENAI_API_BASE="https://api.superbot.gg/v1"
export OPENAI_API_KEY="sbc_…"
aider --model openai/superbot

traps

source: aider.chat, retrieved 2026-09-19

OpenCodefull

OpenCode: add superbot as a provider.

OpenCode: how a request reaches superbotOpenCodesuperbotsuperbot.ggvendor keysprev upstreamsuperbot agent
sign in to see which lanes you hold
  1. Open your opencode.json.
  2. Add a provider.superbot entry.
  3. Set its npm to @ai-sdk/openai-compatible.
  4. Set options.baseURL to the base URL above, then give it an options.apiKey.
  5. List each model id under models, keyed by the id itself, with its limit and variants as in the snippet.
  6. Restart OpenCode and send one message.
opencode.json
{
  "provider": {
    "superbot": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "superbot",
      "options": {
        "baseURL": "https://api.superbot.gg/v1",
        "apiKey": "sbc_…"
      },
      "models": {
        "superbot": {
          "name": "Superbot",
          "reasoning": true,
          "limit": { "context": 1000000, "output": 393216 },
          "variants": {
            "none": { "reasoningEffort": "none" },
            "low": { "reasoningEffort": "low" },
            "high": { "reasoningEffort": "high" },
            "xhigh": { "reasoningEffort": "xhigh" },
            "max": { "reasoningEffort": "max" }
          }
        }
      }
    }
  }
}

traps

source: opencode.ai, retrieved 2026-09-19

Any OpenAI or Anthropic SDKfull

Any OpenAI or Anthropic SDK, same base URL.

Any OpenAI or Anthropic SDK: how a request reaches superbotAny OpenAI or Anthropic SDKsuperbotsuperbot.ggvendor keysprev upstreamsuperbot agent
sign in to see which lanes you hold
  1. Install the openai or anthropic package for your language.
  2. Set OPENAI_BASE_URL or ANTHROPIC_BASE_URL in the environment.
  3. Pass a caller key as the API key, or put it in the matching env var.
  4. Send a normal request with the model id shown in the env comment.
  5. Swap that id for the omni one to run the agent on your computer.
  6. Send an x-superbot-session header to keep one chat in its own server-side thread. Use a different id for each chat.
env, both dialects
export OPENAI_BASE_URL="https://api.superbot.gg/v1"
export OPENAI_API_KEY="sbc_…"
export ANTHROPIC_BASE_URL="https://api.superbot.gg/v1"
export ANTHROPIC_API_KEY="sbc_…"
# model: superbot for your agent, superbot-omni to run it on your computer
python: openai
from openai import OpenAI

c = OpenAI(base_url="https://api.superbot.gg/v1", api_key="sbc_…")
r = c.chat.completions.create(model="superbot", messages=[{"role": "user", "content": "ping"}])
print(r.choices[0].message.content)
python: anthropic
from anthropic import Anthropic

c = Anthropic(base_url="https://api.superbot.gg/v1", api_key="sbc_…")
m = c.messages.create(model="superbot", max_tokens=256, messages=[{"role": "user", "content": "ping"}])
print(m.content[0].text)
python: name a conversation
from openai import OpenAI

c = OpenAI(base_url="https://api.superbot.gg/v1", api_key="sbc_…")
r = c.chat.completions.create(
    model="superbot",
    messages=[{"role": "user", "content": "ping"}],
    extra_headers={"x-superbot-session": "my-chat-1"},
)
print(r.choices[0].message.content)
curl
curl https://api.superbot.gg/v1/chat/completions \
  -H "Authorization: Bearer sbc_…" \
  -H "Content-Type: application/json" \
  -d '{"model": "superbot", "messages": [{"role": "user", "content": "ping"}]}'

traps

source: developers.openai.com, retrieved 2026-09-19