CraftersMC Reference

CraftersMC REST API & Calendar Engine

Developer documentation for the CraftersMC Public HTTP REST API (v1-5eb3568) and the SkyBlock Event Timing Engine (@craftersmc/calendarjs). All endpoints strictly require authentication via the X-API-Key request header.

Production Base URL
https://api.craftersmc.net
Authentication Header
X-API-Key: <key> (Mandatory)
Payload Format
JSON / Base64 GZIP NBT
Active Endpoints
11 Endpoints / 5 Tags

vpn_key Authentication & API Key Enforcement

How the mandatory X-API-Key request header and SkyBlock player privacy scopes work.

Mandatory X-API-Key Header Across ALL Endpoints

Every endpoint on the CraftersMC Public REST API strictly requires the X-API-Key HTTP request header. Any request sent without a valid API key will immediately be rejected by the server with HTTP 401 Unauthorized or HTTP 403 Forbidden.

Required Authentication Header
X-API-Key: YOUR_API_KEY

Player API Privacy Scopes

When querying detailed player profiles and SkyBlock inventories (e.g. GET /v1/skyblock/profile/{profileId}), data availability is further restricted by individual in-game player settings (Banking API, Inventory API, Skills API, Collections API):

  • If a player disables an API permission, the corresponding nested fields will be returned as null or omitted.
  • In strictly protected endpoints, the server responds with 403 Forbidden and {"success": false, "error": "Missing required API scope"}.
lightbulb
Production Best Practice: Always store your X-API-Key in environment variables (e.g. process.env.CMC_API_KEY or os.getenv("CMC_API_KEY")). Never expose secret API keys in client-side bundles or public GitHub repositories.

speed Rate Limits & Error Contracts

Standard response envelopes, rate limiting rules, and status codes implemented across all routes.

Unified Error Response Envelope (ApiErrorReply)

All non-200 responses return a consistent JSON error schema:

ApiErrorReply Example
{
  "success": false,
  "error": "Rate limit exceeded",
  "message": "You are making too many requests. Please slow down and respect the rate limit."
}
Status Code HTTP Reason Description & Mitigation
200 OK Success The request completed successfully and returned the requested payload envelope.
400 Bad Request Invalid Parameter Malformed identifier, invalid UUID format, or invalid pagination page index.
401 / 403 Unauthorized / Forbidden Missing, invalid, or expired X-API-Key, or target player turned off API scope in-game.
404 Not Found Resource Not Found The requested player, profile ID, auction UUID, or bazaar item does not exist.
429 Rate Limit Too Many Requests Request threshold exceeded. Implement exponential backoff or caching.
503 Unavailable Service Unavailable Data list has not finished warming up or database sync is in progress.

event SkyBlock Calendar Engine & Event Timings (CraftersMC/calendarjs)

Mathematical formulas, time conversions, and deterministic Java Random RNG algorithms used to predict server events.

SkyBlock Time Multiplier & Epoch Architecture

In CraftersMC SkyBlock, time runs 72 times faster than real life. A full 24-hour SkyBlock day passes in exactly 20 real-world minutes (1,200 seconds). A SkyBlock year consists of 4 seasons of 93 days each, totaling 372 SkyBlock days (124 real hours = 5 days and 4 hours).

ConstantValueDefinition / Meaning
START_OF_TIMES1648800000Unix epoch in seconds corresponding to Year 1, Spring 1, 00:00:00 (April 1, 2022 08:00:00 UTC).
TIME_MULTIPLIER721 real second = 72 SkyBlock seconds (20 real minutes per SkyBlock day).
SEASON_LENGTH93 daysDays per season (Early, Standard, and Late sub-seasons of 31 days each).
DAYS_PER_YEAR372 daysTotal SkyBlock days per SkyBlock year (4 seasons × 93 days).

1. Real-World Timestamp to SkyBlock Date Algorithm

To convert any real-world timestamp (or Date.now()) into SkyBlock Year, Season, Day, Hour, and Minute:

Timestamp to SkyBlock Date Algorithm
// Convert real-world Unix timestamp to SkyBlock Year, Season, Day & Time
function unixToSkyBlockTime(unixTimestampSeconds = Math.floor(Date.now() / 1000)) {
  const START_OF_TIMES = 1648800000;
  const TIME_MULTIPLIER = 72;
  const SECONDS_PER_SB_DAY = 86400 / TIME_MULTIPLIER; // 1200 seconds (20 mins)

  const elapsedRealSeconds = unixTimestampSeconds - START_OF_TIMES;
  const totalDays = Math.floor(elapsedRealSeconds / SECONDS_PER_SB_DAY) + 1;
  const totalSeasons = Math.floor((totalDays - 1) / 93);

  const year = Math.floor(totalSeasons / 4) + 1;
  const seasonIndex = totalSeasons % 4; // 0: Spring, 1: Summer, 2: Autumn, 3: Winter
  const dayOfSeason = ((totalDays - 1) % 93) + 1;

  const secondsIntoDay = elapsedRealSeconds % SECONDS_PER_SB_DAY;
  const hour = Math.floor((secondsIntoDay / SECONDS_PER_SB_DAY) * 24);
  const minute = Math.floor(((secondsIntoDay / SECONDS_PER_SB_DAY) * 1440) % 60);

  const SEASONS = ["Spring", "Summer", "Autumn", "Winter"];
  return {
    totalDays,
    year,
    season: SEASONS[seasonIndex],
    dayOfSeason,
    hour,
    minute,
    formattedTime: `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`
  };
}

2. How to Calculate the Travelling Zoo

The Travelling Zoo visits the hub twice every SkyBlock year:

  • Early Summer: Summer Days 1, 2, and 3 (lasts 1 real hour = 3 SkyBlock days).
  • Early Winter: Winter Days 1, 2, and 3 (lasts 1 real hour = 3 SkyBlock days).

The calculation follows a 4-step deterministic pipeline:

  1. Derive the Seed: Because the zoo happens every 2 seasons, the seed is Math.floor(seasonsSinceEpoch / 2).
  2. Determine Legendary Pet: The 5 pets rotate sequentially: ['elephant', 'giraffe', 'tiger', 'lion', 'monkey']. The legendary index is seed % 5.
  3. Roll Remaining 2 Pets: An instance of JavaRandom(seed) picks 2 distinct non-legendary pets using rng.nextInt(5).
  4. Assign Rarities: The legendary pet is locked to LEGENDARY. The other 2 pets roll a random rarity from ['COMMON', 'UNCOMMON', 'RARE', 'EPIC'] using rarities[rng.nextInt(4)].
Travelling Zoo Calculator Implementation
function getTravellingZooStock(totalDays) {
  const PET_TYPES = ['elephant', 'giraffe', 'tiger', 'lion', 'monkey'];
  const RARITIES = ['COMMON', 'UNCOMMON', 'RARE', 'EPIC'];

  const daysSinceEpoch = totalDays - 1;
  const seasonsSinceEpoch = Math.floor(daysSinceEpoch / 93);
  const seed = Math.floor(seasonsSinceEpoch / 2);

  // 1. Guaranteed Legendary Pet in Fixed Rotation
  const legendaryIndex = seed % PET_TYPES.length;
  const picked = [legendaryIndex];
  const rng = new JavaRandom(seed);

  // 2. Roll 2 additional distinct pets
  while (picked.length < 3) {
    const idx = rng.nextInt(PET_TYPES.length);
    if (!picked.includes(idx)) picked.push(idx);
  }

  // 3. Assign rarities
  const pets = picked.map((idx) => {
    const name = PET_TYPES[idx];
    const rarity = (idx === legendaryIndex) ? 'LEGENDARY' : RARITIES[rng.nextInt(RARITIES.length)];
    return { name, rarity };
  });

  return {
    seed,
    legendaryPet: pets[0],
    allPets: pets
  };
}

3. How to Calculate Ethan's Farming Contest Crops

Ethan's Farming Contests occur every 3 SkyBlock days (daysSinceEpoch % 3 === 0), which is exactly every 60 real minutes (since 1 SkyBlock day = 20 real minutes).

  1. Calculate Event ID: eventId = Math.floor(daysSinceEpoch / 3).
  2. Generate 48-bit Seed with Golden Ratio: The event ID is bitwise XORed with the 64-bit Golden Ratio integer 0x9E3779B97F4A7C15n and masked to 48 bits.
  3. Fisher-Yates Shuffle over 10 Crops: The 10 available crops (WHEAT, SUGAR_CANE, CARROT, POTATO, MELON, PUMPKIN, COCOA_BEANS, CACTUS, MUSHROOM, BEETROOT) are shuffled deterministically and the top 3 are selected.
Ethan's Farming Contest Crops Calculator
function getFarmingContestCrops(eventId) {
  const CROPS = ['WHEAT', 'SUGAR_CANE', 'CARROT', 'POTATO', 'MELON', 'PUMPKIN', 'COCOA_BEANS', 'CACTUS', 'MUSHROOM', 'BEETROOT'];
  const GOLDEN = 0x9E3779B97F4A7C15n;
  const seed64 = (BigInt(eventId) ^ GOLDEN) & ((1n << 48n) - 1n);
  const rng = new JavaRandom(Number(seed64));

  const list = CROPS.slice();
  for (let i = list.length - 1; i > 0; i--) {
    const j = rng.nextInt(i + 1);
    [list[i], list[j]] = [list[j], list[i]];
  }
  return list.slice(0, 3); // Active 3 crops for this contest
}

4. Deterministic Java 48-bit Linear Congruential Generator (LCG)

Because Minecraft servers run on Java, random outcomes rely on java.util.Random. To match server-side logic in web apps or bots without backend requests, calendarjs replicates Java's LCG:

Java 48-bit LCG Random Class
// Java Linear Congruential Generator (LCG) Random Implementation
class JavaRandom {
  constructor(seedVal) {
    this.MUL = 0x5DEECE66Dn;
    this.ADD = 0xBn;
    this.MASK48 = (1n << 48n) - 1n;
    this.seed = (BigInt(seedVal) ^ this.MUL) & this.MASK48;
  }
  next(bits) {
    this.seed = (this.seed * this.MUL + this.ADD) & this.MASK48;
    return Number(this.seed >> (48n - BigInt(bits)));
  }
  nextInt(bound) {
    if ((bound & (bound - 1)) === 0) {
      return Math.floor(bound * (this.next(31) / 2147483648));
    }
    let bits, val;
    do {
      bits = this.next(31);
      val = bits % bound;
    } while (bits - val + (bound - 1) < 0);
    return val;
  }
}

5. SkyBlock Server Events Schedule Reference

Event Name SkyBlock Calendar Date Real-World Recurrence & Duration Mechanics & Calculation
Travelling Zoo Summer 1–3 & Winter 1–3 Every ~31 real hours (lasts 1 real hour) Seed: Math.floor(seasonsSinceEpoch / 2). Fixed legendary cycle + 2 random pets.
Ethan's Farming Contest Every 3rd SkyBlock Day Every 1 real hour (lasts 20 real minutes) Seed: eventId ^ 0x9E3779B97F4A7C15n. Shuffles 10 crops, picks top 3.
Spooky Festival Autumn 60, 61, 62 Every 124 real hours (~5.16 days), lasts 1 hr Triggered when season === 2 && dayOfSeason >= 60 && dayOfSeason <= 62.
New Year Celebration Winter 91, 92, 93 Every 124 real hours (~5.16 days), lasts 1 hr New Year Cake Bag item dispenser. Triggered when season === 3 && dayOfSeason >= 91.
Season of the Pig Spring 1–93 (every 4th SB year) Every ~20.6 real days (lasts 31 real hours) Active when season === 0 && (year - 1) % 4 === 0.

6. Real-Time UI Engine & Lifecycle (SkyCalendar Implementation)

The live interactive SkyCalendar UI runs on a decoupled client-side architecture consisting of a pure mathematical engine and a 2-tier timer loop:

  1. 31-Day Pagination Sheets (renderGrid): The calendar displays 31 days per page (representing Early, Mid, or Late season sheets). It pre-caches the current and next page in a memory map (pagesDataCache) so page flipping is instantaneous with zero re-calculation overhead.
  2. 1-Second Event Countdown Loop: Maintains an array of target timestamps for all upcoming server events. Every 1,000ms, it computes msLeft = event.targetTime - Date.now() and dynamically formats countdown labels (0d 0h 0m 0s).
  3. 20-Minute Day Advance Detector: Every second, the loop checks if todaySkyblock !== newSkyblockDay. When the 20-minute mark hits and the SkyBlock day advances, the engine automatically updates the date banner (e.g. Today: Year X, Summer, Day Y), flips pagination to the active page if necessary, and re-seeds upcoming events.
  4. Interactive Day Modal & Deep Inspection: Clicking any day on the 31-day grid opens a detailed inspection modal that displays the exact countdown timer to that day, all active server events, specific Travelling Zoo pets, and Ethan's Farming Contest crops for that date.
SkyCalendar Real-Time Event Loop Boilerplate
// SkyCalendar Real-Time Ticker & Day Transition Engine
class SkyCalendarController {
  constructor() {
    this.currentDay = 0;
    this.upcomingEvents = [];
  }

  start() {
    this.refreshTime();

    // 1. Ticker: Update event countdowns every second
    setInterval(() => {
      this.upcomingEvents.forEach((ev) => {
        const msLeft = ev.targetTime - Date.now();
        ev.countdownText = this.formatCountdown(msLeft);
      });
    }, 1000);

    // 2. Day Advancer: Check for 20-minute SkyBlock day rollover
    setInterval(() => {
      const timeData = unixToSkyBlockTime();
      if (this.currentDay !== timeData.totalDays) {
        this.currentDay = timeData.totalDays;
        console.log(`SkyBlock Day Rollover: Year ${timeData.year}, ${timeData.season}, Day ${timeData.dayOfSeason}`);
        this.refreshEvents();
      }
    }, 1000);
  }

  formatCountdown(ms) {
    if (ms <= 0) return "Active Now";
    const s = Math.floor(ms / 1000), m = Math.floor(s / 60), h = Math.floor(m / 60), d = Math.floor(h / 24);
    return `${d}d ${h % 24}h ${m % 60}m ${s % 60}s`;
  }
}

terminal NBT & Binary Data Decoding Guide

Complete guide for decoding Base64 GZIP Minecraft Named Binary Tag (NBT) blobs across Node.js, Python, Java, and Go.

Understanding CraftersMC NBT Data Storage

In CraftersMC SkyBlock, all items and storage containers are stored as Base64-encoded, GZIP-compressed Named Binary Tag (NBT) compound byte streams.

A typical encoded NBT string begins with the Base64 GZIP magic prefix H4sI.... To extract item names, lore descriptions, custom attributes, enchantments, and stats, your application must:

  1. Decode Base64 into a raw binary byte buffer.
  2. Decompress GZIP into an uncompressed NBT byte stream.
  3. Parse NBT Compound Tag into a structured object/dictionary.
  4. Extract ExtraAttributes (e.g. enchantments, id, rarity_upgrades, slayer_kills, originTag).

All 15 CraftersMC NBT Storage Containers

The API exposes 15 distinct Base64 NBT compounds across member profiles and auctions:

NBT Field Location Payload Type Description & Contents
member.inventoryContentsBase64 GZIP NBTPlayer's main 36 inventory slots (hotbar + storage).
member.enderContentsBase64 GZIP NBTEnder Chest storage slots.
member.armorContentsBase64 GZIP NBT4 equipped armor slots (Helmet, Chestplate, Leggings, Boots).
member.accessoryBagBase64 GZIP NBTAccessory / Talisman Bag storage compound.
member.quiverBase64 GZIP NBTQuiver storage holding various arrow types and stacks.
member.newYearCakeBagBase64 GZIP NBTNew Year Cake Bag container storing numbered century cakes.
member.petInventoryBase64 GZIP NBTAll player SkyBlock pets with levels, held pet items, candies, and XP.
member.otherInventories.wardrobe_inventoryBase64 GZIP NBTWardrobe slots storing saved armor loadout sets.
member.otherInventories.extra_equipmentBase64 GZIP NBTEquipped equipment pieces (Necklace, Cloak, Belt, Gloves).
member.otherInventories.medal_inventoryBase64 GZIP NBTEthan's Farming Contest medals storage (Bronze, Silver, Gold).
member.otherInventories.seeds_inventoryBase64 GZIP NBTBasket of Seeds item storage container.
member.otherInventories.saved_effectsBase64 GZIP NBTActive potion effects, Booster Cookie, and God Potion buffs.
member.otherInventories.trick_or_treat_bagBase64 GZIP NBTSpooky Festival Trick or Treat Bag storing green and purple candy.
member.otherInventories.pumpkin_launcher_ammoBase64 GZIP NBTPumpkin Launcher ammo storage compound.
auction.itemDataBase64 GZIP NBTFull NBT compound for any active or ended Auction House listing.
javascript Node.js / JavaScript npm install prismarine-nbt
Uses prismarine-nbt and Node.js built-in zlib:
const nbt = require('prismarine-nbt');
const zlib = require('zlib');

async function decodeNBT(base64Data) {
  if (!base64Data) return null;
  const buffer = Buffer.from(base64Data, 'base64');
  const decompressed = zlib.gunzipSync(buffer);
  const { parsed } = await nbt.parse(decompressed);
  return nbt.simplify(parsed);
}
code Python pip install nbtlib
Uses nbtlib with Python standard gzip and base64:
import base64, gzip, io, nbtlib

def decode_nbt(base64_str):
    if not base64_str:
        return None
    raw_bytes = base64.b64decode(base64_str)
    decompressed = gzip.decompress(raw_bytes)
    nbt_file = nbtlib.File.parse(io.BytesIO(decompressed))
    return nbt_file
coffee Java implementation 'com.github.querz:nbt:6.1'
Uses Querz NBT or native Minecraft NBT streams:
import com.github.querz.nbt.io.NBTInputStream;
import com.github.querz.nbt.tag.CompoundTag;
import java.io.ByteArrayInputStream;
import java.util.Base64;
import java.util.zip.GZIPInputStream;

public CompoundTag decodeNBT(String base64Data) throws Exception {
    byte[] bytes = Base64.getDecoder().decode(base64Data);
    GZIPInputStream gzip = new GZIPInputStream(new ByteArrayInputStream(bytes));
    return (CompoundTag) new NBTInputStream(gzip).readTag(256).getTag();
}
bolt Go (Golang) go get github.com/THeZet/go-nbt
Uses Go GZIP package with go-nbt parser:
import (
    "bytes"
    "compress/gzip"
    "encoding/base64"
    "github.com/THeZet/go-nbt"
)

func DecodeNBT(base64Str string) (map[string]interface{}, error) {
    data, err := base64.StdEncoding.DecodeString(base64Str)
    if err != nil { return nil, err }
    gzReader, err := gzip.NewReader(bytes.NewReader(data))
    if err != nil { return nil, err }
    return nbt.Parse(gzReader)
}

Mapping Decoded Numerical Item IDs to Vanilla Names

When you decode NBT inventory blobs (such as inventoryContents, armorContents, or enderContents), individual item slot objects store their base Minecraft item as a numerical ID integer / short (e.g. id: 347, id: 1, id: -10) per the official Bedrock Wiki Numerical Item IDs Standard:

  • Positive IDs (1 to 828): Vanilla Minecraft items and weapons (e.g. 347 = diamond_sword, 310 = baked_potato, 4 = cobblestone).
  • Negative IDs (-1 to -1125): Block entities and modern item definitions (e.g. -10 = stripped_oak_log, -159 = turtle_egg).
  • Namespaced Enchantments (tag.ench): Unlike item models, enchantments are stored under tag.ench as namespaced string objects (e.g. minecraft:sharpness, minecraft:protection, trpixel:growth, trpixel:telekinesis) with an integer level lvl.
  • Custom SkyBlock Identifiers: The custom CraftersMC item type is located inside tag.ExtraAttributes.id or custom tag properties (e.g. PIGMAN_SWORD, ASPECT_OF_THE_DRAGONS), while id provides the vanilla item base model.
NBT Decoded Slot Payload & Mapping Helper (JavaScript)
// Example decoded slot compound from live NBT
const slotData = {
  Slot: 0,
  id: 347, // Bedrock Numerical Item ID (347 = diamond_sword)
  Count: 1,
  Damage: 0,
  tag: {
    display: {
      Name: "§6Sharp Aspect of the Dragons",
      Lore: ["§7Damage: §c+225", "§7Strength: §c+100"]
    },
    // Enchantments stored as namespaced strings with lvl
    ench: [
      { id: "minecraft:sharpness", lvl: 5 },
      { id: "minecraft:fire_aspect", lvl: 2 },
      { id: "trpixel:scavenger", lvl: 3 },
      { id: "trpixel:critical", lvl: 5 },
      { id: "trpixel:telekinesis", lvl: 1 }
    ],
    pixelReforge: "SHARP"
  }
};

// Map numerical item ID to vanilla name while reading string enchantments
async function mapDecodedItem(slot) {
  const itemMap = await fetch('/better-api-docs/numerical-item-ids.json').then(r => r.json());
  const vanillaItemName = itemMap[slot.id] || `unknown_${slot.id}`;
  const customSkyblockId = slot.tag?.ExtraAttributes?.id || null;

  return {
    slotIndex: slot.Slot,
    amount: slot.Count,
    vanillaIdentifier: `minecraft:${vanillaItemName}`,
    skyblockItemId: customSkyblockId,
    displayName: slot.tag?.display?.Name || vanillaItemName,
    reforge: slot.tag?.pixelReforge || null,
    enchantments: (slot.tag?.ench || []).map(e => ({
      identifier: e.id,
      level: e.lvl
    }))
  };
}

Interactive Numerical Item ID Lookup Tool

Search over 1,900 Bedrock item and block IDs directly in this live reference table:

Numerical ID Vanilla Minecraft Identifier Type

api Complete Endpoints Reference (11 Routes)

Exhaustive technical documentation, parameter tables, response dictionaries, and multi-language code snippets with mandatory X-API-Key enforcement.

Network › GET › /v1/network/status
GET

Network Status

https://api.craftersmc.net/v1/network/status
Returns the real-time operational status of the CraftersMC network, including total online player count, maximum network capacity, individual game instance breakdowns, and maintenance flags.
vpn_key 1. Headers & Authentication
HeaderTypeRequiredDescription
X-API-KeystringRequiredYour CraftersMC developer API secret key.
AcceptstringOptionalapplication/json
data_object 2. Response Structure & Dictionary
Returns a ServerStatusReply object:
FieldTypeDescription
successbooleanIndicates if the request completed successfully (always true on 200).
playerCountinteger (int32)Total number of players currently connected across the network.
maxPlayerCountinteger (int32)Configured player connection limit for the entire network (e.g. 750).
fullMaintenancebooleanWhether the entire network is in full maintenance mode.
plannedMaintenancebooleanWhether a scheduled maintenance window is pending.
whitelistRankenum (PlayerRank)Minimum rank required to join during maintenance (e.g. DEFAULT).
gamesobject (map)Game cluster map (SKYBLOCK, HUB, LIMBO) with nested sub-instance counts under modes.
import_export HTTP Status Codes
200 OK Network status retrieved successfully.
401 / 403 Missing or invalid X-API-Key header.
429 Rate Limit Request quota exceeded.
curl -X GET "https://api.craftersmc.net/v1/network/status" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
Response Example (200 OK)
{
  "success": true,
  "games": {
    "LIMBO": {
      "modes": {
        "limbo": 8
      }
    },
    "SKYBLOCK": {
      "modes": {
        "hub": 53,
        "dynamic": 80,
        "the_park": 10,
        "sb_the_end": 10,
        "mining_1": 9
      }
    },
    "HUB": {}
  },
  "playerCount": 170,
  "maxPlayerCount": 750,
  "fullMaintenance": false,
  "whitelistRank": "DEFAULT",
  "plannedMaintenance": false
}
Network › GET › /v1/network/voters
GET

Vote List

https://api.craftersmc.net/v1/network/voters
Returns the list of players who voted for CraftersMC during the current month, along with their cumulative vote counts and the cache fetch timestamp.
vpn_key 1. Headers & Authentication
HeaderTypeRequiredDescription
X-API-KeystringRequiredYour CraftersMC developer API secret key.
data_object 2. Response Structure & Dictionary
Returns a VotersReply object:
FieldTypeDescription
successbooleanRequest execution state.
monthstringCurrent tracking month code formatted as YYYYMM (e.g. 202608).
countinteger (int32)Total number of voter entries in the active leaderboard.
fetchedAtinteger (int64)Unix epoch timestamp (ms) of the voting list cache refresh.
votersarray of VoterEntryArray of objects containing nickname (string) and votes (int32).
import_export HTTP Status Codes
200 OK Vote list retrieved successfully.
401 / 403 Missing or invalid X-API-Key header.
503 Unavailable Vote list is warming up.
curl -X GET "https://api.craftersmc.net/v1/network/voters" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
Response Example (200 OK)
{
  "success": true,
  "month": "202608",
  "fetchedAt": 1788029134683,
  "count": 1000,
  "voters": [
    { "nickname": "ZoroNoman", "votes": 30 },
    { "nickname": "AAAgamer6034", "votes": 29 },
    { "nickname": "aamorin", "votes": 29 },
    { "nickname": "AA_Dhruv_op", "votes": 29 },
    { "nickname": "ZNXayush4102", "votes": 29 }
  ]
}
Players › GET › /v1/player/{identifier}
GET

Player Profile

https://api.craftersmc.net/v1/player/{identifier}
Retrieves complete player account information by Minecraft username, 32-character hex UUID, or numeric Pixel ID. Returns ranks, total playtime, playtime breakdown, cosmetic unlocks, and privacy settings.
tune Parameters & Headers
ParameterInTypeRequiredDescription
X-API-KeyheaderstringRequiredYour CraftersMC developer API secret key.
identifierpathstringRequiredPlayer IGN (e.g. Notch), 32-hex UUID, or numeric Pixel ID.
data_object 2. Decoded Player Profile Schema Dictionary
Returns the complete root player account object:
FieldTypeDescription
namestringCurrent Minecraft in-game username (IGN).
nameHistoryarray of stringPrevious usernames used on the network.
pixelIdstringInternal network account hex identifier (e.g. a69ebe768).
uuidstring (UUID)Dashed 36-character player UUID.
selectedRankenum (PlayerRank)Active player rank: DEFAULT, VOTER, GOLD, DIAMOND, EMERALD, YOUTUBER, ADMIN, OWNER.
networkExpinteger (int64)Cumulative network experience points.
networkCoinsinteger (int64)Cosmetics and arcade coins balance.
stats.skyBlock.profileIdstring32-hex UUID of the player's currently active SkyBlock profile.
stats.skyBlock.profilesobject (map)Map of profile UUIDs to { cuteName: string, profileId: string } (e.g. PLUM, PEACH, KIWI).
totalPlaytimeinteger (int64)Total network playtime in milliseconds.
playtimePerGameobject (map)Playtime breakdown in ms across game types (SKYBLOCK, HUB, LIMBO).
firstLogin / lastLoginstring (ISO 8601)ISO timestamp strings of player connection milestones.
unlockedCollectablesarray of stringArray of unlocked cosmetic identifiers (pets, suits, gadgets, particle trails).
sbClaimedCakesarray of integerList of SkyBlock New Year Cake edition numbers claimed by the player.
import_export HTTP Status Codes
200 OK Player found and returned.
401 / 403 Missing or invalid X-API-Key header.
400 Bad Request Malformed username or UUID format.
404 Not Found No player matching the given identifier exists.
curl -X GET "https://api.craftersmc.net/v1/player/NetworkPg" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
Response Example (200 OK)
{
  "name": "NetworkPg",
  "nameHistory": [],
  "pixelId": "d34f76fd5",
  "uuid": "ac6fca9d-0771-3960-aa85-fd21cb53f18e",
  "selectedRank": "DEFAULT",
  "networkExp": 60657,
  "networkCoins": 5693,
  "stats": {
    "skyBlock": {
      "profileId": "7da2465cd78141c0b0669a5eb48f250c",
      "profiles": {
        "7da2465cd78141c0b0669a5eb48f250c": {
          "cuteName": "PLUM",
          "profileId": "7da2465cd78141c0b0669a5eb48f250c"
        }
      }
    }
  },
  "totalPlaytime": 1169586,
  "playtimePerGame": {
    "SKYBLOCK": 1095731,
    "LIMBO": 67658,
    "HUB": 5117
  },
  "firstLogin": "2024-02-11T10:32:12+03:00",
  "lastLogin": "2026-08-28T13:27:27.361Z"
}
SkyBlock Bazaar › GET › /v1/resources/skyblock/bazaar/items
GET

Bazaar Item Catalog

https://api.craftersmc.net/v1/resources/skyblock/bazaar/items
Returns the full catalog array of all item IDs tradeable on the CraftersMC SkyBlock Bazaar.
vpn_key 1. Headers & Authentication
HeaderTypeRequiredDescription
X-API-KeystringRequiredYour CraftersMC developer API secret key.
AcceptstringOptionalapplication/json
data_object 2. Decoded Response Structure
Returns a BazaarItemListReply object:
FieldTypeDescription
successbooleanIndicates successful execution (always true on 200).
itemsarray of stringList of valid item IDs (e.g. ENCHANTED_PORK, HOT_POTATO_BOOK) tradeable on the Bazaar.
import_export HTTP Status Codes
200 OK Catalog retrieved successfully.
401 / 403 Missing or invalid X-API-Key header.
429 Rate Limit Rate limit exceeded.
curl -X GET "https://api.craftersmc.net/v1/resources/skyblock/bazaar/items" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
Response Example (200 OK)
{
  "success": true,
  "items": [
    "mite_gel",
    "enchanted_diamond",
    "super_compactor_3000",
    "summoning_eye",
    "cropie",
    "revenant_flesh",
    "squash",
    "fermento"
  ]
}
SkyBlock Bazaar › GET › /v1/skyblock/bazaar/{itemId}/details
GET

Bazaar Item Market Depth

https://api.craftersmc.net/v1/skyblock/bazaar/{itemId}/details
Retrieves live order book data for a single Bazaar item ID, including top buy offers, top sell orders, order counts, total buy/sell volumes, and 7-day weighted average price.
tune Parameters & Headers
ParameterInTypeRequiredDescription
X-API-KeyheaderstringRequiredYour CraftersMC developer API secret key.
itemIdpathstringRequiredTarget Bazaar item ID (e.g. enchanted_diamond, super_compactor_3000).
data_object 2. Decoded Response Structure
Returns a BazaarItemReply object:
FieldTypeDescription
successbooleanRequest success status.
itemIdstringThe unique item ID identifier.
buyVolumeinteger (int64)Total quantity of items requested in active buy orders (Instant Sell demand).
sellVolumeinteger (int64)Total quantity of items listed in active sell offers (Instant Buy supply).
weeklyAveragePricenumber (double)Volume-weighted moving average price over the last 7 days.
buyTopEntriesarray of BazaarEntryTop buy offers (highest price first): array of { price: number, quantity: integer, orderCount: integer }.
sellTopEntriesarray of BazaarEntryTop sell offers (lowest price first): array of { price: number, quantity: integer, orderCount: integer }.
import_export HTTP Status Codes
200 OK Item market depth retrieved.
401 / 403 Missing or invalid X-API-Key header.
400 Bad Request Invalid item ID format.
404 Not Found Item not populated in Bazaar database.
curl -X GET "https://api.craftersmc.net/v1/skyblock/bazaar/enchanted_diamond/details" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
Response Example (200 OK)
{
  "success": true,
  "itemId": "enchanted_diamond",
  "buyVolume": 105634,
  "sellVolume": 78200,
  "weeklyAveragePrice": 1248.5,
  "buyTopEntries": [
    { "price": 1251.8, "quantity": 1425, "orderCount": 1 },
    { "price": 1251.7, "quantity": 5907, "orderCount": 1 }
  ],
  "sellTopEntries": [
    { "price": 1253.2, "quantity": 1024, "orderCount": 1 },
    { "price": 1253.3, "quantity": 256, "orderCount": 1 }
  ]
}
SkyBlock Auctions › GET › /v1/skyblock/auction/{auctionId}
GET

Auction Details & NBT

https://api.craftersmc.net/v1/skyblock/auction/{auctionId}
Retrieves complete details for a single SkyBlock auction by its 32-hex UUID, including bid history, starting price, highest bid, seller profile, and Base64 GZIP NBT item binary.
tune Parameters & Headers
ParameterInTypeRequiredDescription
X-API-KeyheaderstringRequiredYour CraftersMC developer API secret key.
auctionIdpathstringRequired32-hex character auction UUID (no dashes).
data_object 2. Decoded ApiAuctionEntry & ApiBidEntry Fields
Returns an AuctionReply wrapping auction (ApiAuctionEntry) and bids (array of ApiBidEntry):
FieldTypeDescription
auction.idstring32-hex unique auction UUID.
auction.createdAtinteger (int64)Creation epoch timestamp in milliseconds.
auction.endsAtinteger (int64)Auction expiration epoch timestamp in milliseconds.
auction.itemDatastring (Base64 NBT)Base64 GZIP-compressed NBT compound containing item enchantments, lore, and extra attributes.
auction.itemIdstringItem identifier (e.g. PIGMAN_SWORD, ASPECT_OF_THE_DRAGONS, trpixel:obsidian_chestplate).
auction.tierenum (ItemRarity)Rarity tier: COMMON, UNCOMMON, RARE, EPIC, LEGENDARY, MYTHIC, SPECIAL, VERY SPECIAL.
auction.categoryenum (AuctionCategory)Category: WEAPONS, ARMORS, ACCESSORIES, CONSUMABLES, PETS, TOOLS, COSMETICS, MISCELLANEOUS.
auction.ownerUniqueId / ownerNamestringSeller's 32-hex player UUID and Minecraft username.
auction.startingPricenumber (double)Starting bid amount in coins.
auction.highestBidAmountnumber (double)Current winning bid in coins (or 0 if no bids placed).
auction.bidsinteger (int32)Total number of bids placed.
auction.endedbooleanWhether the auction timer has finished or was buyout completed.
bids[].bidderUuidstring32-hex UUID of the bidder.
bids[].amountnumber (double)Bid amount placed in coins.
bids[].timestampinteger (int64)Epoch timestamp (ms) when the bid was registered.
import_export HTTP Status Codes
200 OK Auction retrieved.
401 / 403 Missing or invalid X-API-Key header.
404 Not Found Auction not found or expired.
curl -X GET "https://api.craftersmc.net/v1/skyblock/auction/6a9093c7145fed4df1832fbc" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
Response Example (200 OK)
{
  "success": true,
  "auction": {
    "id": "6a9093c7145fed4df1832fbc",
    "createdAt": 1787859911,
    "endsAt": 1788032711,
    "quantity": 1,
    "itemData": "H4sICAAA...",
    "itemId": "trpixel:obsidian_chestplate",
    "tier": "EPIC",
    "category": "ARMORS",
    "type": "NORMAL",
    "ownerUniqueId": "7b5183d0-3649-3bf8-b3fe-54752ca28665",
    "ownerProfileId": "e526b6e994d04268b689990d58448260",
    "ownerName": "EdgyHarmony2986",
    "startingPrice": 120000,
    "highestBidAmount": 0,
    "bids": 0,
    "ended": false
  },
  "bids": []
}
SkyBlock Auctions › GET › /v1/skyblock/auctions
GET

Active Auctions (Paginated)

https://api.craftersmc.net/v1/skyblock/auctions?page={page}
Retrieves a paginated list of all active SkyBlock auctions currently listed on the server.
tune Query Parameters & Headers
ParameterInTypeRequiredDefaultDescription
X-API-KeyheaderstringRequired-Your CraftersMC developer API secret key.
pagequeryinteger (int32)Optional0Zero-indexed page number (0 to totalPages - 1).
data_object 2. Decoded Response Structure
Returns an AuctionPageReply object:
FieldTypeDescription
successbooleanRequest execution state.
pageinteger (int32)Current zero-indexed page number returned.
totalPagesinteger (int32)Total available pages for active listings.
totalAuctionsinteger (int32)Total number of active auctions across all pages.
lastUpdatedinteger (int64)Unix epoch timestamp (ms) of the cache refresh.
auctionsarray of ApiAuctionEntryArray of active auction objects containing full item metadata and NBT strings.
import_export HTTP Status Codes
200 OK Page retrieved successfully.
401 / 403 Missing or invalid X-API-Key header.
400 Bad Request Negative or non-integer page index.
curl -X GET "https://api.craftersmc.net/v1/skyblock/auctions?page=0" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
Response Example (200 OK)
{
  "success": true,
  "page": 0,
  "totalPages": 2,
  "totalAuctions": 1154,
  "lastUpdated": 1788032079008,
  "auctions": [
    {
      "id": "6a9093c7145fed4df1832fbc",
      "createdAt": 1787859911,
      "endsAt": 1788032711,
      "itemId": "trpixel:obsidian_chestplate",
      "tier": "EPIC",
      "category": "ARMORS",
      "startingPrice": 120000,
      "highestBidAmount": 0,
      "ownerName": "EdgyHarmony2986",
      "itemData": "H4sICAAA...",
      "ended": false
    }
  ]
}
SkyBlock Auctions › GET › /v1/skyblock/auctions/ended
GET

Recently Ended Auctions

https://api.craftersmc.net/v1/skyblock/auctions/ended
Returns auctions that completed or expired within the last 60 seconds. Essential for historical market pricing, trade logs, and sniper notifications.
vpn_key 1. Headers & Authentication
HeaderTypeRequiredDescription
X-API-KeystringRequiredYour CraftersMC developer API secret key.
data_object 2. Decoded Response Structure
Returns an AuctionPageReply object:
FieldTypeDescription
successbooleanRequest execution state.
lastUpdatedinteger (int64)Timestamp when ended auctions cache was generated.
auctionsarray of ApiAuctionEntryAuctions finalized in the last 60s, including highestBidAmount, ownerName, cancelReason, and itemData.
import_export HTTP Status Codes
200 OK Ended auctions retrieved.
401 / 403 Missing or invalid X-API-Key header.
curl -X GET "https://api.craftersmc.net/v1/skyblock/auctions/ended" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
Response Example (200 OK)
{
  "success": true,
  "lastUpdated": 1788032084999,
  "auctions": [
    {
      "id": "6a92f249558a95b32b7f8a5d",
      "itemId": "trpixel:pigman_sword",
      "tier": "LEGENDARY",
      "category": "WEAPONS",
      "type": "BIN",
      "ownerName": "Darkness44121",
      "startingPrice": 7000000,
      "highestBidAmount": 0,
      "ended": true,
      "cancelReason": "OWNER"
    }
  ]
}
SkyBlock Auctions › GET › /v1/skyblock/auctions/player/{uuid}
GET

Player Auction Listings

https://api.craftersmc.net/v1/skyblock/auctions/player/{uuid}
Retrieves all active and uncollected auction house listings owned by a specific player UUID, with optional filtering by SkyBlock profile ID.
tune Parameters & Headers
ParameterInTypeRequiredDescription
X-API-KeyheaderstringRequiredYour CraftersMC developer API secret key.
uuidpathstringRequiredTarget player's 32-hex UUID.
profileIdquerystringOptionalFilter auctions to a specific SkyBlock profile.
data_object 2. Decoded Response Structure
Returns an AuctionsReply object:
FieldTypeDescription
successbooleanRequest execution state.
auctionsarray of ApiAuctionEntryAll active and completed listings created by the specified player UUID.
import_export HTTP Status Codes
200 OK Player auctions retrieved.
401 / 403 Missing or invalid X-API-Key header.
400 Bad Request Invalid UUID format.
curl -X GET "https://api.craftersmc.net/v1/skyblock/auctions/player/7b5183d0-3649-3bf8-b3fe-54752ca28665" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
Response Example (200 OK)
{
  "success": true,
  "auctions": [
    {
      "id": "6a9093c7145fed4df1832fbc",
      "itemId": "trpixel:obsidian_chestplate",
      "startingPrice": 120000,
      "highestBidAmount": 0,
      "ended": false
    }
  ]
}
SkyBlock Profile › GET › /v1/skyblock/profile/{profileId}
GET

SkyBlock Profile & Member Data

https://api.craftersmc.net/v1/skyblock/profile/{profileId}
Retrieves complete SkyBlock profile data including co-op members, banking balance, skill experience, slayer progression, minion crafts, collections, and Base64 NBT inventory blobs.
tune Parameters & Headers
ParameterInTypeRequiredDescription
X-API-KeyheaderstringRequiredYour CraftersMC developer API secret key.
profileIdpathstringRequired32-hex character SkyBlock profile UUID (no dashes).
data_object 2. Decoded Profile & Member Schema Dictionary
Returns a SkyBlockProfileReply wrapping a profile object:
FieldTypeDescription
profile.idstring32-hex unique profile UUID.
profile.createdAtinteger (int64)Creation epoch timestamp in seconds.
profile.ownerUniqueIdstring32-hex player UUID of the profile leader.
profile.ownerLastName / ownerLastRankstringUsername and rank of profile owner (e.g. KaosTheChaos, EMERALD).
profile.banking.balancenumber (double)Co-op bank coin balance.
profile.banking.highestBalance / tiernumber / stringBank capacity ceiling and tier badge (e.g. ELITE).
profile.members[uuid].coinPursenumber (double)Member's purse coin balance.
profile.members[uuid].skillsobject (map)Key-value map of skill XP numbers (combat, farming, mining, foraging, fishing, enchanting, alchemy, taming, carpentry, runecrafting, social).
profile.members[uuid].slayerDataobjectSlayer boss XP and tier levels for zombie, spider, and wolf.
profile.members[uuid].visitedZonesarray of stringIsland areas discovered (e.g. the_park.acacia, end.dragons_nest).
profile.members[uuid].deaths / killsobject (map)Lifetime death and kill counters by mob and damage type.
profile.members[uuid].inventoryContentsstring (Base64 NBT)36 player inventory slots as a GZIP NBT compound blob.
profile.members[uuid].enderContentsstring (Base64 NBT)Ender chest item storage as a GZIP NBT compound blob.
profile.members[uuid].armorContentsstring (Base64 NBT)4 equipped armor slots (Helmet, Chestplate, Leggings, Boots).
profile.members[uuid].accessoryBagstring (Base64 NBT)Accessory / Talisman Bag storage compound.
profile.members[uuid].quiverstring (Base64 NBT)Quiver storage holding various arrow types and stacks.
profile.members[uuid].newYearCakeBagstring (Base64 NBT)Stored New Year Cakes in the player's cake bag.
profile.members[uuid].petInventorystring (Base64 NBT)All SkyBlock pets with levels, held pet items, candies, and XP.
profile.members[uuid].otherInventoriesobject (map of NBT)Map of sub-inventories: wardrobe_inventory, extra_equipment, medal_inventory, seeds_inventory, saved_effects, trick_or_treat_bag, and pumpkin_launcher_ammo (all Base64 GZIP NBT).
import_export HTTP Status Codes
200 OK Profile retrieved.
401 / 403 Missing or invalid X-API-Key, or player turned off API scope in SkyBlock settings.
400 Bad Request Invalid profile UUID.
404 Not Found Profile does not exist.
curl -X GET "https://api.craftersmc.net/v1/skyblock/profile/7da2465cd78141c0b0669a5eb48f250c" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
Response Example (200 OK)
{
  "success": true,
  "profile": {
    "id": "7da2465cd78141c0b0669a5eb48f250c",
    "createdAt": 1707641453,
    "ownerUniqueId": "ac6fca9d07713960aa85fd21cb53f18e",
    "ownerLastName": "NetworkPg",
    "ownerLastRank": "VOTER",
    "banking": {
      "balance": 35950322.53,
      "highestBalance": 50000000,
      "tier": "BASIC"
    },
    "members": {
      "ac6fca9d07713960aa85fd21cb53f18e": {
        "coinPurse": 6203650.72,
        "skills": {
          "farming": 1508242.97,
          "mining": 8148856.46,
          "combat": 11442420.02,
          "foraging": 578625.55,
          "enchanting": 25839701.03,
          "taming": 5261734.76
        },
        "slayerData": {
          "zombie": 86220,
          "wolf": 6230,
          "zombieTier": 4,
          "wolfTier": 4
        },
        "accessoryBag": "H4sICAAA...",
        "armorContents": "H4sICAAA...",
        "inventoryContents": "H4sICAAA...",
        "quiver": "H4sICAAA...",
        "petInventory": "H4sICAAA...",
        "otherInventories": {
          "medal_inventory": "H4sICAAA...",
          "wardrobe_inventory": "H4sICAAA..."
        }
      }
    }
  }
}
SkyBlock Settings › GET › /v1/skyblock/settings
GET

SkyBlock Global Settings & Banners

https://api.craftersmc.net/v1/skyblock/settings
Retrieves global server settings and the banner image queue for the in-game SkyBlock Menu. Only active, non-expired banners are rendered.
vpn_key 1. Headers & Authentication
HeaderTypeRequiredDescription
X-API-KeystringRequiredYour CraftersMC developer API secret key.
AcceptstringOptionalapplication/json
data_object 2. Decoded Response Structure
Returns a SkyBlockSettingsReply object containing active and evergreen banner queues:
FieldTypeDescription
successbooleanRequest execution status (always true on 200).
settings.menuBannerQueuearray of MenuBannerOrdered list of promotional banner image objects displayed at the top of the in-game SkyBlock Menu.
menuBannerQueue[].expireAtinteger (int64)Unix epoch timestamp in seconds when the banner expires. A value of 0 signifies an evergreen fallback banner.
menuBannerQueue[].imagesobject (map)Key-value map of language codes (english, german, spanish, turkish, french) to image descriptor objects.
images[locale].typestringResource type identifier (e.g. URL).
images[locale].pathstring (URL)Direct CDN link to the localized promotional PNG banner (hosted on cdn.craftersmc.net).
import_export HTTP Status Codes
200 OK Global settings returned.
401 / 403 Missing or invalid X-API-Key header.
404 Not Found Settings queue unpopulated.
curl -X GET "https://api.craftersmc.net/v1/skyblock/settings" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
Response Example (200 OK)
{
  "success": true,
  "settings": {
    "menuBannerQueue": [
      {
        "images": {
          "english": {
            "type": "URL",
            "path": "https://cdn.craftersmc.net/h/skyblock/skyblock_menu/banner/summer_sale_2026/english.png"
          },
          "german": {
            "type": "URL",
            "path": "https://cdn.craftersmc.net/h/skyblock/skyblock_menu/banner/summer_sale_2026/german.png"
          },
          "spanish": {
            "type": "URL",
            "path": "https://cdn.craftersmc.net/h/skyblock/skyblock_menu/banner/summer_sale_2026/spanish.png"
          },
          "turkish": {
            "type": "URL",
            "path": "https://cdn.craftersmc.net/h/skyblock/skyblock_menu/banner/summer_sale_2026/turkish.png"
          },
          "french": {
            "type": "URL",
            "path": "https://cdn.craftersmc.net/h/skyblock/skyblock_menu/banner/summer_sale_2026/french.png"
          }
        },
        "expireAt": 1787346000
      },
      {
        "images": {
          "english": {
            "type": "URL",
            "path": "https://cdn.craftersmc.net/h/skyblock/skyblock_menu/banner/v051/english.png"
          },
          "german": {
            "type": "URL",
            "path": "https://cdn.craftersmc.net/h/skyblock/skyblock_menu/banner/v051/german.png"
          },
          "spanish": {
            "type": "URL",
            "path": "https://cdn.craftersmc.net/h/skyblock/skyblock_menu/banner/v051/spanish.png"
          },
          "turkish": {
            "type": "URL",
            "path": "https://cdn.craftersmc.net/h/skyblock/skyblock_menu/banner/v051/turkish.png"
          },
          "french": {
            "type": "URL",
            "path": "https://cdn.craftersmc.net/h/skyblock/skyblock_menu/banner/v051/french.png"
          }
        },
        "expireAt": 0
      }
    ]
  }
}

schema Data Schemas & Models

Complete JSON schema definitions for all core data models.

ServerStatusReply
Object schema returned by GET /v1/network/status
{
  "success": true,
  "games": {
    "SKYBLOCK": { "modes": { "hub": 53, "dynamic": 80, "the_park": 10 } },
    "LIMBO": { "modes": { "limbo": 8 } }
  },
  "playerCount": 170,
  "maxPlayerCount": 750,
  "fullMaintenance": false,
  "whitelistRank": "DEFAULT",
  "plannedMaintenance": false
}
Player Account Object
Root object schema returned by GET /v1/player/{identifier}
{
  "name": "NetworkPg",
  "pixelId": "d34f76fd5",
  "uuid": "ac6fca9d-0771-3960-aa85-fd21cb53f18e",
  "selectedRank": "DEFAULT",
  "networkExp": 60657,
  "networkCoins": 5693,
  "stats": {
    "skyBlock": {
      "profileId": "7da2465cd78141c0b0669a5eb48f250c",
      "profiles": { "7da2465cd78141c0b0669a5eb48f250c": { "cuteName": "PLUM" } }
    }
  },
  "totalPlaytime": 1169586
}
BazaarItemReply
Market depth schema returned by GET /v1/skyblock/bazaar/{itemId}/details
{
  "success": true,
  "itemId": "enchanted_diamond",
  "buyVolume": 105634,
  "sellVolume": 78200,
  "weeklyAveragePrice": 1248.5,
  "buyTopEntries": [{ "price": 1251.8, "quantity": 1425, "orderCount": 1 }],
  "sellTopEntries": [{ "price": 1253.2, "quantity": 1024, "orderCount": 1 }]
}
AuctionReply › ApiAuctionEntry
Auction object schema returned by GET /v1/skyblock/auction/{auctionId}
{
  "success": true,
  "auction": {
    "id": "6a9093c7145fed4df1832fbc",
    "createdAt": 1787859911,
    "endsAt": 1788032711,
    "itemId": "trpixel:obsidian_chestplate",
    "tier": "EPIC",
    "category": "ARMORS",
    "startingPrice": 120000,
    "highestBidAmount": 0,
    "ownerName": "EdgyHarmony2986",
    "itemData": "H4sICAAA...",
    "ended": false
  },
  "bids": []
}

list_alt Enums Reference Dictionary

Comprehensive enumeration constant sets across player ranks, item rarities, server types, and profile modes.

PlayerRank
DEFAULT VOTER GOLD DIAMOND EMERALD YOUTUBER ADMIN OWNER
ItemRarity
COMMON UNCOMMON RARE EPIC LEGENDARY MYTHIC SPECIAL VERY SPECIAL
ProfileGameMode
REGULAR IRONMAN STRANDED BINGO
AuctionCategory
WEAPONS ARMORS ACCESSORIES CONSUMABLES PETS TOOLS COSMETICS MISCELLANEOUS