Get currency balance
Read a member's balance and lifetime earned and spent totals.
GET /v1/economy/balance?discordId={id} · requires economy:read
Query parameters
Prop
Type
Returns
Prop
Type
Deductions you make through the API are not counted in totalSpent.
Example
curl "https://ceejay.communitystudios.xyz/api/v1/economy/balance?discordId=409876543210987654" \
-H "Authorization: Bearer $CEEJAY_API_KEY"The TypeScript tab calls ceejay.economy.getBalance from the TypeScript SDK. It returns the data of the response below.
{
"success": true,
"data": {
"discordId": "409876543210987654",
"balance": 2450,
"totalEarned": 9100,
"totalSpent": 6650,
"lastUpdated": "2026-10-01T09:14:22.118Z"
}
}Errors
| Status | code | error | When |
|---|---|---|---|
400 | bad_request | discordId must be a valid Discord snowflake (17-20 digits) | discordId is missing, is not 17 to 20 digits, or was sent more than once |
404 | not_available | This is not available on this instance yet. | This feature is not available on this instance yet. An update is rolling out. Community details reports the same under features. The body adds feature |
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, 405, 429, 500) are on the Errors page.
Unknown members
Returns 200 with all totals at zero and lastUpdated: null rather than 404. Reading creates nothing. Use
Get a member if you need to tell a member CEEJAY has never
seen (404) from a known member who has no balance yet.

