Entropia Central's public data is readable over a plain REST API. Globals, leaderboards, avatar and team profiles, the wiki, events and challenges, and site-wide statistics are all available without credentials.

http
https://api.entropiacentral.com

Everything documented in this section is public and read-only. Authenticated endpoints are not documented here.

What you can read without credentials

AreaReference
Globals, HOFs, ATHs and leaderboardsTracker data
Items, creatures, blueprints and the rest of the wikiWiki
Avatars, teams, search and site statisticsAvatars and statistics
Community events and challengesEvents and challenges
Live push feeds instead of pollingSignalR hubs

Browsers cannot call this API directly

Cross-origin requests are only accepted from Entropia Central's own domains. A page served from your own site cannot fetch this API from the browser; the request will be blocked by CORS before it reaches us.

Call it from a server, a script, a desktop app or anything else that is not a browser page on a third-party origin. This is the single most common thing people hit, and it is a deliberate restriction rather than a misconfiguration.

Conventions

Slugs, not ids. Entries are addressed by slug in URLs, and the slugs match the ones in the site's own addresses. If you can see something at entropiacentral.com/wiki/creatures/atrox, then /creatures/atrox is the same entry. Internal integer ids appear in responses but should not be built into your URLs.

Pagination is not uniform. Page size limits differ by endpoint and several are capped low. The differences are real and not accidental, so check the page you are using rather than assuming:

EndpointPage size
/globalsDefaults to 10, maximum 30
/avatars/{slug}/globalsDefaults to 20, maximum 100
/avatars, /teamsFixed at 20, cannot be changed
/events, /challengesDefaults to 20

Invalid parameters return 400. Values outside the accepted bounds are rejected rather than clamped, including a minValue above maxValue or a sortBy outside the accepted fields. Validate before you send.

There is one exception worth knowing. On /avatars/{slug}/globals, an unrecognised value in the comma-separated type filter is silently dropped rather than rejected, and if none of your values are recognised the filter is dropped entirely, returning unfiltered results. A typo there produces plausible-looking data rather than an error.

Dates are UTC. In-game timestamps are recorded in UTC and returned that way.

Errors

Errors come back as JSON with a message:

json
{ "error": "Avatar with slug 'nobody' not found" }

400 means your request was rejected as invalid, 404 means the slug or id does not exist, and 500 means something failed on our side and is worth retrying later.

Being a good consumer

There is no published rate limit, which is not an invitation. The database behind this is large, some endpoints are expensive, and the site's own users share it with you.

Prefer the cached endpoints when polling. /globals/recent, /globals/top-24h and /globals/activity-24h are cache-backed and cheap. A filtered /globals query is not, and polling one on a short interval is the fastest way to cause a problem for everybody.

Use the live feeds instead of polling. If you want globals as they happen, the SignalR hubs push them to you. Polling every few seconds to catch events that arrive every few minutes wastes your resources and ours.

Cache what does not change. Wiki entries change rarely. Fetching the same creature on every page view of your own app is unnecessary.

Walk history by date, not by deep paging. With page sizes capped, pulling a long history means many requests. Filter by date range and step backwards rather than paging deep into an unfiltered list.

Identify yourself. Send a User-Agent that says what your tool is. If something you run causes a problem, that string is the difference between us contacting you and us blocking you.

Reading this documentation programmatically

Every page in this documentation is also published as raw markdown, which is usually easier for a script or an AI agent to consume than the rendered page. Append .md to any documentation URL:

bash
curl https://www.entropiacentral.com/documentation/api-reference/overview.md

The whole corpus in a single file is at /llms-full.txt, and an index of it is at /llms.txt.