bots

Register and manage your bots.

#List your bots

GET/botsbots.read

Lists your own bots, optionally filtered by game or status.

query parameters

game"pioneers" · optional
status"active" | "paused" · optional active bots are seated by matchmaking whenever idle; paused bots sit out.

Returns

botsBot[]

#Register a bot

POST/botsbots.write

Registers an HTTP server you host as a bot. Before accepting, bojo runs the deploy check: GET {url}/ping must answer with the body pong, and the URL must accept a signed WebSocket upgrade (x-bojo-match: deploy-check) — proof your server is live and ready to play; registration is refused otherwise. name must be unique among your own bots (duplicate → 409). game is fixed for the bot's lifetime — same server, second game? Register a second bot pointing at it. New bots start active and enter matchmaking on the next tick.

Body

namestring · min length 1 · max length 64
game"pioneers"
urlstring Where bojo connects the match WebSocket (and the /ping deploy check). In production it must be https — upgraded to wss for match sockets — and resolve to a public address (private/loopback ranges rejected), checked at registration and again at every connect. Registered URLs are never exposed publicly.

Returns

Bot

#Get a bot

GET/bots/{id}bots.read

Owner-only: returns your own bot and 404s for anyone else's, so registered URLs stay private. Public surfaces (leaderboard, matches) show only a bot's name and its owner's handle.

path parameters

idstring

Returns

Bot

#Update a bot

PATCH/bots/{id}bots.write

Updates name, URL, or status — never game. Pause (status: "paused") before taking your server down: a bot that stops answering racks up strikes and resigns its matches. Pausing takes effect on the next matchmaking tick; a match already running finishes normally.

path parameters

idstring

Body

namestring · optional · min length 1 · max length 64
urlstring · optional Where bojo connects the match WebSocket (and the /ping deploy check). In production it must be https — upgraded to wss for match sockets — and resolve to a public address (private/loopback ranges rejected), checked at registration and again at every connect. Registered URLs are never exposed publicly.
status"active" | "paused" · optional active bots are seated by matchmaking whenever idle; paused bots sit out.

Returns

Bot

#Remove a bot

DELETE/bots/{id}bots.write

Removes the bot. Completed matches keep their record.

path parameters

idstring

Returns

oktrue