Docs
superbot is your own AI agent: anything you can do on your computer, it can do, fast, and it runs your recurring tasks on a schedule across all your devices.
How do you work?
I want the app
Make pictures, video, songs and apps in the desktop app.
I keep my own app
Claude Code keeps working.
curl -fsSL https://superbot.gg/bootstrap.sh | sh -s -- --relay-appWithout the app, use --no-app
& ([scriptblock]::Create((irm https://superbot.gg/bootstrap.ps1))) -RelayAppWithout the app, use -NoApp
The relay runs claude -p on Omni.
Tidy is on by default and sends fewer rules.
I only call API
Any OpenAI or Anthropic client works.
curl https://api.superbot.gg/v1/models -H "Authorization: Bearer sbc_…"Remote Omniclaude --model superbot-omni
I only want MCP
Any MCP client works.
Paste this into your agent.
install the superbot MCP server globally: https://superbot.gg/mcp
install the superbot skill globally: https://superbot.gg/skills/superbot/SKILL.md
Tell me if I need to sign in. Then type /superbot in your agent.
In Codex, type $superbot.
No account? Your agent follows /auth.md.
Or add the server URL yourself.
https://superbot.gg/mcpNo browser? Signed in, copy a key.
Install
The default route installs the Helper, opens a browser to sign you in and finishes with the desktop app. It routes no AI app through superbot: you switch an app on under Your apps in superbot relay, or add --wire (-Wire on Windows) to route the AI clients it finds at install time. Add --no-app (-NoApp on Windows) to install the Helper and CLI alone, and run the installer again to update.
The second route is superbot relay: use your own harness. It installs the Helper and CLI plus the standalone superbot relay app in place of the desktop app, with the same sign-in. Add --relay-app (-RelayApp on Windows). Its card on Download superbot appears once the app has a release, and a computer with no release for it gets the Helper and CLI, with a line saying so.
Related: MCP server and its tool
Verify
Restart an AI client you routed through superbot (in superbot relay, or with --wire) and ask it what superbot tools it has. It lists one tool, superbot.
what superbot tools do you have?
Your connection
- MCP endpoint
https://superbot.gg/mcp- API base
https://api.superbot.gg/v1- Models you can dial
superbot, superbot-omni, superbot-fast- Rate limit
- 1200 requests a minute per key
Sign in to see your caller keys. Sign in
For agents
Which surface to use
Match the job to a row. The Auth column is what you send.
| Job | Surface | Auth |
|---|---|---|
| Call a model with an OpenAI or Anthropic SDK | https://api.superbot.gg/v1 (hosted base) | caller key sbc_…, or a saved provider key. Routing by key |
| Call a model on this computer's own subscriptions | http://127.0.0.1:18787/v1 (local base URL) | relay key sk-superbot-…, caller key sbc_…, or account key sbk_…. Local relay API |
| Hand a whole task to superbot in plain words | https://superbot.gg/mcp, tool superbot. Or model superbot on https://api.superbot.gg/v1 | MCP: OAuth sign-in or the install token. Model: caller key sbc_…. MCP endpoints |
| Call the user's own MCP tools from elsewhere | POST https://api.superbot.gg/v1/mcp | caller key with the mcp:invoke scope, or account key sbk_…. MCP endpoints |
| Use agent tools inside a session the Helper runs | http://127.0.0.1:18787/mcp | relay key, or account key sbk_…. Local relay API |
| Read these docs as markdown or OpenAPI | https://superbot.gg/docs.md, https://superbot.gg/docs/openapi.json | none. Discovery and access |
MCP endpoints
Three endpoints, one per job. Each takes its own auth.
| Endpoint | Serves | Auth |
|---|---|---|
https://superbot.gg/mcp | one tool, superbot | OAuth sign-in, or the install token |
POST https://api.superbot.gg/v1/mcp | the user's own MCP tools, each named <server>__<tool> | caller key with mcp:invoke, or account key sbk_… |
http://127.0.0.1:18787/mcp | the agent tools on this computer | relay key, or account key sbk_…; a caller key sbc_… answers 403 caller_key_forbidden |
The superbot tool
| Argument | Mode |
|---|---|
use_case, without intent | search: returns session_id, tools (each with slug and one_liner), connection_info and miss |
slug, alone | one tool's details |
intent | run the task |
session_id | continue an earlier search or run |
The skills CLI installs the superbot skill: npx skills add https://superbot.gg. Once it is installed, a user can say use superbot, and the agent calls superbot with the rest of the request.
Link install
Mint an install code with POST https://superbot.gg/mcp/install. Name the client with client= in the query, a JSON body or a form body. Values: claude-code, codex, gemini-cli, cursor, vscode, cline, zed, windsurf, other. An unknown value is other.
curl -X POST 'https://superbot.gg/mcp/install?client=claude-code'
| Reply field | Meaning |
|---|---|
token | the install's bearer token |
mcp_url | the MCP endpoint to connect |
user_code | the code the owner approves |
link_url | https://superbot.gg/link/<user_code>, where the owner approves it |
expires_in | seconds the code lives: 900 |
config | the client's config |
add, replace | claude-code only: the claude mcp add and claude mcp remove commands |
add | gemini-cli only: the gemini mcp add command |
config_toml | codex only: the TOML block |
Over a rate limit, the call answers 429 rate_limited with retry_after, limit and a Retry-After header. Too many pending installs answer 503 temporarily_unavailable with retry_after.
Your own MCP tools
- Methods:
initialize,ping,tools/listandtools/call, as JSON-RPC 2.0. - Auth: a caller key with
mcp:invoke. A key without the scope answers403 insufficient_scope. An account keysbk_…is accepted. A session or device token answers403 caller_key_required. No key answers401 unauthorizedwith aWWW-Authenticate: Bearerheader. - Names:
<server>__<tool>. Servers namedhuborsuperbotare never served. - Limits: 120
tools/calla minute per key, and 8 running at once per user. Over either limit:429 rate_limitedwithretry_afterand aRetry-Afterheader. - Refusal codes for a
tools/call:remote_mcp_off(the switch is off),device_offline(no paired device is online) andunknown_tool. The call answers as an error result (isError: true). - Switch: relay app, MCP page, "Your tools, remotely", "Allow remote MCP tools". See Your own MCP tools, remotely.
curl -X POST https://api.superbot.gg/v1/mcp \
-H "Authorization: Bearer sbc_…" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Agent tools on this computer
Served at http://127.0.0.1:18787/mcp with a relay key or account key sbk_…. A caller key sbc_… answers 403 caller_key_forbidden. Mounted in the agent sessions the Helper runs: its own agent, the Claude Agent SDK, Codex, and Cursor and Claude over ACP.
| Family | Tools |
|---|---|
| Files | hub__fs_* |
| Rules and skills | hub__rules_*, hub__skills_*, hub__skill |
| Memory and ledger | hub__memory_*, hub__todo_read, hub__todo_write, hub__pin_context |
| Delegation and peers | hub__delegate*, hub__peer_* |
| Credentials | hub__creds_list, hub__creds_put |
| MCP servers | hub__mcp_search, hub__mcp_install, hub__mcp_set_enabled, hub__mcp_remove, hub__mcp_approve_change, hub__mcp_refresh |
| Projects and apps | hub__projects_*, hub__clients_list, hub__clients_wire, hub__clients_unwire |
| Phone | hub__phone_*, hub__sms_send |
| Settings | hub__settings_set |
| Acquire | hub__acquire |
| Publish and deploy | publish_check, publish_prepare, deploy_status, deploy_versions, deploy_secrets_list, deploy_run |
Local relay API
The Helper serves the local base URL from this computer.
- Base URL:
http://127.0.0.1:18787/v1. Default port: 18787. Read the port on the relay app's Overview page, in the Endpoint card with Local picked, on the Base URL row. - Routes:
POST /v1/messages,POST /v1/messages/count_tokens,POST /v1/chat/completions,POST /v1/responses. - Sign-ins served: Claude, ChatGPT, Gemini, Grok, Muse Code, Kimi Code and GLM Coding Plan. Each answers in either API: a Claude model answers
POST /v1/chat/completions, and a GPT model answersPOST /v1/messages. - No key:
GET /v1/models,GET /health. - Key required:
GET /v1/keys/whoami, every other/v1/*route, and/mcp. - Accepted keys:
- relay key
sk-superbot-…, sent asAuthorization: Bearerorx-api-key; - caller key
sbc_…and account keysbk_…; - saved Anthropic or OpenAI provider key, on its own vendor's routes only. Other routes answer
403 provider_key_wrong_vendor.
- relay key
- Relay switched off (the Relay switch in the superbot relay card on the relay app's Overview page): every
/v1route answers503 relay_offto every key;/healthand/mcpkeep answering. - Relay key mint: the Helper mints a relay key on its first run and prints it.
superbot clients wire [client]routes a client: it reuses that client's live relay key or mints one, and writes the local base URL and key into the client's config. - Caller key mint:
superbot keys mint <name>and the relay app's Remote API page, Mint new key, mint caller keyssbc_…on your account. The raw key shows once. A caller key works on the hosted base and on the local base URL. The Remote API key is an agent key: its tools run on this computer, and the edge picks who pays. The CLI takes--modeand--route; without them the edge's defaults apply. - Failover between your sign-ins: the relay answers from your own vendor sign-ins, pooled per vendor. On 401 or 403 that sign-in is re-minted and the call moves to a sibling. On 429 it moves too. Each request makes at most 3 attempts, or one per sign-in when the vendor's pool holds more, up to 8.
- Bare model:
superbotorauto. Chat goes tosuperbot-omni. Code goes to Claude Code's default model on the Anthropic plan. - Own keys in connected apps: when the Helper wires an app, a key already in that app's config is kept and registered as a seat. Shapes:
sk-ant-…(Anthropic), andsk-…,sk-proj-…,sk-svcacct-…orsk-admin-…(OpenAI). Not adopted:sk-ant-oat…(Anthropic OAuth tokens),sk-or-…,AIza…andxai-…. - Extra listen addresses: relay app, Overview, Endpoint card, Also listen on, Add address. Host: an IPv4 address. Port: 1024 to 65535.
0.0.0.0needs allow-all. - On an extra address: the Host header must equal that IPv4 (else
421 host_not_allowed); every route needs a key; lane keys answer403 lane_key_loopback_only; the Origin header must be on the allow-list; the/v1routes and/mcpare served.
curl http://127.0.0.1:18787/v1/chat/completions \
-H "Authorization: Bearer sk-superbot-…" \
-H "Content-Type: application/json" \
-d '{"model": "superbot", "messages": [{"role": "user", "content": "Summarize this thread."}]}'
Secret references
- Form:
{{secret:<id>}}, or{{secret:<id>.<field>}}withpassword,secretorvalueas the field. - The
<id>is a custody row id, writtenkind:adapter. - A reference expands only after the user approves the call.
- The first use of a credential in a session raises one consent card. An Allow holds for the rest of that session.
- A secret never expands into a file inside a git work tree. That call is refused.
- Output values are scrubbed to
[redacted].
Shell-safety switches
- Location: Settings > Advanced, Relay group.
- Sandbox agent shell commands: writes stay in the project and temp. On Windows, the row says macOS and Linux only.
- Guard shell prompts and sudo: asks before sudo runs.
- Both are off by default.
- An agent cannot set either one.
hub__settings_setrefuses both, true or false.
Discovery and access
Discovery documents
| Path | Holds |
|---|---|
/llms.txt | the entry point: an agent fetches it and follows the recipe for its own client |
/docs.md | this page as markdown |
/docs/llms.txt | llms.txt for the API |
/docs/llms-full.txt | every API operation as markdown |
/docs/openapi.json | OpenAPI 3.1 |
/docs/openapi-3.2.json | OpenAPI 3.2 |
/.well-known/api-catalog | RFC 9727 linkset: the specs and the reference |
/.well-known/mcp/server-card.json | the MCP server card: name, endpoint, sign-in and tool list. Public, no key needed. The endpoint /mcp still needs a sign-in. |
/mcp/server-card | the same server in the standard MCP server card shape: name and endpoint, no tool list. Public, no key needed. |
/.well-known/ai-catalog.json | the AI catalog that lists that card. Public, no key needed. |
/.well-known/superbot-endpoints | the canonical origin, keyless. 404 when the deploy names none. |
/developers/<group>.md | one API group as markdown |
/developers/<group>/<operationId>.md | one operation as markdown |
Sign-in and access answers
| Request | Answer |
|---|---|
https://superbot.gg/mcp with no key | 401 unauthorized, with a WWW-Authenticate: Bearer resource_metadata=… challenge pointing at /.well-known/oauth-protected-resource |
| signed in, no beta grant | 403 no_beta_grant (signing in on the website grants it: sign-up is open) |
| a gated page, in a browser | 302 to /invite?next=<page> to sign in (sign-up is open, no invite needed), then back to <page> |
Features
Each feature has one section: what it does and how to use it.
Desktop and phone apps
The desktop and phone apps run on one account, so a chat you start on one device keeps going on the other.
- Download the app on each device from Download superbot.
- Sign in with the same email on both.
The Sync chats across devices switch in Settings > Privacy stores your chats on superbot's servers so your other devices see them, and Sync projects across devices turns project sync on or off. Sync now on a project pushes it at once.
superbot relay
The API key for your Subscriptions
The superbot relay app switches the engine behind claude.
- Install it from Install.
- Turn on Omni runs claude under Options, or run
superbot engine on. Until then,clauderuns Claude Code. - Run
superbot engine offto go back.superbot engine restoreputs your original launcher back exactly, as uninstall does.
The launcher takes Claude Code's claude slot and never renames or edits its binary. With Omni on, only one-shot claude -p calls with known flags run on it. Everything else, and every call while the Helper is down, runs Claude Code.
Agent SDK apps run on Claude Code. Set cli_path (Python SDK) or pathToClaudeCodeExecutable (TypeScript SDK) to use the launcher.
The Helper serves your Claude, ChatGPT, Gemini, Grok, Muse Code, Kimi Code and GLM Coding Plan subscriptions at the local base URL http://127.0.0.1:18787/v1 for any app with an OpenAI or Anthropic base URL, using a superbot relay key or a caller key. An app's own Anthropic or OpenAI key is kept and joins the pool. Seats of one vendor are shared; a seat at its limit hands the call on. See superbot relay local API.
Trademarks
Claude, ChatGPT, Gemini, Kimi Code, GLM Coding Plan, Claude Code, Codex, Cursor, OpenAI and Anthropic are trademarks of their owners. superbot is not affiliated with or endorsed by them.
The Helper and CLI
The Helper pairs your computer to your account, and you control it with the superbot command.
- Run
superbot signin. It opens your browser to pair the computer. - Run
superbot statusto see what the Helper is doing. - Run
superbot sessionto chat with your agent in the terminal.
superbot keys mint <name> prints a new sbc_ caller key and shows it once.
The desktop app carries the app's own update; superbot update updates the Helper alone. superbot uninstall asks first, then removes the Helper and the desktop app along with the data they hold on this computer. superbot uninstall --dry-run lists what would go without deleting anything.
superbot clients list shows your AI clients and whether each is routed, and superbot clients wire|unwire routes one or stops it. superbot keys list|revoke <id> lists or revokes caller keys. superbot mcp list shows your MCP servers. superbot engine status|on|off|restore runs the engine switch.
Related: Uninstall
Your AI clients
Each AI client connects to superbot with its own recipe.
- Open your client's recipe below.
- Restart the client and ask what superbot tools it has. The answer includes
superbot.
The recipes cover Claude Code, Cursor, VS Code, Codex, Gemini CLI and Claude Desktop. A client with no recipe connects with an API key or points its base URL at the Helper on this computer. Your connection lists the hosted base URL and models, and Keys and authentication covers the key.
To send a client's model calls through superbot, switch it on under Your apps in superbot relay.
An MCP client connects to the connector at https://superbot.gg/mcp (see MCP server and its tool), and reaches your own tools at https://api.superbot.gg/v1/mcp through Remote MCP.
Related: Set up your clients
Super mode and swarms
One message goes to a team of agents that run on your connected subscriptions and report what each one cost.
- In the composer, set Super to On. The phone has the same toggle.
- In
superbot session, type/super on.
Each agent narrates its plan and posts an update at each milestone.
Daemon mode and parked chats
An agent keeps watching on a schedule while you are away, and a parked chat waits for one thing before it carries on.
Daemon mode
- Open the composer's mode menu and choose Daemon, or type
/daemonfollowed by what to watch. - Send your message to start the watch. A daemon watches any number of chats at once.
- Use Pause and Resume in the status line under the composer.
- To stop, choose Agent in the mode menu or type
/daemonagain.
On the phone, the Options sheet has the same Daemon row, and the desktop app runs the checks.
Park and resume
When an agent has to wait, it parks the chat, and superbot wakes it when the wait is over. A banner above the composer reads Parked: with what the chat waits for.
- Resume now wakes the chat at once.
- Cancel wait drops the wait.
On the phone, the same banner shows Resume now and Cancel wait.
Related: Fleet board
Fleet board
One screen lists every agent working for you, on all your devices and in the cloud.
- Open Fleet from the command palette or the View menu, or press
⌘⌥Fon a Mac orCtrl+Alt+Fon Windows. - Find a row under Needs you, Running, Waiting or Done, and press it to open its chat.
- Press Stop on a running row to end its turn or cloud run.
On the desktop, filter the board by App, Project or Device. On the phone, open Settings, then Your agent, and under General open Fleet.
Plan card, race and checkpoints
An agent shows its plan before it changes anything, and checkpoints rewind a bad result.
Plan card
- Choose Plan in the composer's mode menu, or type
/planfollowed by your request. - Press Build on the plan card to carry it out.
Race
Build in parallel runs the plan on up to four coding agents installed on this computer, each in its own copy of the project. Press Merge this on the column you want to keep, or Stop race to cancel.
Checkpoints
Checkpoints snapshot the chat and the project each time you send a message. They are on by default.
- Hover a message of yours and press Revert to here.
- Choose Revert chat and files, Revert chat only or Restore files only.
- Press Undo revert to bring the messages back until your next message.
The switch is Checkpoints in Settings > General, in the Advanced fold. On the phone, a revert restores files through the desktop app while it is online.
Branch a chat
Type /branch or /fork to copy the chat into a new one and switch to it. To cut at an earlier reply, hover it and press Branch.
Automations
An automation runs a standing instruction on a schedule you describe once, such as every weekday at 07:00.
- Describe it in any connected client, for example "every weekday at 07:00, summarise my inbox".
- Say "list my automations", or name one and say "pause it", "resume it", "change it" or "delete it".
superbot stores the automation and delivers each result by text message or push. An automation runs on your computer or in the cloud. A run on your computer fails if the computer is off or asleep. A run in the cloud works when your computer is off. A new automation starts on your computer if you have the desktop app. In the web app it starts in the cloud. With no desktop app it starts in the cloud too. To switch, open the automation, choose its Settings tab and change Where it runs. On the desktop, open Settings > Automation and press New automation. Run now runs a saved automation once. On the phone, open Settings and tap Automation.
Context and imported chats
superbot sends each chat to the model as you wrote it, and your account remembers the preferences you state.
- A preference you state once applies in later sessions on all your devices.
- When a chat runs on Claude, Anthropic clears old tool results on its side once the chat grows long, and the context meter shows what it cleared.
- Chats you import from other apps are stored on superbot's servers, and superbot searches and summarises them when you ask in a connected client.
Related: Import chats from other apps, Tidy mode
Tidy mode
Tidy keeps each turn short by pasting in the rules and skills your task needs and linking the rest.
Tidy is on by default.
- Open Settings > Library, then open Advanced.
- Under How rules are sent, What each task needs is Tidy. Choose Everything, as written to undo Tidy.
- Press Per app to choose for one app at a time.
- Press Show beside What changed to see each rule Tidy cut or trimmed.
The Tidy switch above How rules are sent is a separate setting. It merges duplicate global items into one copy.
In one benchmark run, Tidy sent 77% fewer rule tokens on the first call than sending your full setup.
Tools and the system prompt are not counted.
On the phone, open Settings, then Your agent. Under Library, open Advanced and find How rules are sent.
Import chats from other apps
Bring the chat history you already have in other AI apps, such as ChatGPT, into superbot, where it shows in that app's Chats list.
Imported chats are stored on superbot's servers and readable by superbot.
- On the desktop, open Settings > Privacy and tick the app under Chats, or turn on Vendor chats for every app.
- Press Add in the sidebar, then Connect an app…, and pick the app.
- For an app that keeps its chats on your computer, press Import chats.
On an app's Chats list, Resync scans again, and Choose a file… imports a data export when the app offers one. On the phone, open History, press Import a shared chat, paste a ChatGPT or Claude share link and press Import.
Related: Context and imported chats
MCP server and its tool
Any MCP client that connects to superbot gets one tool, superbot, that takes a search, a lookup of one tool, or a request in plain words, and does the work. MCP endpoints has the endpoint details.
To connect one client straight to the server, ask a coding agent to install the superbot MCP server globally, then to install the superbot skill globally.
install the superbot MCP server globally: https://superbot.gg/mcp
install the superbot skill globally: https://superbot.gg/skills/superbot/SKILL.md
Tell me if I need to sign in. Then type /superbot in your agent.
In Codex, type $superbot.
No account yet? Your agent follows /auth.md.
Claude Code also has a link install with no sign-in step: one curl request to the server's /install address, with client=claude-code in its body, gets back an add command that carries its own key, and a link_url the account owner approves. The server URL is under Your connection.
Codex has one too, with client=codex in its body, which gets back a config_toml entry with its own key instead.
The OAuth fallback is claude mcp add with the server URL, then a sign-in from /mcp in a new session.
claude mcp add --transport http superbot https://superbot.gg/mcp -s userNo browser? Signed in, copy a key.
Then ask for something in plain words, such as "summarise my unread email", and the client calls superbot with your words.
Related: Your AI clients
Your own MCP tools, remotely
Call your own MCP tools from any remote MCP client.
Send a POST request to:
https://api.superbot.gg/v1/mcpSend your account key, which starts sbk_, or an API key with the MCP tools scope, which starts sbc_.
The switch is Allow remote MCP tools, on the MCP page of the superbot relay app under Your tools, remotely. It is off by default on each computer, and only you can turn it on. Tool names read <server>__<tool>, and the Helper's own tools are never offered. MCP endpoints lists the endpoints.
Add an entry like this to your client's MCP settings:
{
"mcpServers": {
"superbot-tools": {
"type": "http",
"url": "https://api.superbot.gg/v1/mcp",
"headers": { "Authorization": "Bearer sbk_..." }
}
}
}
The superbot tool at https://superbot.gg/mcp is a different endpoint and stays one tool named superbot.
Related: Your MCP servers, Keys and authentication
Your MCP servers
superbot installs and checks the MCP servers your agents use.
- Ask for the capability in plain words, for example "add a Linear tool". The agent searches MCP registries and offers the best match.
- Approve the install when the agent asks.
- On the desktop, open Settings > Library to see every server and whether it works.
Add a tool adds one by hand, by HTTP URL or Command.
A row that needs you has an action such as Sign in or Approve change. If an installed server later changes a tool, its tools stay held back until you press Approve change.
On the phone, open Settings, then Your agent, and find MCP servers under Library.
From a terminal, superbot mcp list shows each server's state and tool count, and superbot mcp remove <id> removes one.
Related: MCP server and its tool
Built-in tools
Every agent starts with the same tools, so one ask can research a topic and hand back a finished file.
- Web search and page reading, with a browser for pages that need JavaScript and web archives for pages that are gone.
- Research searches scholarly papers and code repositories, and writes a cited report.
- Files builds a spreadsheet with live formulas, a document, a deck or a PDF.
- Media makes pictures, video, audio and 3D models from a description.
- Browser and screen works sites you are signed into and, when you allow it, any app on your screen.
Related: Your browser and your screen, Pictures, video, audio and 3D
Browser sessions and logins
Your agent works the sites you are signed into, using sessions the Helper reads from your own browsers.
- Sign in to the site in your browser.
- Ask your agent to use the site. The Helper reads your browsers only after you allow it. On a Mac it reads Chrome, Brave, Edge, Arc, Vivaldi, Firefox and Safari.
- To import one site yourself, run
superbot cookies <domain>. Add--dry-runto write nothing or--yesto skip the prompt.
Saved logins import from your browsers and from 1Password, Bitwarden, LastPass and KeePass. To switch a read off, open Settings > Privacy and use Browser sign-ins or Passwords and SSH keys under What Superbot can read on this computer (this Mac on a Mac).
Your browser and your screen
Your agent browses websites for you, for example to order food, and with your permission works any app on your screen.
On the desktop, the chip in the Browser pane's address bar picks where agent pages open: Cloud, or This Mac (This computer on Windows). My IP sends the cloud browser's traffic out through your computer's connection, so sites see your own address.
Computer use works on Mac and Windows and has three settings. Off never touches your screen, Ask asks before each action, and Always acts without asking. It starts at Off.
- Press the computer use toggle in the composer to move through Off, Ask and Always.
- On a Mac, the first time, Turn on computer use asks for Accessibility to click and type and Screen Recording to take screenshots. On Windows, there is no system permission to grant: the first screen action shows the inline Allow card instead.
When it is Off and a task needs your screen, the agent asks Turn on computer use: <reason>. Choose Allow in this chat, Always allow or Not now.
Related: Download superbot
Live view and remote control
From another device, you watch the screen of the device that did your task and take its controls.
- From one device, ask another to do something, for example from your phone to your computer. The reply shows a tile with Watch live.
- Press Watch live. The other device opens as live video.
- Choose Observe to watch or Control to click and type. End closes the viewer.
The viewed computer shows a banner naming the device, with Stop Sharing. To change what it allows, open Settings > Privacy and find the Live view group:
- Let your other devices view and control this computer turns Live view on or off. It is on by default.
- Require approval on this computer asks on this computer before another device can view or control it. It is off by default.
A device you have not allowed opens view only. Press Allow on the viewed computer, then reconnect to take control. A device added to your account in the last 24 hours starts this way.
Pictures, video, audio and 3D
superbot makes pictures, video, audio and 3D models on its own account, so you connect nothing first.
- Pictures appear in the chat, from a description.
- Video is a short clip, from a description or a picture.
- Audio is a song, a sound effect or a spoken voice line.
- 3D is a model file, from a description or a picture.
On superbot's account each result costs credits, and each kind has a daily limit.
A sign-in or key of your own is used first when you have connected one, and it spends no credits: your ChatGPT plan or your OpenAI, Gemini or Grok key for pictures, your OpenRouter, Google or xAI key for video, and your OpenAI or Gemini key for audio. A ChatGPT Free plan cannot make images, so superbot tries your key next.
Every result says which account paid. When your own sign-in or key could not be used, it says why.
Connect accounts in Settings > Subscriptions & keys. On the phone, open Settings > Connections.
Related: Credits
Calls and texts from your phone
Your agent calls and texts people from your own iPhone number, and a text to superbot's own number gets its answer back as a text.
This needs a Mac with the Helper running, an iPhone paired to it, and Messages signed in to your Apple Account on the Mac.
- Open Settings > Voice. At the bottom, under Phone line, the chip reads Calls and texts from your iPhone when setup is done.
- Finish the setup it lists: Allow Messages, then Open Full Disk Access. For calls, also choose Superbot Call Mic as the microphone in Phone.
- Ask: "call the dentist and ask for the first free slot".
Every call and text asks you first. If Phone.app needs it, you tap Call once on your Mac. The same number is called at most once in 24 hours. Open calls… under Phone line lists what your agent made.
To text superbot, text its number: the Text Superbot card under Phone line on Settings > Voice shows Text <number> to link a phone. On the phone, open Settings, then Connections, and under Phone line open Text Superbot.
Related: Text Superbot, Endpoints
Text Superbot by SMS
Superbot answers questions and runs tasks over SMS. Text its number from any phone to start.
- Text +14157180220 from any phone. No purchase or app install is required.
- Your first text is your opt-in. Superbot texts you back.
- Link a Superbot account by SMS, and you get a one-time confirmation text.
- Reply STOP to opt out, or HELP for help. Message frequency varies, and message & data rates may apply.
Related: Text Superbot, Calls and texts from your phone
Voice chat and dictation
Talk to an agent and hear it answer, or dictate a message instead of typing it.
Voice chat
- On the desktop, press Voice in the composer, or choose Start voice chat in the File menu (
⌘⇧Oon a Mac,Ctrl+Shift+Oon Windows). On the phone, press Voice in the composer. - Talk. The control shows what is happening, from Listening to Speaking.
- Press End voice to finish.
To use your own voice, open Settings > Voice, press Record my voice under Your voice, read for up to 60 seconds, tick My voice, or I have permission, then choose My voice. The sample goes to ElevenLabs and the voice is AI-generated.
Dictation
- Press the microphone in the composer (Click to speak) and talk. It reads Listening. Click to stop.
- The text lands in the message box, ready to edit.
- To choose where speech becomes text, open Settings > Voice and set Dictation engine. On this Mac (On this computer on Windows) keeps the audio on it, and Superbot cloud sends it to the speech provider.
Quick Ask
On the desktop, one shortcut opens a small panel from any app that answers about the window you were using.
- Press
Alt+Space(⌥Spaceon a Mac) from any app, or choose Quick Ask in the File menu. - Type your question under Ask anything. A chip shows the app and window you came from.
- Press Expand to full chat to carry on in the full app. Escape hides the panel and keeps your draft.
Quick Ask attaches a screenshot only when you press Screen snapshot. To change the shortcut, open Settings > Shortcuts and press Record in the Quick Ask group. Restore default goes back.
Build, edit and preview
On the desktop, you run a live copy of what your agent builds and change its files without leaving the app.
- Press Preview in the project header, beside Publish. The app runs the project on your computer and opens it in the side pane. Stop ends it.
- Open a project file to edit it. Save writes it, Format formats it, and Diff and File switch the view.
- For a page or document the agent made in a chat, press Open in pane. In the pane, Edit changes it in place and Done finishes. View code shows the source and Download saves it.
Related: Publish your app, Download superbot
Publish your app
Your app goes online at a free <name>.superbot.sh address on your own Cloudflare account.
This needs a free Cloudflare account. The first time, Connect Cloudflare opens a dialog: press Continue to Cloudflare, sign in, then pick Use this account.
- Open a project and press Publish in its header.
- Pick a name. Under Who can open it? choose Anyone or Only people I invite.
- Press Put it online. Publish checks the app and tests it on your computer first. Later publishes read Update live app.
Once it is live, the Live tab on the project manages it. Versions keeps every publish and Roll back returns to an older one. Domains renames the address or adds your own. Keys stores the secrets your app reads. Remove app, under Take it offline, deletes the app and its data for good.
Type /publish in a chat to have your agent publish the project.
Related: Build, edit and preview, Download superbot
Cloud runs from your phone
Your phone sends a task to a cloud copy of your project, and the files it changes sync back to your computer.
This needs Sync projects across devices on in Settings > Privacy > Projects, and Sync this project on for the project: click the project's name at the top of its page. Both are on by default. If either is off, the phone says Turn on sync to work in the cloud.
- On the phone, open a chat in the project and press Run in cloud in the thread header.
- The next time the Helper syncs, the changed files land in your local folder.
On the desktop, press Build in cloud on the plan card. It stays off until the project is linked to a repo, with the reason Link a repo to this project first.
In a repo-linked project, if you edited a file the cloud also changed, yours stays and the cloud's version lands beside it as notes.sync-conflict-20261004-101500-cloud.md.
Related: Download superbot
Phone extras
On iPhone, you start a chat from the home screen or the Action Button, and the Lock Screen shows a running agent.
- Home-screen shortcuts: press and hold the superbot icon for New chat, Ask by voice and Voice chat.
- Action Button: in the iOS Settings app, open Action Button, choose Shortcut, then pick New chat or Start voice chat from superbot.
- Lock Screen and Dynamic Island: show Superbot is working while an agent runs and Waiting for you when it needs you.
- Notifications: in Settings, on Your agent, under General, switch Push when Superbot finishes and Push when Superbot needs you. Both are on by default.
- Offline reading: chats stay readable on the phone without a connection.
Related: Voice chat and dictation, Download superbot
superbot-omni
superbot-omni is superbot's own agent loop: it sends your turn to the model, runs the tools it asks for and repeats until done.
It drives any model behind the OpenAI or Anthropic API with the same tools, including the models on your custom endpoints. To compare two models, pick each in the model picker and send the same task.
Related: Custom endpoints, Models
Teams and policy
A team shares MCP servers, rules and skills across its members and applies one signed policy to every member's devices.
- Open Account > Teams and press Create team.
- Under Members, enter an email, pick a role below your own and press Invite.
- Owners and admins see the Policy and coverage card. It reads a count such as 3 of 5 reported once a policy is published, and marks a member whose devices have not reported as not reported.
An owner or admin publishes the signed policy through the org API. Until then the card reads No policy published yet.
Related: Teams
Usage and spend
See what your agents used and what it cost, for the last 7 days by default.
Open Account > Usage to read it, and pick a longer range there. To cap a caller key, set Daily limit or Monthly limit in credits when you mint it under Account > API. A key that reaches a limit is refused until the window resets.
Related: Keys and authentication, Endpoints
Custom endpoints
Add any OpenAI- or Anthropic-compatible endpoint to the model picker and dial it with your own superbot key beside the house models.
- Open Settings > Subscriptions & keys and find the Custom endpoints group.
- Press Add endpoint (Add an endpoint on an empty list).
- Under Where it is saved, pick Hosted endpoint so every device on your account can dial it, or This Mac (This computer on Windows) to keep it on this computer.
- On the hosted path, enter a Label, the Base URL and the API key.
- Set Dialect to Auto, OpenAI or Anthropic, then press Add endpoint.
Models load when the endpoint answers /models, and Refresh models reloads them. Scan for keys, under Found on this Mac (Found on this computer on Windows), finds API keys already on this computer and offers each one as an endpoint. On the phone, open Settings > Connections and choose Custom endpoints.
Related: Models, Keys and authentication
API
Call the same agents the app uses over HTTP, with a caller key you mint and can revoke.
Keys and authentication
A caller key starts with sbc_ and belongs to your account.
Key kinds
| Key | Prefix | What it does |
|---|---|---|
| Caller key | sbc_ | Minted under Keys, by superbot keys mint <name>, or by the relay app's Remote API page. Its own Spend from, Mode and Models settings apply. Also accepted by the relay on the local base URL while the relay is on. |
| Account key | sbk_ | One per account, shown as Account key on Account > API. Rotating it stops every client on the old key. Accepted on https://api.superbot.gg/v1/mcp and, while the relay is on, on the local base URL. The hosted model routes answer 401 to it; send a caller key. An agent with no account follows /auth.md, which signs its user in and mints a caller key with this key. |
| Saved provider key | the vendor's own key | Saved under Providers on Account > API. Sent as-is, it runs that vendor only, as a single model call. GET /v1/models lists that vendor only. x-superbot-route and x-superbot-mode are ignored. |
| Relay key | sk-superbot- | Minted when the Helper wires a client. Works on the local base URL http://127.0.0.1:18787/v1 and on any extra address the relay listens on. The hosted base URL answers 401. See the local relay API. |
Mint a key
- Open Account > API, find Keys and select New key.
- Enter a Name of up to 64 characters.
- Set the fields you need.
- Select Create key.
- Copy the key. The page shows it in full only once.
To edit a key, select its row under Keys and change the fields below. To revoke a key, select Revoke on its row under Keys. It stops working immediately.
Key settings
| Field | Choice | Effect |
|---|---|---|
| Access | Models (default) | calls models; reads usage and the credit balance |
| Read-only query | reads your account; calls no model | |
| Full access | holds every scope listed under Scopes | |
| Spend from | Your providers | uses your own vendor accounts; spends no credits |
| Credits | spends your credit balance | |
| Auto (default) | uses your providers when the account holds a credential for the model's vendor, a custom endpoint, or an online Helper holding it; otherwise credits | |
| Daily limit | credits | caps the key's spend over any 24 hours; empty means no cap |
| Monthly limit | credits | caps the key's spend in a calendar month (UTC); empty means no cap |
| Mode | Single model call (default) | Goes straight to the model. For Cursor, SDKs, scripts. |
| Full agent turn | Superbot's agent does the task. For phones and chat apps. | |
| Models | comma-separated ids | * matches any run of characters and ? one character; empty means all |
| Incognito | checkbox | keeps the key's turns out of your history |
| Scopes | one checkbox per scope | ticking any box replaces Access; a write scope includes its read |
Send a key
The key goes in the Authorization: Bearer header. x-api-key carries the same key for clients that expect it.
curl https://api.superbot.gg/v1/models \
-H "Authorization: Bearer sbc_…"
No account yet? Make a free account first: there are no trial keys. POST https://api.superbot.gg/v1/keys/trial issues nothing and answers 403 trial_unavailable with the sign-up link in signup_url. A Free account's key calls the API on your own model key or subscription (saved under Providers on Account > API); a call that would run on our house models answers 403 model_plan_gated until the account is on Plus or above, and the paid plans use our models.
Related: Set up your clients, Account
Routing by key
One base URL serves every key. The key sets what answers. Set the base URL and key as shown under Send a message.
What runs per key
| Key | What runs | Spends |
|---|---|---|
| Caller key, no provider saved, no custom endpoint, no Helper online | house models; priced vendor models | credits |
| Caller key, with a provider saved, a custom endpoint, or a Helper online | vendor and subscription ids on your own accounts; device ids on your computer, through the relay; house models | your accounts and computer; credits for house models |
| Saved provider key | that vendor's ids only, as a single model call | your vendor account |
Subscription ids run on a Claude Pro/Max, ChatGPT/Codex, Gemini Code Assist or SuperGrok sign-in. Device ids are the ollama/, lmstudio/, omlx/ and openrouter/ ids a live device holds.
Per route
| Route | Vendor id, held | Vendor id, nothing held |
|---|---|---|
auto (default) | runs on the held credential, a custom endpoint or a live device; a credential only a device can open, with no device online, goes to credits | credits |
byo | runs on the held credential, a custom endpoint or a live device; a credential only a device can open, with no device online, answers 403 no_vendor_credential, reason device_required | 403 no_vendor_credential, unless a custom endpoint serves the id |
credits | credits only | credits only |
Held means the edge can open a saved sign-in or key for the vendor, a custom endpoint, or a live device that holds the vendor. Nothing held means none of those three.
Per request
| Header | Values | Effect |
|---|---|---|
x-superbot-route | byo, credits, auto | overrides a caller key's Spend from for one request; any other value answers 400 |
x-superbot-mode | model, agent | overrides the key's Mode for one request |
superbot,superbot-omniandsuperbot-fastalways run a full agent turn, whateverx-superbot-modesays.- A saved provider key ignores both headers and cannot name those three ids (
403model_not_allowed).
Device and list rules
- On
byo, a credential only a device can open (a sign-in or key sealed to your devices) answers403no_vendor_credential, reasondevice_required, when no device that can serve it is online. There is no credits fallback onbyo. - On
auto, the same credential with no device online goes to credits. With a device online, the call is routed to that device. GET /v1/modelswith the key is the authoritative list of what the account can call. Credits rows carryavailable; areasonis set when one applies.
Models
GET /v1/models lists every model id the account can call, whether or not the key's Models names it. A saved provider key lists only its vendor's ids. A call to an id the key's Models does not name answers 403 model_not_allowed.
Model ids
| Form | Spelling | Runs on |
|---|---|---|
| Agent id | superbot, superbot-omni, superbot-fast | the house agent turn. superbot-flash is the old alias of superbot-fast. |
| Vendor id | <vendor>/<model>, or the vendor's bare id | the vendor credential the route picks, or credits on auto |
| Subscription id | the vendor's bare id, as GET /v1/models lists it for that sign-in | the account's own sign-in, as listed under Routing by key |
| Custom id | custom/<endpoint>/<model>, or custom/<model> resolved through the endpoints' model lists | that custom endpoint |
| Device id | ollama/<model>, lmstudio/<model>, omlx/<model>, openrouter/<model> | the user's computer, through the relay, while a live device holds it |
Each GET /v1/models row that knows its window carries context_length, with the same value in context_window. Agent ids always carry one.
House models
superbot: Your Superbot agent. Context window: 1M. superbot-omni: Superbot agent, run on your computer. Context window: 1M. superbot-fast: Quick and cheap, for small jobs. Context window: 500k.
| Model | Input | Output | Cache write | Cache read | Use |
|---|---|---|---|---|---|
superbot | 1,000 $1.00 | 5,000 $5.00 | 1,250 $1.25 | 50 $0.05 | API and MCP |
superbot-fast | 1,000 $1.00 | 5,000 $5.00 | 1,250 $1.25 | 50 $0.05 | API and MCP |
superbot | 200 $0.20 | 1,000 $1.00 | 250 $0.25 | 10 $0.01 | Superbot apps |
superbot-fast | 200 $0.20 | 1,000 $1.00 | 250 $0.25 | 10 $0.01 | Superbot apps |
Credits per 1M tokens, with dollars beside them; one credit is $0.001. Calls with your API key bill at the API and MCP rate. In the Superbot apps, superbot and superbot-fast both bill at 20% of the API and MCP rate. Neither model is free on either lane. Fast mode bills 2x every rate. Reasoning tokens bill as output.
Effort and Fast
superbot serves the efforts none (no reasoning), low, high, xhigh and max, and runs at high, its default, when the request names none. low reasons less than high, and max reasons the most. superbot-fast runs at low, or none. Send the effort in the request's own field: reasoning_effort, reasoning.effort or output_config.effort. Each level is served as one superbot runs:
| You send | Served as |
|---|---|
minimal | low |
medium | high |
xhigh | high |
ultra | max |
| no effort | high (low on superbot-fast) |
Fast serves the turn on the faster tier at twice the price. Ask for it with service_tier: "priority" or "fast", with Anthropic's speed: "fast", or with the header x-sbr-speed: fast. GET /v1/models lists each house model's reasoning_efforts, default_reasoning_effort and service_tiers. Asked in Anthropic's shape (with an anthropic-version header), each house row carries max_input_tokens and capabilities.effort instead, and with ?client_version= the list is Codex's own model catalog.
Other models
Vendor model ids run on your own accounts and keys, or on credits. An endpoint added with Add endpoint under Providers on Account > API appears as custom/<endpoint>/<model>, for example custom/example/llama-3.3-70b.
Related: Custom endpoints, Credits, The API page
Endpoints
Each route links to its reference on /developers.
A scope names what the key must hold. any key takes any live key, and no key answers without one.
Call models
Full reference| Method | Path | What it does | Scope |
|---|---|---|---|
| GET | /v1/turns/{session} | Read a turn | turns:read |
| GET | /v1/turns/{session}/stream | Re-attach to a turn’s stream | turns:read |
| POST | /v1/chat/completions | Create a chat completionOpenAI Chat Completions | gateway:invoke |
| POST | /v1/responses | Create a responseOpenAI Responses | gateway:invoke |
| POST | /v1/messages | Create a messageAnthropic Messages | gateway:invoke |
| POST | /v1/messages/count_tokens | Estimate input tokensAnthropic, nothing billed | any key |
| GET | /v1/models | List modelsOpenAI and Anthropic | any key |
Manage keys
Full reference| Method | Path | What it does | Scope |
|---|---|---|---|
| GET | /v1/keys | List caller keys | keys:read |
| POST | /v1/keys | Create a caller key | keys:write |
| GET | /v1/keys/whoami | Get the calling key | any key |
| PATCH | /v1/keys/{id} | Update a caller key | keys:write |
| DELETE | /v1/keys/{id} | Revoke a caller key | keys:write |
| POST | /v1/keys/{id}/rotate | Rotate a caller key | keys:write |
Usage and spend
Full reference| Method | Path | What it does | Scope |
|---|---|---|---|
| GET | /v1/usage | Get usage over a window | usage:read |
| GET | /v1/usage/requests | List usage per request | usage:read |
| GET | /v1/usage/daily | Get usage per UTC day | usage:read |
| GET | /v1/usage/breakdown | Get usage bucketed and grouped | usage:read |
| GET | /v1/usage/export | Export usage rows | usage:read |
| GET | /v1/credits | Get the credit balance | billing:read |
| GET | /v1/spend | Get AI spend across apps | usage:read |
| GET | /v1/usage/report | Get a usage report | usage:read |
Custom endpoints
Full reference| Method | Path | What it does | Scope |
|---|---|---|---|
| GET | /v1/upstreams | List custom endpoints | endpoints:read |
| POST | /v1/upstreams | Add a custom endpoint | endpoints:write |
| PATCH | /v1/upstreams/{slug} | Update a custom endpoint | endpoints:write |
| DELETE | /v1/upstreams/{slug} | Remove a custom endpoint | endpoints:write |
| POST | /v1/upstreams/{slug}/probe | Re-probe a custom endpoint | endpoints:write |
| GET | /v1/aliases | List @mention aliases | endpoints:read |
| PUT | /v1/aliases/{token} | Set an @mention alias | endpoints:write |
| DELETE | /v1/aliases/{token} | Delete an @mention alias | endpoints:write |
| GET | /docs/services/{service_id}.json | Get a service’s OpenAPI document | no key |
Teams
Full reference| Method | Path | What it does | Scope |
|---|---|---|---|
| GET | /v1/org/{id}/audit | Export a team’s audit log | teams:read |
| GET | /v1/teams | List teams | teams:read |
| POST | /v1/teams | Create a team | teams:write |
| GET | /v1/teams/{team_id} | Get a team | teams:read |
| PATCH | /v1/teams/{team_id} | Update a team | teams:write |
| DELETE | /v1/teams/{team_id} | Delete a team | teams:write |
| GET | /v1/teams/{team_id}/members | List team members | teams:read |
| PATCH | /v1/teams/{team_id}/members/{user_id} | Change a member’s role | teams:write |
| DELETE | /v1/teams/{team_id}/members/{user_id} | Remove a team member | teams:write |
| GET | /v1/teams/{team_id}/invites | List pending team invites | teams:read |
| POST | /v1/teams/{team_id}/invites | Invite someone to a team | teams:write |
| DELETE | /v1/teams/{team_id}/invites/{code} | Revoke a team invite | teams:write |
| POST | /v1/teams/{team_id}/invites/{code}/resend | Resend a team invite | teams:write |
| POST | /v1/team_invites/{code}/accept | Accept a team invite | teams:write |
Devices
Full reference| Method | Path | What it does | Scope |
|---|---|---|---|
| POST | /v1/devices/{device_id}/jobs | Run a job on an agent computer | devices:write |
| GET | /v1/devices/{device_id}/jobs/{job_id} | Read an agent computer job | devices:read |
| GET | /v1/devices/{device_id}/terminals/{terminal_id}/stream | Stream an agent computer terminal | devices:read |
| GET | /v1/pair/{user_code} | Preview an agent computer code | any key |
| POST | /v1/pair/{user_code}/approve | Approve an agent computer code | any key |
| POST | /v1/pair/{user_code}/deny | Decline an agent computer code | any key |
| GET | /v1/devices | List devices | devices:read |
| GET | /v1/devices/{device_id} | Get a device | devices:read |
| PATCH | /v1/devices/{device_id} | Rename a device | devices:write |
| DELETE | /v1/devices/{device_id} | Unlink a device | devices:write |
Runs
Full reference| Method | Path | What it does | Scope |
|---|---|---|---|
| GET | /v1/runs | List cloud runs | runs:read |
| POST | /v1/runs | Start a cloud run | runs:write |
| GET | /v1/runs/projects | Find the project for a repository | runs:read |
| GET | /v1/runs/{run_id} | Get a cloud run | runs:read |
| GET | /v1/runs/{run_id}/events | Follow a run’s events | runs:read |
| POST | /v1/runs/{run_id}/cancel | Cancel a cloud run | runs:write |
| POST | /v1/runs/{run_id}/messages | Steer a running cloud run | runs:write |
Related: Full API reference, OpenAPI 3.1 spec
Send a message
POST /v1/chat/completions takes an OpenAI Chat Completions body, POST /v1/responses an OpenAI Responses body and POST /v1/messages an Anthropic Messages body. Each answers in its own shape.
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_…
curl https://api.superbot.gg/v1/chat/completions \
-H "Authorization: Bearer sbc_…" \
-H "Content-Type: application/json" \
-d '{
"model": "superbot",
"messages": [{"role": "user", "content": "Summarize this thread."}]
}'
from openai import OpenAI
client = OpenAI(base_url="https://api.superbot.gg/v1", api_key="sbc_…")
response = client.chat.completions.create(
model="superbot",
messages=[{"role": "user", "content": "Summarize this thread."}],
)
print(response.choices[0].message.content)
from anthropic import Anthropic
client = Anthropic(base_url="https://api.superbot.gg/v1", api_key="sbc_…")
message = client.messages.create(
model="superbot",
max_tokens=1024,
messages=[{"role": "user", "content": "Summarize this thread."}],
)
print(message.content[0].text)
Streaming
Send "stream": true to any of the three routes to receive server-sent events in that route's own shape.
curl -N https://api.superbot.gg/v1/chat/completions \
-H "Authorization: Bearer sbc_…" \
-H "Content-Type: application/json" \
-d '{"model": "superbot", "stream": true, "messages": [{"role": "user", "content": "Summarize this thread."}]}'
- Chat Completions sends
data: {"choices":[…]}frames and ends withdata: [DONE]. - Responses sends typed events such as
response.output_text.deltaand ends withresponse.completed. - Messages sends Anthropic's events, from
message_starttomessage_stop.
Usage and billing settle when the stream ends, and an aborted stream is billed for what it produced.
Long answers without streaming
A non-streamed call whose answer takes more than 30 seconds gets its 200 and content-type: application/json headers early, then a newline every 15 seconds until the JSON body follows. Any JSON parser skips that leading whitespace. If the call fails after those headers went out, the status stays 200 and the body is the route's error object ({"error": {…}}, or {"type": "error", "error": {…}} on Messages). Send "stream": true for long turns.
Limits and errors
Rate limit
A caller key gets 1200 requests a minute. Over that, the route answers 429 before any model is called, with this body:
{
"error": {
"message": "per-key rate limit reached",
"type": "rate_limit_error",
"param": null,
"code": "rate_limit_error",
"retry_after": 12,
"source": "account"
}
}
That is the Chat Completions and Responses body. On Messages the same refusal comes in Anthropic's envelope: {"type": "error", "error": {"type": "rate_limit_error", "message": "per-key rate limit reached", "retry_after": 12, "source": "account"}}. retry_after is in seconds. source: account says the limit is your key's own. The x-ratelimit-remaining and x-ratelimit-reset headers carry the same window.
Errors
Model routes answer in the caller's dialect, and the Field column says where each code sits. A top-level error is a string code. Account routes answer in that form too, with message, doc_url and request_id beside it. The two refusals of a body Superbot cannot take, 413 and 415, are flat bodies with the code at the top level, in code.
| Status | Field | Code | Meaning |
|---|---|---|---|
| 400 | error.code | invalid_json | the body is not a JSON object; error.type is invalid_request_error |
| 400 | error.code | unknown_model | no vendor claims the model id; error.fix says how to pick one (see below) |
| 400 | error.code | invalid_route_header | x-superbot-route is not byo, credits or auto; error.param is x-superbot-route |
| 400 | error.code | no_user_message | an agent id was called with no user message to run |
| 400 | error.code | house_key_protocol | the model runs on Superbot's own key, which takes only /v1/chat/completions, /v1/messages and /v1/responses |
| 400 | error.code | invalid_service_tier | service_tier (or speed) is not a printable ASCII word; error.param is service_tier |
| 400 | error.code | request_part_unsupported | the model cannot take a part of the request; error.message says why |
| 400 | error.code | device_lane_dialect | the model runs on your computer, which takes only /v1/chat/completions or /v1/messages |
| 400 | error.code | no_vendor_credential | reason code_assist_not_dialable: a Google Code Assist sign-in cannot be dialed; add a Gemini API key, or send x-superbot-route: credits |
| 400 | error.code | no_vendor_credential | the saved credential for that vendor needs the /v1/responses shape; send the call there. vendor names the vendor |
| 401 | error.type | authentication_error | the key is missing, malformed or unknown |
| 401 | error.code | key_required | the same refusal with a code to branch on; error.message says where to send the key |
| 402 | error.code | insufficient_balance | the credit balance cannot cover the call; error.message names the billing page to add credits (see below) |
| 402 | error.code | daily_limit, monthly_limit | the key reached its own limit |
| 403 | error.type | permission_error | the key is revoked |
| 403 | error.code | key_revoked | the same refusal with a code to branch on; error.source is client |
| 403 | error | insufficient_scope | the key lacks the route's scope; x-superbot-required-scopes names it |
| 403 | error.code | model_not_allowed | the key's Models setting does not include that model |
| 403 | error.code | model_not_allowed | a saved provider key named another vendor's model, or an agent id |
| 403 | error.code | agent_not_granted | the n-agent header names an agent with no live grant |
| 403 | error.code | no_vendor_credential | no usable sign-in or key for that model's vendor; byo_url links to where to add one |
| 403 | error.code | no_vendor_credential | reason device_required: the credential is held only on a device whose Helper is offline; no credits fallback |
| 403 | error.code | no_vendor_credential | reason device_only: a local runtime (omlx/, lmstudio/) whose device is not live |
| 403 | error.code | no_vendor_credential | reason not_connected: no key or sign-in is saved for the vendor |
| 403 | error.code | no_vendor_credential | reason oauth_not_routable: this sign-in kind is not routable |
| 403 | error.code | no_vendor_credential | reason reconnect: the sign-in expired and could not be refreshed; sign in again |
| 403 | error.code | no_custom_upstream | none of your custom endpoints serves that custom/ id; byo_url links to where to add one |
| 413 | code | body_too_large | the body, or the body once its content-encoding is decoded, is over the route's size limit; max_bytes is the limit |
| 415 | code | unsupported_encoding | the content-encoding is one Superbot cannot decode; encoding names it, and fix and supported_encodings say what to resend (see below) |
| 429 | error.type | rate_limit_error | over the per-key rate |
| 429 | error.code | caller_binding_refusal | every account this key can spend already serves its maximum number of callers; error.retry_after_ms is set |
| 429 | error.code | account_stormed | the vendor account is repeating the same refusal; error.retry_after_ms is set |
| 503 | error.code | budget_unavailable | the spend ledger cannot be read, so the call is refused before any dial |
| 503 | error.code | device_offline, device_gone | the model runs on your computer, and that computer is not online; error.vendor names the vendor |
| 503 | error.code | device_timeout | the model on your computer did not finish in time; the call may still be running there. The edge gave it 504, and a caller key or the account key reads it as 503 with x-superbot-origin-status: 504 (see the 5xx row) |
| 5xx | error.type | api_error | the model provider or the agent turn failed. A 502 or 504 that Superbot itself gives a caller key or the account key is read as 503 with the same body and x-superbot-origin-status: 502 or 504 (the CDN in front of the API replaces the body of a 502 or 504, never a 503); a provider's own status (x-superbot-error-origin: vendor) and the model router's own typed error keep theirs |
An error object can carry machine members beside message and code. They only add: a client that does not know a member ignores it, and a member never changes the status, error.type, error.code or message of the refusal.
error.sourcesays whose side the problem is on:request(the request or conversation itself),client(your key, API shape or headers),account(your credits, plan, limits or saved keys),superbot(Superbot itself failed; a retry may help),model_server(Superbot's model service is down, overloaded or answered nothing) orprovider(a provider you connected refused or failed). The set can grow, so ignore a value you do not know.error.fixnames the step that clears the refusal. Onunknown_modelit ispick_listed_model:error.models_pathis/v1/models, anderror.accepted_modelslists up to three ids the key can call, never the one you sent. A key with no other id to offer gets noaccepted_models.- The
415carriesfix: resend_supported_encodingat the top level, withsupported_encodingslisting the encodings Superbot decodes:gzip,x-gzip,deflate,brand, where the server supports it,zstd.
A provider's own error passes through with the provider's status, marked by the x-superbot-error-origin: vendor header.
Out of credit
When the account behind a caller key has no credit left, the call answers HTTP 402 with the header x-superbot-error: insufficient_balance. The body is in the dialect of the route you called. Its error.message is two lines: a sentence that says what to do (for a credit-out, the billing page to add credits), then the status, code and billing reason in parentheses.
OpenAI routes (/v1/chat/completions, /v1/responses):
{
"error": {
"message": "Your Superbot account has no plan or credits left. Add credits at https://superbot.gg/account/billing\n(402 insufficient_balance · no_plan)",
"type": "invalid_request_error",
"param": null,
"code": "insufficient_balance",
"refusal_class": "credit_out",
"source": "account"
}
}
Anthropic routes (/v1/messages):
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "Your Superbot account has no plan or credits left. Add credits at https://superbot.gg/account/billing\n(402 insufficient_balance · no_plan)",
"code": "insufficient_balance",
"refusal_class": "credit_out",
"source": "account"
}
}
error.code is insufficient_balance for every refusal that comes from the account's credit or spend limits, so it is the one code to branch on. error.refusal_class says which refusal it is, and error.source is account: the refusal comes from your account.
refusal_class | Meaning |
|---|---|
credit_out | no plan or credits left; add credits on the billing page |
weekly_cap | retired: plans no longer have a weekly limit, so new refusals do not carry it |
recharge_pending | a top-up is processing; try again in a few seconds |
limit | a spend limit is reached; the message says which one and where to change it |
suspended | the account is suspended; contact support |
https://superbot.gg/account/billing is the page to add credits. All the top-up, subscribe, recharge and manage links name this one page. The link is not signed and does not expire: you sign in on the web to use it, and a pack or plan button on that page asks how you want to pay: Card opens Stripe Checkout directly, and Crypto leads to a crypto invoice at 5% off the price before tax. On GET /v1/plans, a paid plan's subscribe_url is the same page with ?plan= and the plan id on it.
A refusal that is not a credit-out keeps this body: only error.message and error.refusal_class change, and a pending top-up and a suspension name no billing page in the message. Superbot's own apps, signed in as the account, get a richer body with plan and balance fields.
The billing reason is one of these:
reason | Meaning |
|---|---|
no_plan | the account is on the free plan and its balance is spent |
topup_only | the account holds packs only and its balance is spent |
allowance_exhausted | the plan's monthly allowance is spent |
auto_recharge_off | the balance is spent and auto-recharge is off |
recharge_cap_reached | the next auto-recharge would pass its monthly limit |
recharge_failed | the auto-recharge charge failed |
recharge_pending | an auto-recharge is in flight; retryable |
suspended | the account is suspended |
limit:<ref> | a spend limit is reached; the text after limit: names which one, such as key: and a key id |
Related: Credits, Plans and packs
Account and billing
Credits
superbot bills in credits: one credit is $0.001. Each token type is priced as a multiple of the input rate (on superbot: output counted at 5x, cache reads at 0.05x and cache writes at 1.25x). A vendor model called on credits, with none of your own accounts attached, costs its own list price. Models on your own subscriptions and keys spend no credits. Credits are held and charged by the billing service behind superbot: the balance, the plan and every charge are its records, and the app and the API show what it reports.
An MCP connector turn bills at the same rate.
superbot and superbot-fast both bill it.
Neither model is free.
Read your balance
GET /v1/credits returns the balance as balance_credits, with the pots in credits, and the plan and auto-recharge state. balance_credits is the credit any model can spend; a plan's house allowance, spendable only on superbot and superbot-fast, is listed apart as credits.house and as a house row of grants, which names those models. It needs the billing:read scope, which Models and Read-only query keys hold. low is true when balance_credits is zero or less, so an account holding only the house allowance is low: its Superbot models still run. reason appears with it. The route reads the balance from billing and holds none itself, so while billing cannot be reached it answers 503 billing_unavailable with a retry hint.
curl https://api.superbot.gg/v1/credits \
-H "Authorization: Bearer sbc_…"
Related: Models, The API page
Plans and packs
- Free costs nothing and carries 10,000 beta credits a month, refilled on the 1st (UTC). Cloud computer · 5 h/mo.
- Superbot Plus is $20 a month with 22,000 credits included for any model and 250M non-cached Superbot tokens a month at 3:1 input to output, or $200 a year. Cloud computer · 20 h/mo.
- Pro is $100 a month with 120,000 credits included for any model and 1.5B non-cached Superbot tokens a month at 3:1 input to output, or $960 a year. Cloud computer · 100 h/mo.
- Max is $200 a month with 270,000 credits included for any model and 4B non-cached Superbot tokens a month at 3:1 input to output, or $1,920 a year. Cloud computer · 300 h/mo.
- Superbot Teams is $24 a seat a month, or $228 a seat a year, with 20,000 credits a seat a month for any model and 250M non-cached Superbot tokens a seat a month at 3:1 input to output, pooled across the team. Cloud computer · 20 h/mo a seat.
Every paid plan also sells a yearly term at the yearly price, and a yearly plan still releases its allowance monthly. Any account can start a 7-day Superbot Pro trial at checkout: it takes a card, charges nothing during the trial, gives a one-time 20,000-credit grant that expires when the trial ends, and cancels when it ends unless you continue; an account gets one trial ever. Past the allowance, Plus, Teams and Teams Premium bill $1.00 per 1,000 credits, Pro $0.90 and Max $0.80.
Every model is available on every plan.
A plan's scheduled runs are its automation runs, on a cron or an interval.
Packs are one-time purchases: 5,000 credits for $5, 20,000 for $20, 100,000 for $100, 275,000 for $250, 600,000 for $500, 1,250,000 for $1,000. A pack's credits never expire, and a plan does not reprice the $5/$20/$100/$250/$500/$1,000 packs. Plans and packs are bought on the billing page. Account > Billing opens it, and so does the topup_url or subscribe_url of a 402 or of GET /v1/credits: each opens that same page, which asks you to sign in if you are not already. A pack or plan button on it asks how you want to pay: Card opens Stripe Checkout directly, and Crypto leads to a crypto invoice at 5% off the price before tax.
Auto-recharge
Auto-recharge charges your card for more credits when the balance falls to a level you set. It is off until you turn it on, then $20 per charge, capped at $100 per calendar month. Declined charges count toward the monthly limit. GET /v1/credits reports its state as auto_recharge, and the reason of a 402 says when it is off, capped or failed.
Related: Usage and spend
Which credits are spent first
Superbot models (superbot and superbot-fast) spend in this order: beta credits, the house allowance, plan allowance, promo credits, auto-recharge credits, packs. Every other model skips the house allowance, which only Superbot models can spend. Beta credits refill on the 1st (UTC); the house and plan allowances reset at renewal; none of the three rolls over. Packs and auto-recharge credits never expire.
Help
Troubleshooting
Fixes for what goes wrong after you install the Helper.
If superbot seems down, check status.superbot.gg.
My AI client does not show superbot
Restart the client. If it still lists no superbot tool, add the server again with its recipe under Your AI clients.
superbot: command not found
Paste the activation line the installer printed at the end. In sh, bash and zsh it is export PATH="$HOME/.superbot/bin:$PATH".
The installer did not sign me in
Run superbot signin. It opens your browser to sign in.
My caller key is refused
A 401 means the key is missing or malformed, and a 403 means it was revoked or does not allow that model. Mint a new key in Keys and authentication.
Related: Your AI clients
Remote SSH projects
A project on an SSH host keeps its files, terminal and agents on that box.
Click + and pick Connect to an SSH host, then choose a host or type user@host.
The chat shows a connection error
- SSH sign-in failed: enter the password, or add your key to ssh-agent or pick one for this host.
- Host key rejected: the box's host key differs from the one you accepted. Check the fingerprint, then retry.
- Box unreachable: the box did not answer. Check that it is on and reachable from your computer.
- Box platform unsupported: the box needs Linux with glibc 2.28 or newer, or macOS, on x64 or arm64. Alpine and other musl Linux do not work.
- Box has no internet: the box cannot download the Helper. Send from this computer (Send from this Mac on a Mac) copies it over.
- Port forwarding blocked: allow
AllowTcpForwardinginsshd_configon the box, then retry. - Login shell prints output: stop the shell profile or login banner from printing on connect, then retry.
- Engine missing on box: Reinstall puts the engine back.
- OpenSSH too old: update OpenSSH on your computer to 8.7 or newer, then retry.
Uninstall
superbot uninstall deletes superbot and everything it left on your machine: the Helper, the desktop app and its data, superbot's own entries in your AI clients, and your local accounts, chats and keys.
You sign in again after a reinstall. superbot uninstall --dry-run lists what would go and deletes nothing. A script with no terminal has to pass --yes.
To remove one client by hand, run claude mcp remove superbot for Claude Code, or delete the superbot entry from that client's config file. Nothing else was installed.
Related: Your AI clients
More ways to read this
This documentation in the formats other tools read.