All pages

EggoxDB API

Every mint, blueprint and person in Eggox, as JSON anyone can read. No key, no account.

EggoxDB is the official database of every mint in Eggox: what it is, who made it, how many exist, who holds one, whether its master is still alive. The same numbers the game shows in a thing's Supply block. Beside the mints are their blueprints and the people who make and hold them. It has a JSON API, open to everyone, so you can build on it: a price guide, a collection tracker, a bot that says when something new is struck.

No key and no account. Plain GET requests, JSON back, CORS open to any origin. Please keep to a request or two a second; a caller that goes well past that gets 429 for a minute.

The API lives at https://mints.eggox.net/api/ and, the same, at https://eggox.net/api/: mints, blueprints and people. There are no kinds: a Voxel coin or a competition prize is a mint by Eggox, found like any other.

The list

GET /api/mints?q=lantern&in=name&sort=editions&page=1&per_page=50

ParameterWhat it does
qA word of the name.
inWhere q looks: name (the default), author, or any.
authorAn author's name, exactly (case aside). Eggox is the Mint: the Voxel coins and the competition prizes.
holderA person's name, exactly (case aside): the mints they hold, Voxel coins aside. Each mint then has held, how many of it they hold, and sort may be held.
from, toDays (YYYY-MM-DD) the first edition was struck between, both ends included.
masteralive or destroyed.
sortfirst (first struck, the default), last, name, author, editions, holders, master, version.
dirasc or desc. Names go up and numbers and dates down unless told.
page, per_pagePaging; per_page is 50 by default and at most 100.

The answer:

{ "mints": [ { ...a mint... } ], "page": 1, "per_page": 50, "pages": 3, "total": 121 }

One mint

GET /api/mints/ln_9df3dabd223d525eb08fe440

{ "mint": { "lineage_id": "ln_9df3dabd223d525eb08fe440", "name": "Harbour lantern", "creator": { "name": "Nadia", "status": "citizen", "url": "https://eggox.net/u/Nadia" }, "editions": 25, "holders": 9, "master_alive": true, "master_destroyed_at": null, "blueprint": "https://mints.eggox.net/b/ln_9df3dabd223d525eb08fe440", "version": 2, "first_minted_at": "2026-10-02T14:11:08Z", "last_minted_at": "2026-10-02T14:11:08Z", "content_hash": "3f1c…", "picture": "https://mints.eggox.net/pictures/3f1c….png", "url": "https://mints.eggox.net/m/ln_9df3dabd223d525eb08fe440", "coin_value": null, "award": null, "held_by": [ { "name": "Nadia", "held": 16, "picture": "https://mints.eggox.net/u/Nadia/picture.png?v=…", "url": "https://eggox.net/u/Nadia" }, { "name": "Omar", "held": 2, "picture": "https://mints.eggox.net/u/Omar/picture.png?v=…", "url": "https://eggox.net/u/Omar" } ], "held_by_more": 0, "held_by_unknown": { "people": 0, "held": 0 }, "held_by_gone": { "people": 0, "held": 0 }, "held_by_url": "https://mints.eggox.net/api/mints/ln_9df3dabd223d525eb08fe440/holders" } }

Field by field:

  • lineage_id: the mint's lineage, the id to keep. It never changes, whatever version an edition wears.
  • creator: whoever holds the master, as the game shows it, with a status. A citizen (someone who has checked their age) is named and url is their profile. Eggox's own mints are eggox, named Eggox. Nobody else is ever named: an unknown user (not yet a citizen) and a gone one (who deleted their account) have name null, and url is the one page for all of them. The author of a destroyed master is still the person who held it when it went. creator is null only where nothing is known of the master.
  • editions: how many exist, summed across every holder. holders: how many people hold at least one.
  • master_alive: false means the supply is final: no more will ever be made. While it is alive no more can be struck either, as long as any of these exist. master_destroyed_at is when its author destroyed it (null while it's alive, or where that isn't known). blueprint is the master's page, alive or destroyed, or null.
  • content_hash: the SHA-256 of the mint's bytes, the same certificate the game shows. picture is drawn from those bytes.
  • coin_value: for a Voxel coin, its face value in Voxels; otherwise null.
  • award: for a competition prize, the engraving: the competition, the place, the entry, the stars, the day; otherwise null.
  • held_by (one mint only): the first ten citizens who hold it, most first. held_by_more counts the rest, named or not. Nobody else is named: held_by_unknown and held_by_gone say how many unknown and deleted users hold it and how many they hold, never who. Who holds Voxel coins is never listed (they're money): held_by is empty, the two pools are null and held_by_more is everyone. The rest, ten at a time, and a search, are at held_by_url:

Unknown id: 404 with {"reason": "not_found"}.

Who holds a mint

GET /api/mints/ln_9df3dabd223d525eb08fe440/holders?q=nad&page=1

{ "holders": [ { "name": "Nadia", "held": 16, "picture": "https://mints.eggox.net/u/Nadia/picture.png?v=…", "url": "https://eggox.net/u/Nadia" } ], "total": 1, "page": 1, "per_page": 10, "pages": 1, "not_listed": null, "unknown": null, "gone": null }

Ten a page, most first. q is a word of the name. total counts the citizens listed (matching q); not_listed the holders who aren't, and unknown and gone the two pools as above, all null while searching. picture is how they look, as for people.

Blueprints

The master every mint is struck from, with its published versions. A master its author destroyed stays, with master_alive false: who made it, when, and every version it had. Drafts, and blueprints nobody minted, stay their author's own.

GET /api/blueprints?q=lantern&in=name&sort=published&page=1

q, in, author, dir, page and per_page as for mints; sort is published (the last published, the default), name, author, versions or editions.

GET /api/blueprints/ln_9df3dabd223d525eb08fe440

{ "blueprint": { "lineage_id": "ln_9df3dabd223d525eb08fe440", "name": "Harbour lantern", "creator": { "name": "Nadia", "status": "citizen", "url": "https://eggox.net/u/Nadia" }, "versions": 2, "editions": 25, "master_alive": true, "master_destroyed_at": null, "first_published_at": "2026-09-30T09:12:44Z", "last_published_at": "2026-10-02T14:02:51Z", "picture": "https://mints.eggox.net/pictures/3f1c….png?v=2", "mint": "https://mints.eggox.net/m/ln_9df3dabd223d525eb08fe440", "url": "https://mints.eggox.net/b/ln_9df3dabd223d525eb08fe440", "published": [ { "version": 2, "name": "Harbour lantern", "published_at": "2026-10-02T14:02:51Z", "source": "https://mints.eggox.net/b/ln_9df3dabd223d525eb08fe440/sources/2" }, { "version": 1, "name": "Lantern", "published_at": "2026-09-30T09:12:44Z", "source": "https://mints.eggox.net/b/ln_9df3dabd223d525eb08fe440/sources/1" } ] } }

published (one blueprint only) lists every published version, newest first; source is its voxel bytes, the format the game's own code reads. editions is how many of its mints exist, whatever version each shows: anyone holding one can show it as any of them.

People

Everyone who has stepped into the world: when they came, how many mints they made (the masters they hold), how many they hold (Voxel coins aside). Only citizens are listed: someone who hasn't checked their age yet, or who deleted their account, is never named.

GET /api/people?q=nad&sort=joined&page=1

q is a word of the name; sort is joined (the default, newest first), name, made or holds; dir, page and per_page as for mints.

GET /api/people/Nadia

{ "person": { "name": "Nadia", "joined": "2026-09", "made": 4, "holds": 11, "editions_held": 37, "picture": "https://mints.eggox.net/u/Nadia/picture.png?v=4be0c1a7d2f3e865", "url": "https://eggox.net/u/Nadia", "wearing": [ { "name": "Sunny", "version": 2, "mint": "https://mints.eggox.net/m/ln_…" } ], "card": "https://eggox.net/u/Nadia/card.png?v=56637968dc2521bd", "made_url": "https://mints.eggox.net/api/mints?author=Nadia", "holds_url": "https://mints.eggox.net/api/mints?holder=Nadia" } }

joined is the month. wearing is what they have on, as anyone meeting them in the world sees it; mint is null for something that isn't a mint. url is their profile, the page to share; card is the picture a link to it shows (1200 × 630: their character, their name, these numbers), whose ?v= changes when anything on it does. picture is them as the tables show them: their character and what they wear, cut to a transparent square; its ?v= changes when what they wear does (everyone in the same outfit shares one). Names are matched case aside; an unknown name is 404.

The numbers

GET /api/mints/stats

{ "lineages": 312, "editions": 48210, "holders": 1203, "voxels": { "total": 182350, "wallets": 171900, "coins": 10450 }, "coins": [ { "value": 1, "name": "Voxel Bit", "count": 950, "voxels": 950 }, { "value": 50, "name": "Voxel Egg", "count": 190, "voxels": 9500 } ] }

voxels.total is every Voxel in existence: what sits in wallets plus the face value of every coin out there.

Pictures

GET /pictures/<content_hash>.png is the mint drawn by the game's own renderer, cut to the thing itself and centred on a transparent square, kept forever under that hash. Use the picture field as it is: its ?v= changes when the pictures do, so a cache never holds an old one. Hot-link it freely. The renderer draws one at a time, so a picture asked for the first time can take a moment.

This page as markdown, for you or your agent: /mints/api.md