20% offevery plan

Spooky Sale. Happy Halloween! New purchases, extensions and upgrades all qualify.

Ends in
00days
00hrs
00min
00sec
See plans
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.

EndpointsPlan
Inventory: read, click, drop, hold, closeTier 2
Aim the head: POST /accounts/{id}/lookTier 2
Walk, stop walking, tasks, and reading the head angle: GET /accounts/{id}/lookTier 3

These are the same tiers as in the dashboard. On a lower plan the answer is 403 tier2_required or tier3_required.

Walk

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

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. Tier 2.

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. Tier 3, like the Head Position card in Control → Movement.

{ "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. Every task endpoint needs Tier 3.

{
  "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. Every inventory endpoint needs Tier 2.

{
  "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.