Get started with the API
Control your accounts from your own scripts, bots, and tools: what the API can do, how requests work, and your first call.
What the API is
The Console Client API lets your own code do what you would otherwise click in the dashboard: see which accounts are online, connect and disconnect them, send chat and commands, read chat, run macros, move accounts, work with inventories, and change your connection settings. It is a plain HTTPS and JSON API, so it works from any language that can make a web request.
The API is included with every paid plan, from Tier 1 up, and is currently in beta. You can create up to five API keys in Settings → API, and every request carries one of them. Your plan decides which areas your keys can reach and how fast you can call: see What each plan includes below.
| Area | What you can do | Plan | Reference |
|---|---|---|---|
| Accounts | List accounts with live status, connect, disconnect, Connect All, Stop All. | Tier 1 | Accounts and connections |
| Chat | Send messages and commands, read the live chat and console feeds. | Tier 1 | Chat and console |
| Macros | List saved macros, run one on an account, stop a run, see what is running. | Tier 1 | Macros |
| Settings | Read and change the server address, version, join command, and reconnect settings. | Tier 1 | Settings |
| Inventory and head aim | Read and click inventories and menus, turn the head to an angle. | Tier 2 | Movement, tasks, and inventory |
| Movement and tasks | Walk, run pathing and mining tasks, read the head angle. | Tier 3 | Movement, tasks, and inventory |
What each plan includes
The API follows the same tier rules as the dashboard: an area that needs Tier 2 or Tier 3 in the dashboard needs the same tier through the API. The rate limits belong to your account and are shared by all your keys, so five keys never give you five times the limit.
| What you get | Tier 1 | Tier 2 | Tier 3 |
|---|---|---|---|
| API keys | Up to 5 | Up to 5 | Up to 5 |
| Requests per minute | 30 | 60 | 120 |
| Requests in flight at once | 2 | 4 | 8 |
| Accounts and connections, chat and console, macros, settings | Yes | Yes | Yes |
Inventory and head aim (POST /accounts/{id}/look) | No | Yes | Yes |
Movement, tasks, and reading the head angle (GET /accounts/{id}/look) | No | No | Yes |
A call to an area your plan does not include answers 403 with tier2_required or tier3_required, and a key whose plan has lapsed answers tier1_required on every call. Upgrades, downgrades and renewals apply from the very next request. GET /me tells your code its tier, limits and areas at any time.
Your first request
Create your key
Open Settings → API, type a name for the key, such as the script or server that will use it, and click Create key. Click Copy and store the key somewhere safe straight away. It is shown only once. API keys and the IP whitelist covers this page in full.
Turn on the IP whitelist
Recommended. Add the public IP of the machine that will send requests, then switch the whitelist on. A stolen key is useless from any other IP.
Check the key works
Call
GET /mewith the key in theAuthorizationheader. A 200 response with your plan means everything is set up.List your accounts
Call
GET /accounts. Each account has anidthat every other account endpoint uses.
curl https://dashboard.consoleclient.com/api/v1/me \
-H "Authorization: Bearer cc-api-YOUR_KEY_HERE"{
"discordId": "123456789012345678",
"plan": { "tier": 2, "maxAccounts": 10, "expiresAt": 1792540800000 },
"rateLimit": { "limit": 60, "windowSeconds": 60, "maxConcurrent": 4 },
"ipWhitelist": { "enabled": true, "count": 1 },
"key": { "name": "Sell bot", "hint": "N5VC", "createdAt": 1790000000000 },
"access": {
"accounts": true, "chat": true, "macros": true, "settings": true,
"inventory": true, "look": true, "movement": false
}
}Base URL and versions
Every endpoint in these guides is relative to this base URL:
https://dashboard.consoleclient.com/api/v1The API is served over HTTPS only. The v1 in the path is the version. New optional fields and new endpoints can appear at any time, so write your code to ignore fields it does not know.
How requests work
| Rule | Detail |
|---|---|
| Authentication | Send Authorization: Bearer cc-api-... on every request. There are no cookies and no sessions. |
| Request bodies | JSON with Content-Type: application/json. A POST that needs no fields can be sent with no body at all. |
| Responses | Always JSON. A successful call answers with HTTP 200. Anything else is an error with an error code, listed in Errors and rate limits. |
| Times | Timestamps are Unix time in milliseconds. 0 means never or not set. Durations say their unit in the field name, such as delayMs. |
| Paths | Lower case, as written in these guides. |
| Rate limit | 30, 60 or 120 requests per minute and 2, 4 or 8 requests in flight at once on Tier 1, 2 or 3, shared by all your keys. Every response carries X-RateLimit-* headers. |
Account IDs
Every account has an id, returned by GET /accounts. For a Microsoft account it is the email you added it with, for a cookie or token account it is the generated address shown in the dashboard, and for an offline account it is the username. The ID never changes, even when the player name does, so store the ID and not the username.
The ID goes straight into the URL. An @ is fine as it is. If an ID contains a space or another unusual character, URL-encode it the way your HTTP library normally does.
POST https://dashboard.consoleclient.com/api/v1/accounts/[email protected]/connectActions are queued, not instant
Your accounts run on backend servers around the world, and the API hands each action to the server that runs the account. A successful response to connect, disconnect, chat, move, or a macro run means the action was accepted and queued, which normally takes well under a second to reach the account. It does not mean the account is already online or that the server accepted the chat message.
To confirm an outcome, read it back: poll GET /accounts/{id} until status is connected, or watch GET /chat for the server’s reply to a command. Endpoints that read live data from an account, such as the inventory, wait for the account to answer and return the real result.
Keep the key on a server
Call the API from a server, a bot, or a script you run yourself. Never put the key in a web page, a browser extension, a mobile app, or anything else you hand to other people: whoever can read the code can read the key. The API does not send CORS headers, so browsers refuse to call it from a page by design.
Where to go next
| Guide | Read it when |
|---|---|
| API keys and the IP whitelist | You are creating keys, locking them to your IPs, or revoking a leaked key. |
| Accounts and connections | You want status, connect, and disconnect. |
| Chat and console | You want to send commands or react to chat. |
| Macros | You want to trigger the macros you built in the dashboard. |
| Movement, tasks, and inventory | You want to move an account or click through a menu. |
| Settings | You want to switch servers or versions from code. |
| Errors and rate limits | A call failed, or you are planning how often to poll. |
| Code examples | You want working Python, Node.js, and curl to start from. |
Check the troubleshooting guide or return to all guides.