Console Client
Documentation
Dashboard
API

API reference: movement, tasks, and inventory

Walk an account, aim its head, run pathing and mining tasks, and read or click its inventory and open menus.

Before you start

Every endpoint here works on one online account: /accounts/{id}/.... If the account is not running on a backend the answer is 404 not_assigned, so connect it first. These are the same controls as Control → Movement and Control → Inventory, described in Move accounts and run tasks and Use Chat, Control, and Point of View.

Walk

POST /accounts/{id}/move walks the account in a straight line relative to where it is facing.

FieldTypeDetail
directionstringforward, backward, left, or right.
blocksnumberDistance, 1 to 1000. Use this or seconds.
secondsnumberDuration, 1 to 300. Wins over blocks when both are sent.
curl -X POST https://dashboard.consoleclient.com/api/v1/accounts/[email protected]/move \
  -H "Authorization: Bearer $CC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"direction": "forward", "blocks": 5}'

POST /accounts/{id}/stop-moving stops the walk early. No body.

Both answer { "ok": true }. A missing or invalid field answers 400 invalid_request.

Aim the head

POST /accounts/{id}/look turns the head to an exact angle.

FieldTypeDetail
yawnumber-180 to 180, the same value the F3 screen shows: 0 is south, 90 is west, 180 or -180 is north, -90 is east.
pitchnumber-90 to 90. -90 looks straight up, 0 at the horizon, 90 straight down.
{ "ok": true, "queued": 1 }

GET /accounts/{id}/look reads the current angle from the account.

{ "connected": true, "yaw": -90, "pitch": 12.5 }

Reading waits for the account to answer. If it does not answer within four seconds the result is 504 command_timeout.

Pathing and mining tasks

POST /accounts/{id}/task starts a task that keeps running until it finishes or you stop it. One task runs per account, and a task ends when the account disconnects.

{
  "type": "goto",
  "params": { "x": 120, "y": 64, "z": -300, "sprint": true, "allowBreak": false },
  "humanize": true
}
TypeParams
gotox, y, z required. sprint (default true), allowBreak (default false, lets it break blocks in the way).
followusername required. distance 1 to 20 blocks, default 3.
wanderradius 4 to 96, default 20. blocks 1 to 64 waypoints, default 8.
circleradius 2 to 40, default 5. direction cw or ccw. Optional centerX, centerY, centerZ; without them it circles where it stands.
axisaxis north, south, east, or west. blocks 1 to 2000, default 16.
mineblockName such as iron_ore, or mineAll true. count 1 to 2000, default 16. radius 8 to 96, default 32. noMovement true mines only what is in reach.
stayduration 5 to 3600 seconds, default 60.

humanize defaults to true and makes movement look less mechanical. An unknown type or a missing required param answers 400 invalid_request.

GET /accounts/{id}/task reports the running task.

{
  "active": true,
  "type": "goto",
  "desc": "goto",
  "startedAt": 1790000470000,
  "elapsedMs": 8200,
  "params": { "x": 120, "y": 64, "z": -300, "sprint": true, "allowBreak": false }
}

With no task running the answer is { "active": false }.

POST /accounts/{id}/task/stop stops the task. No body.

Read the inventory

GET /accounts/{id}/inventory reads the inventory live from the account, plus any chest, shop, or menu it has open.

{
  "inventory": {
    "accountId": "[email protected]",
    "username": "Steve",
    "edition": "java",
    "selectedHotbarSlot": 0,
    "player": {
      "id": 0,
      "type": "minecraft:inventory",
      "title": "",
      "slotCount": 46,
      "inventoryStart": 9,
      "inventoryEnd": 45,
      "items": [
        {
          "slot": 36,
          "type": 841,
          "name": "diamond_pickaxe",
          "displayName": "Diamond Pickaxe",
          "count": 1,
          "metadata": 0,
          "stackSize": 1,
          "customName": "",
          "lore": [],
          "enchantments": [{ "id": "efficiency", "level": 5 }]
        }
      ],
      "cursor": null
    },
    "container": null,
    "dialog": null
  }
}
FieldMeaning
playerThe account’s own inventory. Only filled slots are listed in items. cursor is the item held on the mouse cursor, if any.
containerThe open chest, shop, or server menu in the same shape, with its title, or null when nothing is open. While a container is open, its slots come first and the player’s slots start at inventoryStart.
dialogAn open server dialog (Minecraft 1.21.6 and newer), or null.
selectedHotbarSlotThe held hotbar position, 0 to 8.

Errors: 409 not_connected when the account is offline, 504 timeout when it did not answer in time, 404 not_assigned or account_missing when it is not running.

Click, drop, hold, and close

Each of these answers with the fresh inventory in the same shape as above, so you can read the result of your click straight from the response.

EndpointBodyWhat it does
POST /accounts/{id}/inventory/clickslot, mouseButton, mode, optional playerOnlyClicks a slot in the open container, or in the player inventory when nothing is open. playerOnly true always targets the player inventory.
POST /accounts/{id}/inventory/dropslot, optional dropAllDrops one item from the slot, or the whole stack with dropAll true.
POST /accounts/{id}/inventory/holdslotSelects a hotbar slot: 0 to 8, or the inventory numbering 36 to 44.
POST /accounts/{id}/inventory/closenoneCloses the open container or menu.
Click fieldValues
slotThe slot number from items, 0 to 500.
mouseButton0 left, 1 right.
modeMinecraft’s click mode: 0 normal click, 1 shift click, 2 number key swap (the key goes in mouseButton), 3 middle click, 4 drop. For a shop or menu button use 0.
curl -X POST https://dashboard.consoleclient.com/api/v1/accounts/[email protected]/inventory/click \
  -H "Authorization: Bearer $CC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slot": 13, "mouseButton": 0, "mode": 0}'
Need a hand?

Check the troubleshooting guide or return to all guides.