CEEJAYDocs

List players

List the players of a game who are connected to a Discord member, newest connection first, a page at a time.

GET /v1/games/{game}/players · requires players:read

Call it to walk through the players of a game: to see who is connected, or to keep a copy of the connections on your own server. The list contains each player's connection, not the member summary or the fields: read one player with Get a player for those. A player who has not connected is not in the list.

Path parameters

Prop

Type

Query parameters

Prop

Type

Returns

data is the list of the players of this page, newest connection first. page is returned alongside it: page.nextCursor is the text to send as cursor for the next page, or null when this is the last page, and page.limit is the page size that was used.

Prop

Type

Example

Request
curl "https://ceejay.communitystudios.xyz/api/v1/games/rugby_manager/players?limit=2" \
  -H "Authorization: Bearer $CEEJAY_API_KEY"

The TypeScript tab calls ceejay.players.list from the TypeScript SDK. It returns the whole response below, with the list in data.

200 OK
{
  "success": true,
  "data": [
    {
      "playerId": "p_19",
      "discordId": "409876543210987654",
      "playerName": "Nova77",
      "proof": "verified",
      "origin": "connect",
      "connectedAt": "2026-10-08T18:06:40.000Z",
      "membership": "member"
    },
    {
      "playerId": "p_77",
      "discordId": "521776109822345216",
      "playerName": null,
      "proof": "basic",
      "origin": "connect",
      "connectedAt": "2026-10-08T17:41:12.000Z",
      "membership": "pending"
    }
  ],
  "page": {
    "nextCursor": "WzQyXQ",
    "limit": 2
  }
}

Paging

Send page.nextCursor back as cursor for the next page, and stop when it is null. The list is ordered by the number of the connection, newest first, so a player who connects while you are paging may appear on the page you already read, and is not skipped. A cursor is not a secret and is not signed, but it only starts a page somewhere else in your own game's list.

A paused game can still be read.

The scope

players:read is part of *, so a Full Access key can call this.

Limits

This request is counted against the key's own requests per minute: 60 unless a higher limit was set on it, and never more than 600. Rate limits has the numbers and the headers.

Errors

StatuscodeerrorWhen
400bad_requestlimit must be a whole number of 0 or morelimit is not a whole number of 0 or more written in digits, or is sent more than once
400bad_requestcursor is not one this list gavecursor is empty, cannot be read, or is sent more than once. Send page.nextCursor exactly as returned
403community_not_activeThis community is no longer active on CEEJAYThe community removed CEEJAY from its server
403game_not_allowedThis API key is limited to other gamesThe key is limited to other games of the community
403audience_not_allowedA game made for children cannot connect players or send player dataThe game is set up as made for children. Such a game connects nobody and takes no player data
404not_availableThis is not available on this instance yet.Connect is not enabled for this instance. It is enabled per instance. The body adds feature, which is players. Retrying will not change the response
404game_not_foundGame not foundThe community has no game with this slug, or the game was removed. A slug that is not 2 to 32 lower-case letters, digits and underscores, starting with a letter, gets this response too

Every error body also carries requestId, and a 400 with the code bad_request names the invalid field in field. Match on code, not on the message text, which can change.

The errors every request shares (401, 403 for a missing scope, 405, 429, 500) are on the Errors page.

On this page

Community StudiosPrivacyTerms