Client → server
Connect to /ws, then send a subscribe or unsubscribe JSON text frame.
Subscribe
{
"action": "subscribe",
"channels": [
"player:576460752303423488:state",
"craft:576460752955699184:craft_progress"
]
}Acknowledgement
{
"action": "subscribed",
"channels": [
"craft:576460752955699184:craft_progress",
"player:576460752303423488:state"
]
}Unsubscribe
{
"action": "unsubscribe",
"channels": [
"craft:576460752955699184:craft_progress"
]
}Error envelope
{
"event": "error",
"error": {
"code": "invalid_channel",
"message": "unknown channel event: bad_event"
}
}Channels
player:<playerId>:stateplayer:<playerId>:statsplayer:<playerId>:xpplayer:<playerId>:inventory_changeplayer:<playerId>:passive_craft_createdplayer:<playerId>:passive_craft_finishedplayer:<playerId>:craft_createdplayer:<playerId>:craft_finishedplayer:<playerId>:craft_startplayer:<playerId>:craft_endcraft:<craftId>:craft_progresscraft:<craftId>:craft_finishedServer → client events
craft_created
A progressive craft first appeared at a claimed building.
Channelplayer:<playerId>:craft_created
Required
Payload
{
"event": "craft_created",
"startedAt": "2026-07-30T18:00:00Z",
"regionId": 8,
"player": {
"id": "576460752303423488",
"name": "Ada"
},
"craft": {
"id": "576460752955699184",
"craftCount": 90,
"item": {
"name": "Sturdy Cloth",
"quantity": 1,
"recipe": {
"id": 409001,
"name": "Weave Sturdy Cloth"
}
},
"progress": {
"completed": 0,
"required": 13676
},
"contributors": [],
"building": {
"id": "576460752303423500",
"name": "Fine Tailoring Station",
"claim": {
"id": "576460752303423510",
"name": "Workshop"
}
}
}
}Payload fields
| Field | Type | Required | Description |
|---|---|---|---|
event | "craft_created" | Yes | Exact event discriminator. |
startedAt | string | Yes | UTC ISO 8601 timestamp for the start of the craft. |
regionId | integer | Yes | Numeric BitCraft region id. |
player | PlayerIdentity | Yes | Player identity with a numeric string id and display name. |
craft | ProgressiveCraftWithBuilding | Yes | Progressive craft with its building and owning claim. |
