Python SDK for AltSportsLeagues platform - enabling league owners to get compliant and onboarded with sportsbooks
Project description
AltSportsLeagues Python SDK
The official Python SDK for the AltSportsLeagues platform. Enable league owners to get compliant and onboarded with sportsbooks, and help sportsbooks discover new betting opportunities.
๐ Installation
pip install altsportsleagues
๐ Quick Start
For League Owners
from altsportsleagues import AltSportsLeagues
# Initialize client
client = AltSportsLeagues(api_key="your_api_key_here")
# Create a new league
league = client.create_league({
"league_name": "My Basketball League",
"sport_bucket": "team",
"contact_email": "admin@myleague.com",
"description": "A competitive basketball league for local communities",
"website": "https://mybasketballleague.com",
"location": "San Francisco, CA",
"number_of_teams": 12,
"has_official_rules": True,
"interested_in_betting": True
})
print(f"Created league: {league.league_name}")
print(f"Compliance score: {league.compliance_score}")
# Submit for compliance review and sportsbook onboarding
questionnaire = {
"league_name": "My Basketball League",
"contact_email": "admin@myleague.com",
"sport_bucket": "team",
"has_official_rules": True,
"has_liability_insurance": True,
"interested_in_betting": True
}
result = client.submit_league_questionnaire(questionnaire)
print(f"Onboarding status: {result['status']}")
# Check compliance status
status = client.get_compliance_status(league.league_id)
print(f"Compliance level: {status['compliance_level']}")
# Get recommended sportsbook matches
matches = client.get_sportsbook_matches(league.league_id)
for match in matches:
print(f"Recommended sportsbook: {match['sportsbook_name']} (compatibility: {match['compatibility_score']})")
For Sportsbooks
from altsportsleagues import AltSportsLeagues
# Initialize client
client = AltSportsLeagues(api_key="your_api_key_here")
# Discover new leagues to onboard
leagues = client.get_leagues()
print(f"Found {len(leagues)} leagues")
# Filter by sport type
basketball_leagues = client.get_leagues(sport_type="basketball")
print(f"Found {len(basketball_leagues)} basketball leagues")
# Get detailed league information
for league in basketball_leagues[:5]: # First 5 leagues
detail = client.get_league(league.league_id)
print(f"{detail.league_name} - Compliance: {detail.compliance_score}/100")
print(f" Status: {detail.get_onboarding_progress()}")
# Access historical events for analysis
events = client.get_historical_events("nba", season="2023-2024", limit=100)
print(f"Retrieved {len(events)} NBA events from 2023-2024 season")
# Get betting odds for an upcoming event
odds = client.get_odds("event_123")
for odd in odds:
print(f"{odd.bookmaker}: {odd.market}")
for selection in odd.selections:
print(f" {selection['name']}: {selection['odds']}")
Batch Event Management
# Create events from CSV
result = client.create_events_from_csv("my_events.csv", "my_league_id")
print(f"Created {result['successful']} events, {result['failed']} failed")
# Or create events programmatically
events_data = [
{
"league_id": "nba",
"home_team": "Los Angeles Lakers",
"away_team": "Boston Celtics",
"start_time": "2024-01-15T20:00:00Z",
"venue": "Crypto.com Arena",
"season": "2023-2024"
},
{
"league_id": "nba",
"home_team": "Golden State Warriors",
"away_team": "Miami Heat",
"start_time": "2024-01-16T19:30:00Z",
"venue": "Chase Center",
"season": "2023-2024"
}
]
result = client.create_events_batch(events_data)
print(f"Batch creation result: {result}")
๐ API Reference
Client Initialization
from altsportsleagues import AltSportsLeagues
client = AltSportsLeagues(
api_key="your_api_key",
base_url="https://api.altsportsleagues.ai", # Optional, defaults to production
timeout=30 # Optional, request timeout in seconds
)
League Management
Creating Leagues
league = client.create_league({
"league_name": "My League",
"sport_bucket": "team", # combat, large_field, team, racing, other
"contact_email": "admin@myleague.com",
"description": "League description",
"website": "https://myleague.com",
"location": "City, State",
"number_of_teams": 10,
"interested_in_betting": True
})
Listing Leagues
# All leagues
all_leagues = client.get_leagues()
# Filter by sport type
basketball_leagues = client.get_leagues(sport_type="basketball")
Getting League Details
league = client.get_league("league_id")
print(f"Name: {league.league_name}")
print(f"Compliance Score: {league.compliance_score}")
print(f"Onboarding Status: {league.get_onboarding_progress()}")
Event Management
Creating Events
# Single event creation
event = client.create_event({
"league_id": "nba",
"home_team": "Lakers",
"away_team": "Celtics",
"start_time": "2024-01-15T20:00:00Z",
"venue": "Crypto.com Arena"
})
# Batch creation
events = client.create_events_batch([
{"league_id": "nba", "home_team": "Lakers", "away_team": "Celtics", "start_time": "2024-01-15T20:00:00Z"},
{"league_id": "nba", "home_team": "Warriors", "away_team": "Heat", "start_time": "2024-01-16T19:30:00Z"}
])
Querying Events
# Get upcoming events
upcoming = client.get_events(limit=50)
# Filter by league and date range
nba_events = client.get_events(
league_id="nba",
start_date="2024-01-01",
end_date="2024-12-31",
limit=100
)
# Get historical events
historical = client.get_historical_events("nba", season="2023-2024")
Sports Data
Available Sports
sports = client.get_sports()
for sport in sports:
print(f"{sport.name} ({sport.bucket}) - Popularity: {sport.popularity_score}")
# Get sport classifications
buckets = client.get_sport_buckets()
print(f"Available buckets: {buckets}")
Betting Data (Sportsbooks)
Odds and Markets
# Get odds for a specific event
odds = client.get_odds("event_123")
for odd in odds:
print(f"Bookmaker: {odd.bookmaker}")
print(f"Market: {odd.market}")
print(f"Selections: {odd.selections}")
# Get available markets
markets = client.get_markets()
markets_by_league = client.get_markets(league_id="nba")
Compliance & Onboarding (League Owners)
Submit Questionnaire
questionnaire = {
"league_name": "My League",
"contact_email": "admin@myleague.com",
"sport_bucket": "team",
"has_official_rules": True,
"has_liability_insurance": True,
"has_player_contracts": True,
"interested_in_betting": True,
"preferred_betting_model": "fixed_odds"
}
result = client.submit_league_questionnaire(questionnaire)
Check Compliance Status
status = client.get_compliance_status("league_id")
print(f"Overall Score: {status['overall_score']}/100")
print(f"Compliance Level: {status['compliance_level']}")
print(f"Strengths: {status['strengths']}")
print(f"Gaps: {status['gaps']}")
Get Sportsbook Matches
matches = client.get_sportsbook_matches("league_id")
for match in matches:
print(f"Sportsbook: {match['sportsbook_name']}")
print(f"Compatibility: {match['compatibility_score']}%")
print(f"Requirements: {match['requirements']}")
๐ง Configuration
Environment Variables
Set your API key as an environment variable:
export ALTSPORTSLEAGUES_API_KEY="your_api_key_here"
Programmatic Configuration
import os
from altsportsleagues import AltSportsLeagues
api_key = os.getenv("ALTSPORTSLEAGUES_API_KEY")
client = AltSportsLeagues(api_key=api_key)
๐๏ธ Architecture Overview
Platform Components
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ League Owners โ โ AltSportsLeagues โ โ Sportsbooks โ
โ โ โ Platform โ โ โ
โ โข Submit leaguesโ โ โ โ โข Discover โ
โ โข Compliance โโโโโบโ โข League analysisโโโโโบโ leagues โ
โ โข Onboarding โ โ โข Compliance โ โ โข Access odds โ
โ โข Matchmaking โ โ scoring โ โ โข Data feeds โ
โโโโโโโโโโโโโโโโโโโ โ โข Sportsbook โ โโโโโโโโโโโโโโโโโโโ
โ matching โ
โโโโโโโโโโโโโโโโโโโโ
Data Flow
- League Submission: League owners submit detailed questionnaires
- Compliance Analysis: AI-powered analysis of league readiness
- Sportsbook Matching: Algorithm matches leagues with compatible sportsbooks
- Onboarding: Streamlined process for league-sportsbook integration
- Data Provision: Real-time data feeds for betting markets
๐ Data Models
Core Entities
- League: Sports league information and compliance status
- Event: Individual sporting events with teams, timing, and results
- Sport: Sport classifications and metadata
- Odds: Betting odds from various bookmakers
- ComplianceReport: Detailed compliance assessment results
Sport Buckets
- combat: Fighting sports (MMA, boxing, wrestling)
- large_field: Field sports (football, soccer, baseball)
- team: Team sports (basketball, hockey, volleyball)
- racing: Racing sports (horse racing, auto racing, cycling)
- other: Miscellaneous sports
๐ Security & Compliance
- API Key Authentication: Secure API key-based authentication
- Rate Limiting: Built-in rate limiting and quota management
- Data Privacy: Compliance with sports data privacy regulations
- Audit Logging: Comprehensive logging of all API interactions
๐ฆ Error Handling
The SDK provides specific exception types for different error conditions:
from altsportsleagues import (
AltSportsLeagues,
AuthenticationError,
ValidationError,
RateLimitError,
NotFoundError
)
try:
client = AltSportsLeagues(api_key="invalid_key")
leagues = client.get_leagues()
except AuthenticationError as e:
print(f"Authentication failed: {e}")
except RateLimitError as e:
print(f"Rate limit exceeded. Retry after: {e.retry_after} seconds")
except ValidationError as e:
print(f"Invalid request: {e}")
๐ Rate Limits
- Free Tier: 1,000 requests per month
- Developer Tier: 10,000 requests per month
- Enterprise Tier: Unlimited requests
Rate limit headers are included in all responses:
X-RateLimit-Limit: Request limitX-RateLimit-Remaining: Remaining requestsX-RateLimit-Reset: Reset timestamp
๐ Links
- Homepage: altsportsleagues.ai
- Documentation: docs.altsportsleagues.ai
- API Reference: api.altsportsleagues.ai
- GitHub: github.com/altsportsleagues
๐ค Contributing
We welcome contributions! Please see our Contributing Guide for details.
๐ License
MIT License - see LICENSE file for details.
Built with โค๏ธ by the AltSportsLeagues.ai team
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file altsportsleagues-1.0.0.tar.gz.
File metadata
- Download URL: altsportsleagues-1.0.0.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a1de2364147b5e44c1034bc04403e957e63c7121385fc16039cfbf32bda9b4d
|
|
| MD5 |
8b44c1ea6a0092338fefc834af896c1a
|
|
| BLAKE2b-256 |
98d50d578f46390d654f3974c181d0290a29d9fb0bf573ddd2e881dac76840ea
|
File details
Details for the file altsportsleagues-1.0.0-py3-none-any.whl.
File metadata
- Download URL: altsportsleagues-1.0.0-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0eeed047a6af9e21d366f5021798d2f816108c27f3832ad88726637065fc5d7f
|
|
| MD5 |
af05ca7dda62605424b9865a4e3f15fc
|
|
| BLAKE2b-256 |
bb2ff6ab88895dd02cc37b204cfbb011e4912de84a7adf8282fc6ba9e3c8747b
|