Control a fleet of Minecraft bots on Hypixel over HTTP. Machine-readable spec: /api/openapi
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.
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 sentavailable — bots online at that momentdispatched — 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" }
]
}POST /api/v1/commands/warpoutWarp 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.
| Field | Type | Required | Description |
|---|---|---|---|
username | string | yes | One or more in-game names. Separate several with commas or spaces ("Notch, Herobrine"), or send an array instead. Up to 10 per command. |
usernames | array | no | Array form of `username`. Send either field, or both — they are merged and de-duplicated. |
botCount | integer | yes | How 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). |
{
"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/cancelwarpCancel a pending/active warpout
Each selected bot cancels its active warpout and clears its warpout queue, leaving the party if it is in one.
| Field | Type | Required | Description |
|---|---|---|---|
username | string | no | Optional — recorded for the audit log. Cancel clears all warpouts on the selected bots regardless. |
botCount | integer | yes | How 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). |
{
"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/partyloopSend 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.
| Field | Type | Required | Description |
|---|---|---|---|
username | string | yes | One or more in-game names. Separate several with commas or spaces ("Notch, Herobrine"), or send an array instead. Up to 10 per command. |
usernames | array | no | Array form of `username`. Send either field, or both — they are merged and de-duplicated. |
mode | string | no | "until_stop" (default) keeps going until cancelloop; "count" runs `cycles` times and stops. |
cycles | integer | no | How many invites to send. Required when mode is "count", ignored otherwise. 1–1000. |
holdSeconds | number | no | How long each invite is left standing before the bot leaves and re-invites. 1–300, default 3. |
gapSeconds | number | no | Extra pause between leaving and the next invite. 0–60, default 0. |
botCount | integer | yes | How 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). |
{
"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/cancelloopStop a running party loop
Each selected bot stops its party loop and leaves the party. Needed for loops started in "until_stop" mode.
| Field | Type | Required | Description |
|---|---|---|---|
username | string | no | Optional — recorded for the audit log. Cancel stops the loop on the selected bots regardless. |
botCount | integer | yes | How 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). |
{
"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/consistentpartyChase 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.
| Field | Type | Required | Description |
|---|---|---|---|
username | string | yes | In-game name of the player to chase. One player only, unlike warpout. |
attemptsPerBot | integer | no | Invites one account sends before handing the target to the next. An outright refusal hands on immediately regardless. 1–1000, default 5. |
holdSeconds | number | no | How long each invite is left standing before the bot leaves and re-invites. 1–300, default 3. |
gapSeconds | number | no | Extra pause between leaving and the next invite. 0–60, default 0. |
botCount | integer | yes | How 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). |
{
"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/cancelpartyStop 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.
| Field | Type | Required | Description |
|---|---|---|---|
username | string | no | Optional — recorded for the audit log. Every consistent party is stopped regardless. |
botCount | integer | yes | How 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). |
{
"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/boopSend /boop to a player
Each selected bot runs /boop <username>.
| Field | Type | Required | Description |
|---|---|---|---|
username | string | yes | In-game name of the player to boop. |
botCount | integer | yes | How 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). |
{
"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/msgSend a private message to a player
Each selected bot runs /msg <player> <message> and reports delivery in its activity log.
| Field | Type | Required | Description |
|---|---|---|---|
player | string | yes | In-game name of the message recipient. |
message | string | yes | The message text to send. |
botCount | integer | yes | How 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). |
{
"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/botsList 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"
| Status | Code | Meaning |
|---|---|---|
| 400 | bad_json | Body was not valid JSON. |
| 401 | unauthorized | Missing, unknown, or revoked API key. |
| 422 | validation_error | A 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.