1. Leaderboards
Returning.AI
  • Getting Started
  • Authentication
    • Secure Auth
      GET
    • register
      POST
    • verify email
      POST
    • login
      POST
    • Secure Auth
      GET
  • Users
    • Get Users with Filters
      POST
    • Create New User
      POST
    • Get User Data Copy
      POST
    • Manage User Account
      POST
    • Get User Gamification Stats
      POST
    • Get all mini game logs by user email
      POST
    • Get user's current Mini Games and Streak stats
      POST
  • Roles & Permissions
    • role list of server
      GET
    • create new role
      POST
    • update role
      PUT
    • delete role
      DELETE
    • get role list of user on a server
      GET
    • add role to a user on a server
      POST
    • remove role from a user on a server
      POST
  • Servers
    • create new server
    • get my servers
    • update server
  • Channels
  • Messaging
    • Get Messages
    • Send Message
    • Reply Message
    • React Message
    • Upload Image
  • User Data
    • Get Specific User Field
    • Update Custom User Field
    • Delete Custom User Field
    • Get all user field histories in a community
    • Get user field histories for a specific field
    • Get user field histories for a specific user
    • Get user field histories of specific user field and user
    • Create user field history for specific user
  • Gamification
    • get badges list
    • create new badge
    • update badge
    • delete badge
    • remove badge from user
    • award badge to user
    • Get Tier Info
    • Get User Gamification History
    • Get User Gamification Logs
  • Streaks & Mini Games
    • Get Streak Logs
    • Edit wheel information for each user
    • Edit wheel information for each user
  • Rewards & Redemptions
    • Update redemption transaction status
    • Get all redemption transactions by user email
    • Get All Redemption Statuses
    • Get Redemption Status by ID
    • Get all redemption transactions by Community
    • Create Redemption Status
    • Get redemption transaction status history
  • Chart Analysis
    • Create Analysis
    • Get Analysis
    • Update Analysis
    • Delete Analysis
    • List Analyses
    • Append Drawings
  • Bulk Operations
    • Bulk Import
    • Get All Bulk Update
    • Check Bulk Update Status
    • Check Bulk Update Details
    • Bulk Update Copy
    • Premium Currency Bulk Update
  • Application API
    • Community Users
      • Get community users
      • Get user
  • Integration API
  • Channels
    • Iframe
    • channel list of server
    • get channels list
    • create new channel
    • update channel
    • delete channel
    • Get Channels List
  • Events
    • Outgoing webhooks
      • Encryption
      • User Joins Server
      • User Visits server
      • New Message Posted Anywhere
      • New Message Posted To channel
      • Purchased Store Item
    • Incoming webhooks
      • API Keys & Encryption
      • Send message into channels
      • Update Custom User Fields
      • Update In-game currency
  • Widgets
    • Authenticated Widgets
    • Public widgets
  • Features
  • Community Analytics
    • Get Loyalty Overview
  • Partner API
    • Leaderboards
      • List leaderboards with pagination
        GET
      • Create a new leaderboard
        POST
      • Get a single leaderboard by ID
        GET
      • Update an existing leaderboard
        PATCH
      • Delete a leaderboard
        DELETE
    • Purchase History
      • Update purchase history redemption instructions
    • Personalization Service
      • Appearance
        • Theme Color Form Update
        • Server Bot
        • Meta
        • Name & Uri
  • Schemas
    • Sample Schemas
    • Schemas
    • Outgoing webhooks
    • Analysis
    • Pet
    • ValidationError
    • Purchased store item
    • UpdateAnalysisRequest
    • Category
    • NotFoundError
    • New message posted to channel
    • AppendDrawingsRequest
    • Tag
    • InternalServerError
    • User visits server
    • CreateAnalysisResponse
    • NotImplementedError
    • User join server
    • GetAnalysisResponse
    • CreateUserFieldHistoryResponse
    • ErrorResponse
    • UpdateAnalysisResponse
    • CreateUserFieldHistorySuccessResponse
    • AppendDrawingsResponse
    • UserFieldHistoryItem
    • AnalysisMetadata
    • GetUserFieldHistoriesResponse
    • Expiry
    • UserFieldHistoriesValidationError
    • Levels
    • UserFieldHistoriesMetaWithValidation
    • LevelEntry
    • UserFieldHistoriesMetaWithPagination
    • Drawing
    • GetUserFieldHistoriesSuccessResponse
    • HorizontalLineDrawing
    • CreateUserFieldResponse
    • LineDrawing
    • CreateUserFieldSuccessResponse
    • RectangleDrawing
    • DeleteUserFieldResponse
    • ParallelDrawing
    • DeleteUserFieldSuccessResponse
    • FibonacciRetracementDrawing
    • UserFieldCreator
    • Coordinate
    • GetUserFieldResponse
    • DrawingStyle
    • GetUserFieldSuccessResponse
    • AnalysisDetail
    • ValidationErrorItem
    • AnalysisSummary
    • GetUserFieldsMetaResponse
    • CreateAnalysisRequest
    • CreatorInfo
    • ListAnalysesResponse
    • UserFieldResponse
    • GetUserFieldsSuccessResponse
    • UpdateUserFieldResponse
    • UpdateUserFieldPayload
    • UpdateUserFieldSuccessResponse
    • MetaResponse
    • GetUserResponse
    • GetUserSuccessResponse
  1. Leaderboards

Create a new leaderboard

POST
/leaderboards
Creates a new leaderboard in the API-key's community and returns the created document.
Use this when a partner integration needs to provision a new leaderboard (e.g. launching a monthly trader ranking, creating an embeddable widget, or seeding leaderboards as part of community onboarding).
Authentication:
Bearer API key in Authorization header
API key must have the leaderboard permission
Community is resolved from the API key token — do not pass communityID
Returns 401 if the key is missing, invalid, or lacks the required permission
Side effects:
Inserts a new leaderboard document in the gamification service
Publishes the create:leaderboard pub/sub event; the gamification service processes it and performs the DB write
Returns 502 if the upstream gamification service is unreachable or the publisher times out
Rate limits:
Standard API rate limits apply
Constraints:
slug must be unique within the community — conflicts return 409
slug must match ^[a-z0-9]+(?:-[a-z0-9]+)*$ (lowercase, digits, hyphens)
name, slug: 1–100 chars
description: max 2000 chars (defaults to empty string)
rankBy: 1–100 chars, only letters/digits/hyphens/underscores (system or custom field name)
displayedFields, displayFieldsOrder: up to 50 entries, each max 100 chars
timeFilters: entries must be within the allowed enum (e.g. all-time, monthly, weekly, daily)
duration.start required; duration.end only required when duration.noEndDate is false
widget.whitelistedDomains: up to configured max; each domain must be a valid FQDN
widget.theme.* colours must match the CSS colour regex
Regex/enum violations return 400
Example — create:
{
  "name": "Top Traders",
  "slug": "top-traders",
  "description": "Monthly trading leaderboard",
  "rankBy": "currencies",
  "displayedFields": ["name", "score"],
  "displayFieldsOrder": ["name", "score"],
  "timeFilters": ["all-time", "monthly"],
  "performanceDisplay": {
    "showTop": { "enabled": true, "value": 10 },
    "showPositive": { "enabled": true },
    "showDummy": { "enabled": false }
  },
  "duration": {
    "start": "2026-01-01T00:00:00.000Z",
    "end": "2026-12-31T23:59:59.999Z",
    "noEndDate": false,
    "timeZone": 7
  },
  "enabled": true,
  "previewEnabled": false
}
Related endpoints:
GET /leaderboards — list leaderboards
GET /leaderboards/{leaderboardID} — read a single leaderboard
PATCH /leaderboards/{leaderboardID} — update a leaderboard
DELETE /leaderboards/{leaderboardID} — delete a leaderboard

Request

Header Params

Body Params application/jsonRequired

Examples

Responses

🟢201Created
application/json
Created leaderboard
Body

🟠400Bad Request
🟠401Unauthorized
🟠409
🔴500Server Error
🔴502Bad Gateway
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST 'https://api.returning.ai/v1/leaderboards' \
--header 'Authorization: Bearer XXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "Top Traders",
    "slug": "top-traders",
    "description": "Monthly trading leaderboard",
    "rankBy": "currencies",
    "displayedFields": [
        "name",
        "score"
    ],
    "displayFieldsOrder": [
        "name",
        "score"
    ],
    "timeFilters": [
        "all-time",
        "monthly"
    ],
    "performanceDisplay": {
        "showTop": {
            "enabled": true,
            "value": 10
        },
        "showPositive": {
            "enabled": true
        },
        "showDummy": {
            "enabled": false
        }
    },
    "duration": {
        "start": "2026-01-01T00:00:00.000Z",
        "end": "2026-12-31T23:59:59.999Z",
        "noEndDate": false,
        "timeZone": 7
    },
    "enabled": true,
    "previewEnabled": false
}'
Response Response Example
201 - Success Example
{
    "meta": {
        "status": "success",
        "statusCode": 201
    },
    "message": "Create leaderboard success.",
    "data": {
        "_id": "507f1f77bcf86cd799439012",
        "communityID": "507f1f77bcf86cd799439013",
        "name": "Top Traders",
        "slug": "top-traders",
        "description": "Monthly trading leaderboard",
        "rankBy": "currencies",
        "displayedFields": [
            "name",
            "score"
        ],
        "displayFieldsOrder": [
            "name",
            "score"
        ],
        "timeFilters": [
            "all-time",
            "monthly"
        ],
        "duration": {
            "start": "2026-01-01T00:00:00.000Z",
            "end": "2026-12-31T23:59:59.999Z",
            "noEndDate": false,
            "timeZone": 7
        },
        "enabled": true,
        "previewEnabled": false,
        "selected": false,
        "createdAt": "2026-04-20T00:00:00.000Z",
        "updatedAt": "2026-04-20T00:00:00.000Z"
    }
}
Modified at 2026-04-20 06:48:15
Previous
List leaderboards with pagination
Next
Get a single leaderboard by ID
Built with