Skip to content

Status Codes

Richard Fu edited this page Jan 3, 2026 · 2 revisions

Status Codes

Complete reference of all RGS status codes returned by the Stake Engine Client functions.

πŸ“‹ Overview

All Stake Engine Client functions return a consistent status structure:

interface Status {
  statusCode: StatusCode;
  statusMessage?: string;
}

βœ… Success Codes

Code Description Functions Meaning
SUCCESS Operation completed successfully All functions Continue normal flow

πŸ” Authentication & Session Codes

Code Description Common Causes Recommended Action
ERR_IS Invalid session or session timeout β€’ Session expired
β€’ Invalid sessionID
β€’ Server restart
β€’ Re-authenticate user
β€’ Redirect to login
β€’ Refresh session token
ERR_ATE Authentication failed/expired β€’ Invalid credentials
β€’ Account disabled
β€’ Token corruption
β€’ Check credentials
β€’ Re-authenticate
β€’ Contact support if persistent

πŸ’° Balance & Financial Codes

Code Description Common Causes Recommended Action
ERR_IPB Insufficient player balance β€’ Balance lower than bet
β€’ Concurrent transactions
β€’ Balance sync issues
β€’ Show current balance
β€’ Suggest smaller bet
β€’ Offer deposit option
ERR_GLE Gambling limits exceeded β€’ Daily limit reached
β€’ Session limit exceeded
β€’ Regulatory limits
β€’ Show limit details
β€’ Suggest lower bet
β€’ Display time until reset

🎲 Game & Betting Codes

Code Description Common Causes Recommended Action
ERR_BNF Bet not found / No active round β€’ No round active
β€’ Round already ended
β€’ Invalid round state
β€’ Check game state
β€’ Start new round
β€’ Often normal for end operations

πŸ”§ System & Server Codes

Code Description Common Causes Recommended Action
ERR_UE Unknown server error β€’ Internal server error
β€’ Database issues
β€’ Service unavailable
β€’ Retry operation
β€’ Show generic error
β€’ Contact support if persistent

πŸ“Š Status Code Usage by Function

authenticate

Status Code Probability Meaning
SUCCESS 95%+ Authentication successful
ERR_IS 3% Invalid/expired session
ERR_ATE 1% Authentication failed
ERR_UE <1% Server error

play

Status Code Probability Meaning
SUCCESS 85%+ Bet placed successfully
ERR_IPB 10% Insufficient balance
ERR_IS 3% Session expired
ERR_GLE 1% Gambling limits exceeded
ERR_UE <1% Server error

endRound

Status Code Probability Meaning
SUCCESS 90%+ Round ended successfully
ERR_BNF 8% No active round (often normal)
ERR_IS 1% Session expired
ERR_UE <1% Server error

getBalance

Status Code Probability Meaning
SUCCESS 95%+ Balance retrieved successfully
ERR_IS 4% Session expired
ERR_UE <1% Server error

endEvent

Status Code Probability Meaning
SUCCESS 90%+ Event tracked successfully
ERR_BNF 7% No active round
ERR_IS 2% Session expired
ERR_UE <1% Server error

forceResult

Status Code Probability Meaning
SUCCESS 95%+ Search completed
ERR_UE 5% Search failed or no results

🎯 Error Handling Strategies

High Priority (Immediate Action Required)

const highPriorityErrors = [
  'ERR_IS',   // Session expired - redirect to login
  'ERR_ATE',  // Authentication failed - re-authenticate
  'ERR_IPB'   // Insufficient balance - show balance error
];

Medium Priority (User Notification)

const mediumPriorityErrors = [
  'ERR_GLE',  // Gambling limits - show limits message
  'ERR_UE'    // Server error - show retry option
];

Low Priority (Often Normal)

const lowPriorityErrors = [
  'ERR_BNF'   // No active round - may be expected
];

πŸ’‘ Status Code Examples

Handling Success

if (response.status?.statusCode === 'SUCCESS') {
  console.log('βœ… Operation successful');
  // Process response data
  processSuccess(response);
}

Handling Authentication Errors

switch (response.status?.statusCode) {
  case 'ERR_IS':
    console.log('πŸ” Session expired');
    redirectToLogin();
    break;
    
  case 'ERR_ATE':
    console.log('🚫 Authentication failed');
    showAuthenticationError();
    break;
}

Handling Financial Errors

switch (response.status?.statusCode) {
  case 'ERR_IPB':
    console.log('πŸ’° Insufficient balance');
    showBalanceError(currentBalance);
    break;
    
  case 'ERR_GLE':
    console.log('🚫 Gambling limits exceeded');
    showLimitsError(dailyLimit, sessionLimit);
    break;
}

Handling System Errors

switch (response.status?.statusCode) {
  case 'ERR_UE':
    console.log('πŸ”§ Server error');
    showRetryDialog();
    break;
    
  case 'ERR_BNF':
    console.log('⚠️ No active round');
    // This might be normal - check context
    if (expectingActiveRound) {
      showRoundStateError();
    }
    break;
}

πŸ“ˆ Error Analytics

Tracking Error Rates

class ErrorAnalytics {
  private static errorCounts: Map<string, number> = new Map();
  private static totalRequests: number = 0;
  
  static trackError(statusCode: string): void {
    this.errorCounts.set(
      statusCode,
      (this.errorCounts.get(statusCode) || 0) + 1
    );
    this.totalRequests++;
  }
  
  static getErrorRate(statusCode: string): number {
    const count = this.errorCounts.get(statusCode) || 0;
    return this.totalRequests > 0 ? (count / this.totalRequests) * 100 : 0;
  }
  
  static getTopErrors(): Array<{code: string, rate: number}> {
    return Array.from(this.errorCounts.entries())
      .map(([code, count]) => ({
        code,
        rate: (count / this.totalRequests) * 100
      }))
      .sort((a, b) => b.rate - a.rate)
      .slice(0, 5);
  }
}

// Usage
ErrorAnalytics.trackError('ERR_IPB');
console.log('Error rates:', ErrorAnalytics.getTopErrors());

πŸ” Debugging Status Codes

Status Code Logger

class StatusLogger {
  static log(
    functionName: string,
    statusCode: string,
    statusMessage?: string,
    context?: any
  ): void {
    const timestamp = new Date().toISOString();
    const level = this.getLogLevel(statusCode);
    
    console[level](`[${timestamp}] ${functionName}: ${statusCode}`, {
      message: statusMessage,
      context: context
    });
  }
  
  private static getLogLevel(statusCode: string): 'log' | 'warn' | 'error' {
    if (statusCode === 'SUCCESS') return 'log';
    if (statusCode === 'ERR_BNF') return 'warn';
    return 'error';
  }
}

// Usage in functions
const bet = await play({ currency: 'USD', amount: 1.00, mode: 'base' });
StatusLogger.log('play', bet.status?.statusCode || 'NO_STATUS', bet.status?.statusMessage, { amount: 1.00 });

🎯 Best Practices

1. Always Check Status Codes

// βœ… Good
if (response.status?.statusCode === 'SUCCESS') {
  // Handle success
} else {
  // Handle specific error
}

// ❌ Bad
if (response.data) {
  // Assuming success based on data
}

2. Handle Expected vs Unexpected Errors

// βœ… Good - Handle expected errors specifically
switch (response.status?.statusCode) {
  case 'SUCCESS':
    handleSuccess();
    break;
  case 'ERR_IPB':
    handleInsufficientBalance();
    break;
  case 'ERR_IS':
    handleSessionExpired();
    break;
  default:
    handleUnexpectedError(response.status?.statusCode);
}

// ❌ Bad - Generic error handling only
if (response.status?.statusCode !== 'SUCCESS') {
  showGenericError();
}

3. Provide Context-Appropriate Messages

// βœ… Good
function getErrorMessage(statusCode: string, context: string): string {
  const messages = {
    betting: {
      'ERR_IPB': 'You need more balance to place this bet',
      'ERR_GLE': 'This bet exceeds your daily limit'
    },
    authentication: {
      'ERR_IS': 'Please log in again to continue',
      'ERR_ATE': 'Login failed - please check your credentials'
    }
  };
  return messages[context]?.[statusCode] || 'An error occurred';
}

4. Log Errors for Monitoring

// βœ… Good
if (response.status?.statusCode !== 'SUCCESS') {
  console.error('RGS Error:', {
    function: 'play',
    statusCode: response.status.statusCode,
    statusMessage: response.status.statusMessage,
    timestamp: new Date().toISOString()
  });
}

πŸ”— Related Pages

Clone this wiki locally