Back to Home

Overview

The SharpShield API provides programmatic access to our enterprise risk management platform. Integrate real-time sharp bettor detection, risk scoring, and automated limit management directly into your sportsbook operations.

Key Features


Authentication

All API requests require authentication using API keys. Include your API key in the request header:

HTTP Header
Authorization: Bearer YOUR_API_KEY

Obtaining API Keys

API keys are available through your SharpShield dashboard at app.sharpshield.io/settings/api.

EnvironmentBase URL
Productionhttps://api.sharpshield.io/v1
Sandboxhttps://sandbox.api.sharpshield.io/v1

Rate Limits

PlanRequests/MinuteRequests/Day
Growth10010,000
EnterpriseUnlimitedUnlimited
TitanUnlimitedUnlimited

Rate limit headers are included in all responses:

HTTP Headers
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1703500800

Endpoints

Player Risk Assessment

Analyze Player

Retrieve real-time risk assessment for a player.

POST /players/analyze

Request Body:

JSON
{
  "player_id": "string",
  "external_id": "string (optional)",
  "include_history": true,
  "time_range_days": 30
}

Response:

JSON
{
  "player_id": "pl_abc123",
  "risk_score": 0.87,
  "risk_tier": "HIGH",
  "classification": {
    "is_sharp": true,
    "confidence": 0.92,
    "sharp_indicators": [
      "consistent_clv_positive",
      "steam_move_timing",
      "closing_line_beating"
    ]
  },
  "metrics": {
    "total_bets": 1247,
    "win_rate": 0.548,
    "avg_clv": 3.2,
    "roi": 0.089,
    "avg_stake": 450.00,
    "total_volume": 561150.00
  },
  "recommendations": {
    "suggested_limit": 100.00,
    "current_limit": 500.00,
    "action": "REDUCE_LIMITS"
  },
  "analyzed_at": "2024-12-26T10:30:00Z"
}

Risk Tiers

TierScore RangeDescription
LOW0.00 - 0.30Recreational bettor
MEDIUM0.31 - 0.60Monitor for patterns
HIGH0.61 - 0.85Likely sharp, apply limits
CRITICAL0.86 - 1.00Confirmed sharp, restrict

Get Player Profile

Retrieve comprehensive player profile and history.

GET /players/{player_id}

Response:

JSON
{
  "player_id": "pl_abc123",
  "external_id": "your_internal_id",
  "created_at": "2024-01-15T08:00:00Z",
  "status": "ACTIVE",
  "risk_profile": {
    "current_score": 0.87,
    "tier": "HIGH",
    "last_assessment": "2024-12-26T10:30:00Z"
  },
  "lifetime_stats": {
    "total_bets": 1247,
    "total_wagered": 561150.00,
    "total_won": 612213.50,
    "net_profit": 51063.50,
    "roi": 0.091
  },
  "limits": {
    "current_stake_limit": 100.00,
    "default_stake_limit": 500.00,
    "restricted_markets": ["NFL Spreads", "NBA Moneyline"]
  }
}

Bet Analysis

Submit Bet for Analysis

Analyze a bet in real-time before acceptance.

POST /bets/analyze

Request Body:

JSON
{
  "player_id": "pl_abc123",
  "bet": {
    "type": "SINGLE",
    "stake": 500.00,
    "odds": 1.91,
    "market": {
      "sport": "NFL",
      "event_id": "evt_nfl_123",
      "market_type": "SPREAD",
      "selection": "Kansas City Chiefs -3.5",
      "event_time": "2024-12-29T18:00:00Z"
    }
  },
  "context": {
    "line_movement": -1.5,
    "time_to_event_minutes": 180,
    "current_liability": 15000.00
  }
}

Response:

JSON
{
  "bet_id": "bet_xyz789",
  "analysis": {
    "risk_level": "HIGH",
    "recommendation": "REJECT",
    "reasons": [
      "Player has 87% sharp score",
      "Bet timing correlates with steam move",
      "Selection has significant CLV opportunity"
    ],
    "alternative_actions": [
      {
        "action": "ACCEPT_REDUCED",
        "max_stake": 50.00,
        "rationale": "Limit exposure while maintaining engagement"
      },
      {
        "action": "ACCEPT_ADJUSTED_ODDS",
        "adjusted_odds": 1.85,
        "rationale": "Price in player edge"
      }
    ]
  },
  "market_analysis": {
    "consensus_line": -3.0,
    "your_line": -3.5,
    "sharp_money_direction": "FAVORITE",
    "projected_clv": 2.1
  }
}

Webhooks

Configure Webhook

Register a webhook endpoint for real-time alerts.

POST /webhooks

Request Body:

JSON
{
  "url": "https://your-domain.com/sharpshield/webhook",
  "events": [
    "player.risk_tier_change",
    "player.sharp_detected",
    "bet.suspicious_pattern",
    "alert.liability_threshold"
  ],
  "secret": "your_webhook_secret"
}

Webhook Payload Example:

JSON
{
  "event": "player.sharp_detected",
  "timestamp": "2024-12-26T10:35:00Z",
  "data": {
    "player_id": "pl_abc123",
    "previous_tier": "MEDIUM",
    "new_tier": "HIGH",
    "risk_score": 0.87,
    "trigger_factors": [
      "CLV threshold exceeded",
      "Win rate anomaly detected"
    ]
  },
  "signature": "sha256=..."
}

Available Events

EventDescription
player.risk_tier_changePlayer risk tier upgraded/downgraded
player.sharp_detectedPlayer classified as sharp
player.syndicate_linkPotential syndicate connection detected
bet.suspicious_patternUnusual betting pattern identified
bet.arbitrage_detectedPotential arbitrage bet detected
alert.liability_thresholdEvent liability threshold reached
alert.steam_moveSharp money movement detected

SDKs & Libraries

Official SDKs are available for popular languages:

LanguagePackageInstallation
Pythonsharpshieldpip install sharpshield
Node.js@sharpshield/sdknpm install @sharpshield/sdk
PHPsharpshield/php-sdkcomposer require sharpshield/php-sdk
Javaio.sharpshield:sdkMaven Central

Python Example

Python
from sharpshield import SharpShieldClient

client = SharpShieldClient(api_key="your_api_key")

# Analyze a player
result = client.players.analyze("pl_abc123")
print(f"Risk Score: {result.risk_score}")
print(f"Is Sharp: {result.classification.is_sharp}")

# Submit a bet for analysis
bet_analysis = client.bets.analyze(
    player_id="pl_abc123",
    stake=500.00,
    odds=1.91,
    market="NFL Spread"
)

if bet_analysis.recommendation == "REJECT":
    print("Bet should be rejected")

Node.js Example

JavaScript
const SharpShield = require('@sharpshield/sdk');

const client = new SharpShield({ apiKey: 'your_api_key' });

// Analyze a player
const result = await client.players.analyze('pl_abc123');
console.log(`Risk Score: ${result.riskScore}`);

// Configure webhook
await client.webhooks.create({
  url: 'https://your-domain.com/webhook',
  events: ['player.sharp_detected']
});

Error Handling

All errors follow a consistent format:

JSON
{
  "error": {
    "code": "PLAYER_NOT_FOUND",
    "message": "The requested player does not exist",
    "details": {
      "player_id": "pl_invalid"
    },
    "request_id": "req_abc123"
  }
}

HTTP Status Codes

CodeDescription
200Success
201Created
400Bad Request - Invalid parameters
401Unauthorized - Invalid API key
403Forbidden - Insufficient permissions
404Not Found
429Rate Limit Exceeded
500Internal Server Error

Support

For API support and questions: