Community events and challenges are public, including their live leaderboards, so a society site or a stream overlay can show standings without anybody signing in.

All paths are relative to https://api.entropiacentral.com. Managing an event is done through the site and is not covered here; see running your event.

Listing events

http
GET /events?status=Active&pageNumber=1&pageSize=20
ParameterNotes
searchMatches the event name
typeEvent type
statusEvent status, for example the active ones
sortByDefaults to StartDate
sortOrderasc or desc, defaults to desc
pageNumber, pageSizeDefault to 1 and 20

List items are deliberately light: name, slug, type, status, dates, organiser, participant and category counts, and the banner. Fetch the detail endpoint when you need more.

http
GET /events/{slug}

Event leaderboards

http
GET /events/{slug}/leaderboard/{categoryId}?pageNumber=1&pageSize=50

Standings for one category of an event. An event can have several categories scored independently, which is why the category id is part of the path rather than optional; the ids come from the event detail response.

The response carries items, totalCount, pageNumber, pageSize and totalPages.

Standings update as globals are matched, so this endpoint is live during an event. If you are displaying it during a competition, use the SignalR hubs for push updates rather than polling this on a timer.

http
GET /events/{slug}/globals?offset=0&pageSize=10&search=&sortBy=&sortDir=

The globals that scored for an event. Note this one takes an offset rather than a page number, unlike the leaderboard next to it.

http
GET /events/{slug}/participants
GET /events/{slug}/teams
GET /events/{slug}/statistics

Participants and team rosters are public so entrants can confirm they are registered. Statistics cover the event as a whole, including its top creatures.

http
GET /events/templates

The event templates available when creating one, which is useful mainly for describing what kinds of events exist.

Challenges

http
GET /challenges?status=&search=&pageNumber=1&pageSize=20
GET /challenges/{slug}

Challenges are tiered goals rather than a competition between entrants, so instead of a leaderboard they expose progress and completions.

http
GET /challenges/{slug}/progress/{avatarName}

One avatar's progress through a challenge. Takes the avatar name, not a slug, and returns 404 when that avatar has no progress recorded rather than an empty result. Treat 404 as "has not started", not as an error.

http
GET /challenges/{slug}/completions?pageNumber=1&pageSize=50
GET /challenges/{slug}/participants?pageNumber=1&pageSize=50

Who has finished it, and who is taking part.

http
GET /challenges/avatar/{avatarName}?pageNumber=1&pageSize=20

Every challenge one avatar is progressing through, which is the endpoint to use for a personal progress panel rather than fetching each challenge separately.

http
GET /challenges/{slug}/trophy

The trophy awarded for completing it.

Notes

Slugs are stable, so an event or challenge URL you store keeps working.

Standings and progress are derived from globals as they are matched, and matching is not instantaneous. A global appears in the globals feeds before it is reflected in an event's standings. During a live event that lag is usually seconds; immediately after one closes it is worth waiting before treating the standings as final.