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
| Parameter | What it does |
|---|---|
q | A word of the name. |
in | Where q looks: name (the default), author, or any. |
author | An author's name, exactly (case aside). Eggox is the Mint: the Voxel coins and the competition prizes. |
holder | A 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, to | Days (YYYY-MM-DD) the first edition was struck between, both ends included. |
master | alive or destroyed. |
sort | first (first struck, the default), last, name, author, editions, holders, master, version. |
dir | asc or desc. Names go up and numbers and dates down unless told. |
page, per_page | Paging; 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 astatus. Acitizen(someone who has checked their age) is named andurlis their profile. Eggox's own mints areeggox, namedEggox. Nobody else is ever named: anunknownuser (not yet a citizen) and agoneone (who deleted their account) havenamenull, andurlis the one page for all of them. The author of a destroyed master is still the person who held it when it went.creatorisnullonly 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:falsemeans 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_atis when its author destroyed it (nullwhile it's alive, or where that isn't known).blueprintis the master's page, alive or destroyed, ornull.content_hash: the SHA-256 of the mint's bytes, the same certificate the game shows.pictureis drawn from those bytes.coin_value: for a Voxel coin, its face value in Voxels; otherwisenull.award: for a competition prize, the engraving: the competition, the place, the entry, the stars, the day; otherwisenull.
held_by(one mint only): the first ten citizens who hold it, most first.held_by_morecounts the rest, named or not. Nobody else is named:held_by_unknownandheld_by_gonesay 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_byis empty, the two pools arenullandheld_by_moreis everyone. The rest, ten at a time, and a search, are atheld_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