CEEJAYDocs

Get a member

Returns a member's profile, activity totals, currency balance and linked platform accounts in one call.

GET /v1/members/{discordId} · requires members:read

Path parameters

Prop

Type

Returns

Prop

Type

economy contains balance, totalEarned and totalSpent, all zero when the member has no balance yet. Each entry of connections is an account that is linked now (a link that was disconnected is left out). A game account the member connected themselves through Connect is listed only for a key that has the players:read scope, which a * key does. An account your own server linked with Link an account is always listed. A secret key that is limited to some games lists the connections to those games only, and the accounts that belong to no game:

Prop

Type

proof tells you how far a game's playerId can be trusted:

proofWhat it means
verifiedThe player was verified: by the game, with a pass from your server or a sign-in token, or by your own server linking it with Link an account
basicThe member connected through Connect with a player ID the game supplied and CEEJAY did not verify. Anyone with the public key a game ships with can supply any ID, so nothing confirms that the player is theirs. Do not grant rewards for a basic connection
nullThe account is not a connection to a game set up for Connect, or Connect is not enabled on this instance

The response also includes the original field names. They contain the same values, and remain for as long as version 1 exists.

Deprecated field, still sentSame value as
platformUserIdplayerId
platformUsernameplayerName

Example

Request
curl "https://ceejay.communitystudios.xyz/api/v1/members/409876543210987654" \
  -H "Authorization: Bearer $CEEJAY_API_KEY"

The TypeScript example uses ceejay.members.get from the TypeScript SDK. It returns the data of the response below.

200 OK
{
  "success": true,
  "data": {
    "discordId": "409876543210987654",
    "displayName": "nova",
    "avatarUrl": "https://cdn.discordapp.com/avatars/409876543210987654/a1b2c3d4e5f6.png",
    "xp": 8450,
    "level": 12,
    "totalMessages": 3411,
    "totalVoiceMinutes": 862,
    "joinedAt": "2025-11-04T18:22:07.000Z",
    "lastUpdated": "2026-10-01T09:14:22.118Z",
    "economy": {
      "balance": 2450,
      "totalEarned": 9100,
      "totalSpent": 6650
    },
    "connections": [
      {
        "platform": "twitch",
        "platformUserId": "123456789",
        "platformUsername": "novaplays",
        "playerId": "123456789",
        "playerName": "novaplays",
        "connectedAt": "2026-03-12T16:40:11.000Z",
        "proof": null
      }
    ]
  }
}

Errors

StatuscodeerrorWhen
400bad_requestdiscordId must be a valid Discord snowflake (17-20 digits)The Discord ID in the path is not 17 to 20 digits
404member_not_foundMember not foundCEEJAY has no profile for this ID on your server. CEEJAY does not query Discord

Every error body also includes requestId, and a 400 with the code bad_request identifies the invalid field in field. Match on code; message text can change.

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

404 versus empty

A member CEEJAY has no profile for returns 404. A member who exists but has no currency returns 200 with a zeroed economy object, so a 404 always means "unknown member", never "no activity".

On this page

Community StudiosPrivacyTerms