CEEJAYDocs

Get a player

Read one player of a game: who they are connected to, the member summary, and the approved fields of the game.

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

Call it when your server needs to know who a player is in the community: the member they are connected to, the member's level and coins, and the values CEEJAY stores for the player. A player is found by the game's own ID. Connect explains how a player is connected, and Player data how values get onto them.

Path parameters

Prop

Type

Returns

Prop

Type

player holds:

Prop

Type

Example

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

The TypeScript tab calls ceejay.players.get from the TypeScript SDK. It returns the data of the response below.

200 OK
{
  "success": true,
  "data": {
    "player": {
      "playerId": "p_19",
      "discordId": "409876543210987654",
      "playerName": "Nova77",
      "proof": "verified",
      "origin": "connect",
      "connectedAt": "2026-10-08T18:06:40.000Z",
      "membership": "member",
      "sharing": {
        "agreed": ["progress", "activity"],
        "needed": []
      }
    },
    "member": {
      "displayName": "Nova",
      "avatarUrl": "https://cdn.discordapp.com/avatars/409876543210987654/a1b2c3d4e5f60718293a4b5c6d7e8f90.png",
      "level": 12,
      "xp": 5420,
      "coins": 1450
    },
    "fields": {
      "std.level": 14,
      "std.last_played": "2026-10-07",
      "league_position": 3,
      "club": "Harbour Town"
    }
  }
}

The fields

fields is keyed by the fixed key of each field in the field map: std.level for a standard field, or the key of a field of the game's own. Number fields return numbers and yes or no fields return true or false. A field with no value yet is left out, not null. When the member is not in the server (player.membership is not_member or left), fields is empty and member is null: consent covers server members only.

A sensitive field is never returned, to any key: no scope adds it. Your game already has these values. The same goes for a field that is still proposed or that the community's team marked unused.

Where the numbers come from

The member's name, avatar, level, XP and coins are read from the data CEEJAY's bot stores, not from Discord at the time of the request, so the request does not call Discord's API and can be made often. The data is as current as the bot's last event for that member. membership is read the same way.

A player who has not connected is not found here. When the game holds data for players who have not connected (the community's team enables this), and some is held for this ID, the response is still 404 with the code player_not_found, and its body adds held: true. The held data is not returned: it is attached to the member only when the player connects and is verified.

A paused game can still be read.

The scope

players:read is part of *, so a Full Access key can call this. It also decides whether Get a member lists the game accounts a member connected themselves.

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_player_idplayerId must be 1 to 128 characters: letters, digits and . _ : @ | + = -, starting with a letter or a digitThe player ID in the URL path is longer than 128 characters, or contains a character that is not allowed (letters, digits and . _ : @ | + = -, starting with a letter or a digit)
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
404player_not_foundNo connected player has this playerIdNo active connection exists for this player ID. When the game holds data for players who have not connected and has some for this ID, the body adds held: true

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