Create a new GlobalLeaderboards SDK instance
Your API key from GlobalLeaderboards.net
Optionalconfig: Partial<GlobalLeaderboardsConfig>Optional configuration options
Default leaderboard ID for simplified submit() calls
API base URL (default: https://api.globalleaderboards.net)
WebSocket URL (default: wss://api.globalleaderboards.net)
Request timeout in ms (default: 30000)
Enable automatic retry (default: true)
Maximum retry attempts (default: 3)
Submit a score to a leaderboard with validation
Supports three signature variations:
submit(userId, score) - Uses default leaderboard IDsubmit(userId, score, leaderboardId) - Specify leaderboardsubmit(userId, score, options) - Full options objectWhen offline or queue not empty, submissions are queued and processed when online.
Unique user identifier
Score value (must be >= 0)
OptionalleaderboardIdOrOptions: Leaderboard ID string or options object
Score submission response or queued response
// Using default leaderboard
await leaderboard.submit('user-123', 1500)
// Specify leaderboard
await leaderboard.submit('user-123', 1500, 'leaderboard-456')
// Full options
await leaderboard.submit('user-123', 1500, {
leaderboardId: 'leaderboard-456',
userName: 'PlayerOne',
metadata: { level: 5 }
})
Get paginated leaderboard entries
Leaderboard ID to retrieve
Optionaloptions: { page?: number; limit?: number; aroundUser?: string }Query options
Optionalpage?: numberPage number (default: 1)
Optionallimit?: numberResults per page (default: 20, max: 100)
OptionalaroundUser?: stringCenter results around specific user ID
Leaderboard entries with pagination info
Submit multiple scores in bulk for better performance
Accepts mixed formats for flexibility:
[userId, score] - Uses default leaderboard[userId, score, leaderboardId] - Specify leaderboardArray of score submissions in various formats (max 100)
Bulk submission response with individual results and summary
const results = await leaderboard.submitBulk([
['user-123', 1000], // Uses default leaderboard
['user-456', 2000, 'leaderboard-789'], // Specific leaderboard
{ // Full options
userId: 'user-789',
score: 3000,
leaderboardId: 'leaderboard-789',
userName: 'TopPlayer',
metadata: { level: 10 }
}
])
Get all scores for a user across leaderboards
User ID to get scores for
Optionaloptions: { page?: number; limit?: number }Query options
Optionalpage?: numberPage number (default: 1)
Optionallimit?: numberResults per page (default: 20)
User scores with pagination and summary stats
Connect to WebSocket for real-time leaderboard updates
WebSocket connections now work through the main API domain with full Cloudflare proxy protection. Both WebSocket and SSE are supported options for real-time updates. Choose based on your specific needs:
Event handlers for WebSocket events
WebSocket event handlers
OptionalonConnect?: () => voidCalled when connection is established
OptionalonDisconnect?: (code: number, reason: string) => voidCalled when connection is closed
OptionalonError?: (error: Error) => voidCalled when an error occurs
OptionalonLeaderboardUpdate?: (Called when leaderboard is updated
OptionalonUserRankUpdate?: (Called when user rank changes
OptionalonMessage?: (message: WebSocketMessage) => voidCalled for any message
OptionalonReconnecting?: (attempt: number, maxAttempts: number, nextDelay: number) => voidCalled when starting a reconnection attempt
Optionaloptions: {Connection options
OptionalleaderboardId?: stringInitial leaderboard to subscribe to
OptionaluserId?: stringUser ID for personalized updates
OptionalmaxReconnectAttempts?: numberMax reconnection attempts
OptionalreconnectDelay?: numberDelay between reconnection attempts in ms
WebSocket client instance
Connect to Server-Sent Events (SSE) for real-time leaderboard updates
This is the recommended method for real-time updates. SSE provides:
Leaderboard to connect to
Event handlers for SSE events
Event handlers for SSE
OptionalonConnect?: () => voidOptionalonDisconnect?: () => voidOptionalonError?: (error: GlobalLeaderboardsError) => voidOptionalonLeaderboardUpdate?: (data: SSELeaderboardUpdateEvent) => voidOptionalonHeartbeat?: (data: { connectionId: string; serverTime: string }) => voidOptionalonMessage?: (message: any) => voidOptionaloptions: SSEConnectionOptionsConnection options
SSE connection options
OptionaluserId?: stringOptionalincludeMetadata?: booleanOptionaltopN?: numberSSE connection object with close method
Get API information and available endpoints
API info including version, endpoints, and documentation URL
Perform a basic health check on the API
Health status with version and timestamp
Perform a detailed health check with individual service statuses
Detailed health info including database, cache, and storage status
Register event handler for queue events
Event type to listen for
Handler function
Unregister event handler
Event type
Handler function to remove
Get current offline queue status
Queue information including size and processing state
Manually trigger offline queue processing
Promise that resolves when processing is complete
GlobalLeaderboards SDK client for interacting with the GlobalLeaderboards.net API
Example