Activity
Who is in your worlds, sampled every ~5 minutes. Headcount only — see “What we can’t tell you” below.
Read at 00:48:54 UTC (just now)
Sampled 1No sample 4
Everything on this page is public. worlds-content-server, /presence/* and the Places API all answer unauthenticated requests. Your address selects which rows you see; it does not protect them.
No address yet
This page needs an address to pick which worlds to show. It is not a login — the data is public either way.
Source ledger
Live3
| Datum | Endpoint | State | Used by |
|---|---|---|---|
| Your worldsWorlds worlds-content-server holds content for, filtered to the address you supplied. A 200 with no rows is a real answer and is shown as an empty list, never as a failure. | GET worlds-content-server.decentraland.org/worlds?authorized_deployer={address} | No sampleprobed just now | /creator-hub/activity · /creator-hub/manage |
| Users online per worldThe worlds server's own instant figure. It lists only rooms that currently have users, and it routinely disagrees with the presence sample — both are shown, neither is reconciled. | GET worlds-content-server.decentraland.org/live-data | Liveprobed just now | /creator-hub/activity · /creator-hub/activity/:world |
| Realm healthWhether the realm is healthy, accepting users, and in sync. | GET catalyst.example.com/about | Live | /creator-hub/activity · /creator-hub/activity/:world |
Sampled3
A missing bucket is not a zero. Rows exist only for the instants a world or scene was live when the sampler ran. History depth is whatever exists, not a fixed window.
| Datum | Endpoint | State | Used by |
|---|---|---|---|
| Headcount per worldThe most recent 5-minute snapshot. A world missing from it was not live when the sampler ran — that is 'no sample', not zero. | GET catalyst.example.com/presence/current/worlds | No sampleprobed just now | /creator-hub/activity · /creator-hub/activity/:world |
| Headcount per sceneOccupancy by parcel pointer. There is no owner field on these rows, which is why parcels can be looked up but never listed. | GET catalyst.example.com/presence/current/scenes | No sampleprobed just now | /creator-hub/activity |
| Occupancy history per worldWhatever snapshots exist, newest first, capped at 5000 rows. Empty cadence buckets are plotted as gaps, never as zeros, and the series never extends past the last sample. | GET catalyst.example.com/presence/worlds/history?world={world}&limit={limit} | Sampled | /creator-hub/activity · /creator-hub/activity/:world |
Unavailable1
| Datum | Endpoint | State | Used by |
|---|---|---|---|
| Sessions, retention, dwell time, device split, FPS (15 fields)404. That API serves /healthz, /api/auth/*, /api/me, /api/admin/* and /api/worlds/{w}/metrics — this route is not among them. The client half exists in this repo with a generated zod model and a drift gate, and stays unused until the route does. | GET decentraland.org/creators-data/api/creators/me/scenes/stats | Unavailable | /creator-hub/scene-analytics |
Not built1
| Datum | Endpoint | State | Used by |
|---|---|---|---|
| Which Genesis parcels are mineNothing on this stack maps a wallet to the parcels it deployed to. /presence/current/scenes reports occupancy by pointer with no owner field, and worlds-content-server's authorized_deployer filter covers worlds only. Today: Look up a pointer directly with ?pointer=x,y. | — | Not built | /creator-hub/activity |
Excluded on purpose5
These are never rendered anywhere in the hub. This list exists so nobody rediscovers them and wires them up.
| Datum | Endpoint | State | Used by |
|---|---|---|---|
| comms.usersCount / bff.userCountBoth read 0 on both realms, on a network that demonstrably has users. | GET catalyst.example.com/about | Excluded | nothing yet |
| Hot scenesReturns [] and fails open to [] on any upstream error, non-JSON body or unreachable host — so an empty answer is indistinguishable from a broken one. | GET catalyst.example.com/hot-scenes | Excluded | nothing yet |
| Parcel detailA stub: empty name and description, and an image URL pointing at 127.0.0.1. | GET catalyst.example.com/v2/parcels/{x}/{y} | Excluded | nothing yet |
| occupancyTotals() for a per-world figureIt Math.maxes three disagreeing sources into one number. The hub shows the sources side by side instead. | — | Excluded | nothing yet |
| worldsBase() as a worlds hostIt rewrites the catalyst hostname to worlds.<domain>, which 404s every path. worlds-content-server.decentraland.org is a different, real host. | GET worlds.example.com/* | Excluded | nothing yet |
