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
      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
    • Upload User Avatar
      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
    • 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
      • Get a single leaderboard by ID
        GET
      • Create a new leaderboard
        POST
      • Update an existing leaderboard
        PATCH
      • Delete a leaderboard
        DELETE
    • Purchase History
      • Update purchase history redemption instructions or voucher details
    • Personalization Service
      • Appearance
        • Theme Color Form Update
        • Server Bot
        • Meta
        • Name & Uri
    • Store
      • Get store configuration
      • Update store configuration
    • Categories
      • List store categories
      • Create store category
      • Update store category
      • Delete store category
      • Get store category by ID
    • Products
      • List store products
      • Create store product
      • Update store product
      • Delete store product
      • Get store product by ID
  • Community
    • Create new community
  • 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 leaderboard for the API-key's community and returns the created leaderboard document.
Use this when a partner integration needs to create a custom leaderboard that is immediately readable in the ReturningAI UI.
Authentication:
Bearer API key in Authorization header
Required permission: leaderboard
Community is resolved from the API key token; do not pass communityID
Returns 401 if missing, invalid, or insufficient
Side effects:
Creates a leaderboard in the resolved community
Publishes the create:leaderboard command through the partner publisher path
Gamification service processes the command and persists the leaderboard
New leaderboard appears in the custom leaderboard UI after persistence
Rate limits:
Standard API rate limits apply
Constraints:
name must be 1-100 characters
slug must be unique per community and match lowercase letters, numbers, and hyphens
New integrations should use rankingField, displayedColumns, startDate, endDate, hasNoEndDate, isEnabled, and isPreviewEnabled
Create requires rankingField or legacy rankBy
Create requires displayedColumns or both legacy displayedFields and displayFieldsOrder
Create requires startDate or legacy duration.start
Create requires isEnabled or legacy enabled
displayedColumns has max 50 items
allowedTimeFilters values are all-time, daily, weekly, monthly, or yearly
widget.whitelistedDomains has max 50 domains
Legacy aliases are accepted for backward compatibility, but flat fields win when both are present
Example — create:
{
  "name": "April Last Leaderboard",
  "slug": "april-last-leaderboard",
  "description": "Monthly leaderboard created through the partner API.",
  "image": "https://cdn.example.com/leaderboards/april.png",
  "rankingField": "currencies",
  "displayedColumns": [
    { "column": "user", "visible": true, "order": 0 },
    { "column": "currencies", "visible": true, "order": 1 }
  ],
  "topRankOnly": false,
  "topRankLimit": 10,
  "onlyPositiveRanks": false,
  "includeDummyUsers": false,
  "startDate": "2026-01-30T19:30:00.000Z",
  "endDate": "2026-12-31T23:59:59.999Z",
  "hasNoEndDate": true,
  "timeZone": 5.3,
  "startTime": { "hours": 5, "minutes": 0, "ampm": "AM" },
  "endTime": { "hours": 11, "minutes": 59, "ampm": "PM" },
  "allowedTimeFilters": ["all-time", "monthly", "weekly"],
  "allowedUsersToRank": [],
  "allowedRolesToRank": ["507f1f77bcf86cd799439014"],
  "allowedTagsToRank": [],
  "allowedUsersToView": [],
  "allowedRolesToView": ["507f1f77bcf86cd799439014"],
  "allowedTagsToView": [],
  "isEnabled": true,
  "isPreviewEnabled": false,
  "displayOrder": 3,
  "widget": {
    "enabled": false,
    "whitelistedDomains": ["example.com"],
    "size": { "type": "custom", "value": { "width": 420, "height": 640 } },
    "button": { "enabled": true, "text": "View leaderboard", "link": "https://example.com/leaderboard" }
  }
}
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
Leaderboard created successfully. The response envelope is required; leaderboard data fields are documented but optional for compatibility with projected or legacy shapes.
Bodyapplication/json

🟠400Bad Request
🟠401Unauthorized
🟠409
🔴500Server Error
🔴502Bad Gateway
Request Request Example
Shell
JavaScript
Java
Swift
curl --location 'https://api.returning.ai/v1/leaderboards' \
--header 'Authorization: Bearer XXXXXX' \
--header 'Content-Type: application/json' \
--data '{
    "name": "April Last Leaderboard",
    "slug": "april-last-leaderboard",
    "description": "Monthly leaderboard updated through the partner API.",
    "image": "https://cdn.example.com/leaderboards/april.png",
    "rankingField": "currencies",
    "displayedColumns": [
        {
            "column": "user",
            "visible": true,
            "order": 0
        },
        {
            "column": "currencies",
            "visible": true,
            "order": 1
        }
    ],
    "topRankOnly": false,
    "topRankLimit": 10,
    "onlyPositiveRanks": false,
    "includeDummyUsers": false,
    "startDate": "2026-01-30T19:30:00.000Z",
    "endDate": "2026-12-31T23:59:59.999Z",
    "hasNoEndDate": true,
    "timeZone": 5.3,
    "startTime": {
        "hours": 5,
        "minutes": 0,
        "ampm": "AM"
    },
    "endTime": {
        "hours": 11,
        "minutes": 59,
        "ampm": "PM"
    },
    "allowedTimeFilters": [
        "all-time",
        "monthly",
        "weekly"
    ],
    "allowedUsersToRank": [],
    "allowedRolesToRank": [
        "507f1f77bcf86cd799439014"
    ],
    "allowedTagsToRank": [],
    "allowedUsersToView": [],
    "allowedRolesToView": [
        "507f1f77bcf86cd799439014"
    ],
    "allowedTagsToView": [],
    "isEnabled": true,
    "isPreviewEnabled": false,
    "displayOrder": 3,
    "widget": {
        "enabled": false,
        "whitelistedDomains": [
            "example.com"
        ],
        "size": {
            "type": "custom",
            "value": {
                "width": 420,
                "height": 640
            }
        },
        "button": {
            "enabled": true,
            "text": "View leaderboard",
            "link": "https://example.com/leaderboard"
        }
    }
}'
Response Response Example
201 - Success Example
{
    "meta": {
        "status": "success",
        "statusCode": 201
    },
    "message": "Create leaderboard success.",
    "data": {
        "_id": "507f1f77bcf86cd799439012",
        "communityID": "6502c97314a3e564c5bbfa84",
        "name": "April Last Leaderboard",
        "slug": "april-last-leaderboard",
        "description": "Monthly leaderboard updated through the partner API.",
        "image": "https://cdn.example.com/leaderboards/april.png",
        "rankBy": "currencies",
        "displayedFields": [
            "user",
            "currencies"
        ],
        "displayFieldsOrder": [
            "user",
            "currencies"
        ],
        "timeFilters": [
            "all-time",
            "monthly",
            "weekly"
        ],
        "performanceDisplay": {
            "showTop": {
                "enabled": false,
                "value": 10
            },
            "showPositive": {
                "enabled": false
            },
            "showDummy": {
                "enabled": false
            }
        },
        "duration": {
            "start": "2026-01-30T19:30:00.000Z",
            "end": "2026-12-31T23:59:59.999Z",
            "noEndDate": true,
            "timeZone": 5.3,
            "startTime": {
                "hours": 5,
                "minutes": 0,
                "ampm": "AM"
            },
            "endTime": {
                "hours": 11,
                "minutes": 59,
                "ampm": "PM"
            }
        },
        "rankedUserRoles": {
            "users": [],
            "roles": [
                "507f1f77bcf86cd799439014"
            ],
            "tags": []
        },
        "viewPermissionUserRoles": {
            "users": [],
            "roles": [
                "507f1f77bcf86cd799439014"
            ],
            "tags": []
        },
        "widget": {
            "enabled": false,
            "whitelistedDomains": [
                "example.com"
            ],
            "size": {
                "type": "custom",
                "value": {
                    "width": 420,
                    "height": 640
                }
            },
            "button": {
                "enabled": true,
                "text": "View leaderboard",
                "link": "https://example.com/leaderboard"
            }
        },
        "enabled": true,
        "previewEnabled": false,
        "displayOrder": 3,
        "selected": false,
        "updatedAt": "2026-04-13T12:00:00.000Z",
        "createdAt": "2026-04-13T12:00:00.000Z"
    }
}
Modified at 2026-05-04 11:06:30
Previous
Get a single leaderboard by ID
Next
Update an existing leaderboard
Built with