API documentation

Control a fleet of Minecraft bots on Hypixel over HTTP. Machine-readable spec: /api/openapi

Authentication

Every /api/v1 request needs an API key, generated in the admin UI under API Keys. Pass it either way:

Authorization: Bearer fleet_sk_xxxxxxxxxxxxxxxx
X-API-Key: fleet_sk_xxxxxxxxxxxxxxxx

Missing or invalid keys return 401. Keys are stored hashed and shown in full only once, at creation.

How botCount works

Every command takes a botCount: how many connected bots should perform the action. Bots are selected from those currently online, in a stable order by name.

If you request more bots than are online, the command runs on every online bot — the maximum available — rather than failing. The response always reports what actually happened:

  • requested — the botCount you sent
  • available — bots online at that moment
  • dispatched — bots that actually ran the command
{
  "ok": true,
  "action": "warpout",
  "target": "Notch, Herobrine",
  "runId": "…",
  "requested": 10,
  "available": 4,
  "dispatched": 4,
  "bots": [
    { "id": "…", "name": "Bot_One",   "status": "accepted", "detail": "warping out Notch and Herobrine" },
    { "id": "…", "name": "Bot_Two",   "status": "accepted", "detail": "warping out Notch and Herobrine" },
    { "id": "…", "name": "Bot_Three", "status": "accepted", "detail": "warping out Notch and Herobrine" },
    { "id": "…", "name": "Bot_Four",  "status": "accepted", "detail": "warping out Notch and Herobrine" }
  ]
}

Endpoints

POST /api/v1/commands/warpout

Warp one or more players into the Cops & Crims lobby

Each selected bot invites everyone named in a single party invite (/party <a> <b> <c>). As each of them accepts, the bot /p warp-s them into its Cops & Crims lobby and /p kick-s them back out of the party, so the invite stays open for whoever has not answered yet. Once the last one is warped the bot leaves the party; anyone who has not joined within 30s is given up on.

Body

FieldTypeRequiredDescription
usernamestringyesOne or more in-game names. Separate several with commas or spaces ("Notch, Herobrine"), or send an array instead. Up to 10 per command.
usernamesarraynoArray form of `username`. Send either field, or both — they are merged and de-duplicated.
botCountintegeryesHow many bots should perform the action. Bots are leased exclusively while they work, so this draws on the accounts that are online and not already in use by someone else. If greater than the number available, every available bot is used (the max).

Example

{
  "username": "Notch, Herobrine",
  "botCount": 3
}
curl -X POST https://your-host/api/v1/commands/warpout \
  -H "Authorization: Bearer $FLEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"Notch, Herobrine","botCount":3}'

POST /api/v1/commands/cancelwarp

Cancel a pending/active warpout

Each selected bot cancels its active warpout and clears its warpout queue, leaving the party if it is in one.

Body

FieldTypeRequiredDescription
usernamestringnoOptional — recorded for the audit log. Cancel clears all warpouts on the selected bots regardless.
botCountintegeryesHow many bots should perform the action. Bots are leased exclusively while they work, so this draws on the accounts that are online and not already in use by someone else. If greater than the number available, every available bot is used (the max).

Example

{
  "username": "Notch",
  "botCount": 3
}
curl -X POST https://your-host/api/v1/commands/cancelwarp \
  -H "Authorization: Bearer $FLEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"Notch","botCount":3}'

POST /api/v1/commands/partyloop

Send party invites on repeat

The warpout invite, looped. Each selected bot sends /party <a> <b> <c>, holds the invite for `holdSeconds`, leaves the party, and invites again — either `cycles` times or until stopped with /api/v1/commands/cancelloop. A bot runs one loop at a time and will not start one while it has a warpout in flight.

Body

FieldTypeRequiredDescription
usernamestringyesOne or more in-game names. Separate several with commas or spaces ("Notch, Herobrine"), or send an array instead. Up to 10 per command.
usernamesarraynoArray form of `username`. Send either field, or both — they are merged and de-duplicated.
modestringno"until_stop" (default) keeps going until cancelloop; "count" runs `cycles` times and stops.
cyclesintegernoHow many invites to send. Required when mode is "count", ignored otherwise. 1–1000.
holdSecondsnumbernoHow long each invite is left standing before the bot leaves and re-invites. 1–300, default 3.
gapSecondsnumbernoExtra pause between leaving and the next invite. 0–60, default 0.
botCountintegeryesHow many bots should perform the action. Bots are leased exclusively while they work, so this draws on the accounts that are online and not already in use by someone else. If greater than the number available, every available bot is used (the max).

Example

{
  "username": "Notch",
  "mode": "count",
  "cycles": 20,
  "holdSeconds": 3,
  "botCount": 1
}
curl -X POST https://your-host/api/v1/commands/partyloop \
  -H "Authorization: Bearer $FLEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"Notch","mode":"count","cycles":20,"holdSeconds":3,"botCount":1}'

POST /api/v1/commands/cancelloop

Stop a running party loop

Each selected bot stops its party loop and leaves the party. Needed for loops started in "until_stop" mode.

Body

FieldTypeRequiredDescription
usernamestringnoOptional — recorded for the audit log. Cancel stops the loop on the selected bots regardless.
botCountintegeryesHow many bots should perform the action. Bots are leased exclusively while they work, so this draws on the accounts that are online and not already in use by someone else. If greater than the number available, every available bot is used (the max).

Example

{
  "username": "Notch",
  "botCount": 1
}
curl -X POST https://your-host/api/v1/commands/cancelloop \
  -H "Authorization: Bearer $FLEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"Notch","botCount":1}'

POST /api/v1/commands/consistentparty

Chase one player across accounts until one warps them

A relay, not a fan-out: the accounts take turns. The first bot invites the target over and over — hold, leave, invite again. If they accept, it warps them out and the whole command is done. If Hypixel refuses the invite (their invites are off, or the bot is on their /ignore list) that account is burned and the target is handed straight to the next bot, which picks the chase up. An account that simply gets no answer after `attemptsPerBot` invites hands on too, without being burned. The command ends when someone gets warped, when the target turns out to be offline, when every selected account has tried, or when you stop it with /api/v1/commands/cancelparty. `botCount` is how many accounts the relay may work through.

Body

FieldTypeRequiredDescription
usernamestringyesIn-game name of the player to chase. One player only, unlike warpout.
attemptsPerBotintegernoInvites one account sends before handing the target to the next. An outright refusal hands on immediately regardless. 1–1000, default 5.
holdSecondsnumbernoHow long each invite is left standing before the bot leaves and re-invites. 1–300, default 3.
gapSecondsnumbernoExtra pause between leaving and the next invite. 0–60, default 0.
botCountintegeryesHow many bots should perform the action. Bots are leased exclusively while they work, so this draws on the accounts that are online and not already in use by someone else. If greater than the number available, every available bot is used (the max).

Example

{
  "username": "Notch",
  "attemptsPerBot": 5,
  "holdSeconds": 3,
  "botCount": 10
}
curl -X POST https://your-host/api/v1/commands/consistentparty \
  -H "Authorization: Bearer $FLEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"Notch","attemptsPerBot":5,"holdSeconds":3,"botCount":10}'

POST /api/v1/commands/cancelparty

Stop a running consistent party

Stops the consistent parties running on your own bots and leaves the party. Someone else’s chase is never touched. This one ignores `botCount` for the relay itself — a relay belongs to no single account, and may have moved on to one the caller never selected — though the response still reports per selected bot.

Body

FieldTypeRequiredDescription
usernamestringnoOptional — recorded for the audit log. Every consistent party is stopped regardless.
botCountintegeryesHow many bots should perform the action. Bots are leased exclusively while they work, so this draws on the accounts that are online and not already in use by someone else. If greater than the number available, every available bot is used (the max).

Example

{
  "username": "Notch",
  "botCount": 10
}
curl -X POST https://your-host/api/v1/commands/cancelparty \
  -H "Authorization: Bearer $FLEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"Notch","botCount":10}'

POST /api/v1/commands/boop

Send /boop to a player

Each selected bot runs /boop <username>.

Body

FieldTypeRequiredDescription
usernamestringyesIn-game name of the player to boop.
botCountintegeryesHow many bots should perform the action. Bots are leased exclusively while they work, so this draws on the accounts that are online and not already in use by someone else. If greater than the number available, every available bot is used (the max).

Example

{
  "username": "Notch",
  "botCount": 5
}
curl -X POST https://your-host/api/v1/commands/boop \
  -H "Authorization: Bearer $FLEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"Notch","botCount":5}'

POST /api/v1/commands/msg

Send a private message to a player

Each selected bot runs /msg <player> <message> and reports delivery in its activity log.

Body

FieldTypeRequiredDescription
playerstringyesIn-game name of the message recipient.
messagestringyesThe message text to send.
botCountintegeryesHow many bots should perform the action. Bots are leased exclusively while they work, so this draws on the accounts that are online and not already in use by someone else. If greater than the number available, every available bot is used (the max).

Example

{
  "player": "Notch",
  "message": "gg wp",
  "botCount": 1
}
curl -X POST https://your-host/api/v1/commands/msg \
  -H "Authorization: Bearer $FLEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"player":"Notch","message":"gg wp","botCount":1}'

GET /api/v1/bots

List the fleet and each bot's status

Returns every account, whether it is online and ready to receive commands, its assigned proxy, and any in-flight warpout or party loop. Use it to size a botCount before dispatching.

curl https://your-host/api/v1/bots \
  -H "Authorization: Bearer $FLEET_API_KEY"

Errors

StatusCodeMeaning
400bad_jsonBody was not valid JSON.
401unauthorizedMissing, unknown, or revoked API key.
422validation_errorA field is missing or malformed; the message names the field.

Errors are shaped { "ok": false, "error": "…", "code": "…" }. A command that reaches zero bots is not an error — it returns 200 with dispatched: 0.