AltSportsLeagues.ai API Reference
Version: v1.0.0 (Production)
Base URL: https://api.altsportsleagues.ai/api/v1/
Complete REST API reference for AltSportsLeagues.ai's comprehensive sports business intelligence platform. The API provides intelligent automation for league partnerships, AI-powered analytics, contract generation, and workflow orchestration.
Quick Start
# Get your API key
curl -X POST https://api.altsportsleagues.ai/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"your-email@domain.com","password":"your-password"}'
# Make your first API call
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.altsportsleagues.ai/api/v1/leaguesAuthentication
All API requests require authentication using JWT tokens:
const headers = {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
'X-API-Version': 'v1'
};Authentication Endpoints
POST /auth/login
Authenticate and receive JWT token.
Request Body:
{
"email": "user@altsportsleagues.ai",
"password": "secure-password"
}Response:
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "bearer",
"expires_in": 3600,
"user": {
"id": "user_123",
"email": "user@altsportsleagues.ai",
"role": "league_admin"
}
}API Architecture
Core Architecture
League Partnership Pipeline Flow
Authentication
The API uses JWT (JSON Web Token) authentication with support for multiple authentication methods:
JWT Bearer Token
Authorization: Bearer <your-jwt-token>API Key (Service Accounts)
X-API-Key: <your-api-key>OAuth 2.0 (Third-party Applications)
Authorization: Bearer <oauth-access-token>API Categories
Core System
- System Health - Health checks and system status
- Core Endpoints - General utility endpoints
- Analytics - System analytics and monitoring
League Partnership Pipeline (Primary)
- Pipeline Processing - League questionnaire processing and partnership evaluation
- Batch Operations - Bulk league processing with concurrent execution
- Pipeline Status - Real-time pipeline execution monitoring
- Pipeline History - Execution history and performance analytics
Intelligence & AI
- Sports Intelligence - AI-powered sports analysis
- Google Drive RAG - Document intelligence and RAG
- Vertex AI - Advanced AI capabilities
League Management
- League Operations - League data and management
- League Opportunities - Partnership opportunities
- Questionnaire Processing - League intake processing
Business Operations
- Contract Generation - Automated contract creation
- Business Intelligence - Business analytics
- Email Processing - Email automation and intelligence
Betting & Markets
- Betting Markets - Betting opportunities and markets
- Market Analysis - Market intelligence
- Live Data - Real-time sports data
Workflows & Automation
- Workflow Orchestration - n8n workflow management
- Batch Processing - Bulk operations
- Pipeline Operations - Data processing pipelines
Administrative
- Admin Tools - Administrative functions
- Data Management - Data operations and maintenance
- Agent Management - AI agent management
League Partnership Pipeline API
The core API for automated league partnership processing, featuring AI-powered document extraction, research enhancement, scoring algorithms, and contract generation.
Pipeline Processing
Process a league partnership questionnaire and generate complete partnership evaluation.
Endpoint: POST /api/v1/pipeline/process
Request:
{
"pdf_path": "gs://bucket/questionnaires/league_questionnaire_cpl.pdf",
"league_name": "Canadian Premier League",
"config": {
"jira_project": "ASD",
"google_drive_parent": "League Partnerships 2025",
"contract_flavors": ["conservative", "balanced", "aggressive", "premium"],
"research_config": {
"budget_usd": 5.0,
"timeout_seconds": 300,
"min_quality": 0.75
}
}
}Response:
{
"status": "success",
"pipeline_id": "pip_abc123",
"results": {
"fingerprint_id": "fpr_xyz789",
"partnership_score": 0.67,
"recommended_tier": "Silver",
"google_drive_folder": "https://drive.google.com/drive/folders/...",
"jira_card": {
"key": "ASD-1234",
"url": "https://altsportsdata.atlassian.net/browse/ASD-1234"
},
"processing_time_seconds": 442,
"total_cost_usd": 2.35
},
"documents": {
"fingerprint_json": "https://drive.google.com/file/d/...",
"contract_doc": "https://docs.google.com/document/d/...",
"contract_flavors_json": "https://drive.google.com/file/d/...",
"scorecard_sheet": "https://docs.google.com/spreadsheets/d/..."
}
}Processing Stages:
- PDF Extraction (2.3s avg) - Google Vision API extracts questionnaire data
- AI Research (156s avg) - OpenAI GPT-4 enhances league data with market intelligence
- Scoring (0.8s avg) - Algorithm calculates partnership value and tier classification
- Contract Generation (8.2s avg) - Creates 4 contract flavors with pricing
- Google Drive (12.5s avg) - Uploads documents and creates organized folder structure
- Jira Integration (3.1s avg) - Creates Epic card with partnership details
SLA: Complete processing in <8 minutes with 99.9% success rate.
Batch Processing
Process multiple league questionnaires concurrently with intelligent resource management.
Endpoint: POST /api/v1/pipeline/batch
Request:
{
"pdf_paths": [
"gs://bucket/questionnaires/*.pdf"
],
"config": {
"max_concurrent": 5,
"jira_project": "ASD",
"google_drive_parent": "League Partnerships 2025"
}
}Response:
{
"status": "completed",
"batch_id": "bat_def456",
"summary": {
"total": 9,
"successful": 9,
"failed": 0,
"total_time_seconds": 1296,
"total_cost_usd": 21.15,
"average_quality": 0.79
},
"results": [
{
"league_name": "Canadian Premier League",
"fingerprint_id": "fpr_xyz789",
"jira_card": "ASD-1234",
"status": "success"
}
],
"report_url": "gs://bucket/reports/batch_20250115.json"
}Concurrency Control: Automatically manages up to 5 concurrent pipelines to optimize resource usage while maintaining SLA compliance.
Pipeline Status Monitoring
Monitor real-time execution status and performance metrics.
Endpoint: GET /api/v1/pipeline/{pipeline_id}"}/status
Response:
{
"pipeline_id": "pip_abc123",
"status": "running",
"stage": "research",
"progress": 0.62,
"stages": {
"extraction": { "status": "completed", "duration_seconds": 2.3 },
"research": { "status": "running", "elapsed_seconds": 98.7 },
"scoring": { "status": "pending" },
"contracts": { "status": "pending" },
"google_drive": { "status": "pending" },
"jira": { "status": "pending" }
},
"estimated_completion_seconds": 203
}Partnership Scoring Algorithm
The API uses a sophisticated weighted scoring algorithm based on five key factors:
interface PartnershipScoring {
// Market opportunity and reach (25% weight)
market_size: number;
// Data completeness and quality (20% weight)
data_quality: number;
// Technical integration readiness (20% weight)
integration_readiness: number;
// Betting market potential (20% weight)
betting_potential: number;
// Strategic alignment (15% weight)
strategic_fit: number;
// Final calculations
overall_score: number; // 0.00-1.00
tier: 'Bronze' | 'Silver' | 'Gold' | 'Platinum';
confidence_level: number; // 0.00-1.00
}Tier Thresholds:
- Platinum: β₯0.80 (Elite partnerships, maximum investment)
- Gold: β₯0.65 (High-value partnerships, significant investment)
- Silver: β₯0.50 (Standard partnerships, moderate investment)
- Bronze: β₯0.35 (Entry-level partnerships, minimal investment)
Contract Generation
Automatically generates four contract flavors based on partnership tier:
Contract Flavors
| Flavor | Length | Revenue Share | Features |
|---|---|---|---|
| Conservative | 12 months | 0% | Basic API access, email support |
| Balanced | 24 months | 5% | Full API, priority support, real-time data |
| Aggressive | 36 months | 10% | Advanced features, dedicated support |
| Premium | 48 months | 15% | White-label, custom integration |
Pricing Algorithm: Base fees range from $100K (Bronze) to $300K (Platinum), with flavor multipliers applied.
Error Handling
The API implements comprehensive error handling with specific error codes:
| Code | Description | Resolution |
|---|---|---|
E001 | PDF extraction failed | Retry with different OCR settings |
E002 | Research timeout | Use cached/partial data |
E003 | Jira API error | Retry with exponential backoff |
E004 | Google Drive quota exceeded | Alert ops, pause processing |
E005 | Invalid PDF format | Request re-upload |
E006 | Low extraction confidence (<85%) | Flag for manual review |
Security & Compliance
Authentication: Service account with granular permissions for each external API.
Data Protection:
- TLS 1.3 encryption in transit
- Google Cloud default encryption at rest
- PII redaction in logs
- SOC 2 compliant audit logging
Rate Limiting: Based on service quotas and cost optimization.
Data Models
League Fingerprint Schema
interface LeagueFingerprint {
fingerprint_id: string;
league_name: string;
sport: string;
source_document: {
filename: string;
uploaded_at: string;
file_size_bytes: number;
};
// Processing state
state: {
extracted_raw: {
confidence_score: number;
extracted_at: string;
fields: Record<string, any>;
};
extracted_enhanced: {
quality_score: number;
enhanced_at: string;
data_quality_report: any;
enhancement_data: any;
};
};
// Partnership evaluation
partnership_score: {
overall_score: number;
tier: string;
calculated_at: string;
components: {
market_size: number;
data_quality: number;
integration_readiness: number;
betting_potential: number;
strategic_fit: number;
};
};
// Generated contracts
contracts: {
conservative: ContractDetails;
balanced: ContractDetails;
aggressive: ContractDetails;
premium: ContractDetails;
};
// External integrations
google_drive: {
folder_id: string;
folder_url: string;
documents: Record<string, string>;
};
jira: {
card_key: string;
card_url: string;
created_at: string;
};
}Pipeline Execution Schema
interface PipelineExecution {
pipeline_id: string;
batch_id?: string;
fingerprint_id: string;
status: 'success' | 'failed' | 'running';
stages: {
extraction: StageMetrics;
research: StageMetrics;
scoring: StageMetrics;
contracts: StageMetrics;
google_drive: StageMetrics;
jira: StageMetrics;
};
total_duration_seconds: number;
total_cost_usd: number;
created_at: string;
completed_at?: string;
}
interface StageMetrics {
status: 'pending' | 'running' | 'completed' | 'failed';
duration_seconds?: number;
cost_usd?: number;
error_message?: string;
}Response Format
All API responses follow a consistent JSON structure:
Success Response
{
"success": true,
"data": { ... },
"metadata": {
"timestamp": "2024-01-01T12:00:00Z",
"request_id": "req_12345",
"version": "v1.0.0"
}
}Error Response
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid input parameters",
"details": { ... },
"suggestion": "Check input format and required fields"
},
"metadata": {
"timestamp": "2024-01-01T12:00:00Z",
"request_id": "req_12345"
}
}Rate Limiting
API requests are rate limited based on authentication method:
| Authentication Method | Rate Limit | Burst Limit |
|---|---|---|
| JWT Bearer Token | 1000/hour | 100/minute |
| API Key | 5000/hour | 500/minute |
| OAuth 2.0 | 2000/hour | 200/minute |
Rate limit headers are included in all responses:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 950
X-RateLimit-Reset: 1640995200
X-RateLimit-Retry-After: 60Pagination
List endpoints support cursor-based pagination:
{
"data": [...],
"pagination": {
"has_more": true,
"next_cursor": "cursor_12345",
"total_count": 1250
}
}Usage:
GET /api/v1/leagues?limit=50&cursor=cursor_12345Filtering & Sorting
Advanced filtering and sorting capabilities:
Filtering
# Simple filter
GET /api/v1/leagues?sport_category=soccer
# Complex filter
GET /api/v1/leagues?sport_category=soccer&status=active&min_events=10
# Date range filter
GET /api/v1/leagues?created_after=2024-01-01&created_before=2024-12-31Sorting
# Single field sort
GET /api/v1/leagues?sort=name
# Multiple field sort
GET /api/v1/leagues?sort=name,-created_at
# Descending sort
GET /api/v1/leagues?sort=-total_eventsVersioning
The API uses URL-based versioning:
- v1 (Current):
https://api.altsportsleagues.ai/api/v1/ - Legacy (Deprecated):
https://api.altsportsleagues.ai/api/
Version headers are included in all responses:
X-API-Version: v1.0.0
X-API-Deprecation-Date: 2025-12-31SDKs & Libraries
Python SDK
from altsportsleagues import Client
client = Client(api_key="your-api-key")
# Get league data
leagues = client.leagues.list(sport_category="soccer")
# Generate contract
contract = client.contracts.generate({
"league_name": "Premier League",
"tier": "premium",
"duration_months": 12
})TypeScript SDK
import { AltSportsLeagues } from '@altsportsleagues/sdk';
const client = new AltSportsLeagues({
apiKey: 'your-api-key'
});
// Async operations
const leagues = await client.leagues.list({
sportCategory: 'soccer'
});
const intelligence = await client.intelligence.query({
query: 'What are the betting trends for NBA?',
stream: true
});cURL Examples
# Health check
curl -X GET "https://api.altsportsleagues.ai/api/v1/core/health" \
-H "Authorization: Bearer your-jwt-token"
# List leagues
curl -X GET "https://api.altsportsleagues.ai/api/v1/leagues" \
-H "Authorization: Bearer your-jwt-token" \
-H "Content-Type: application/json"
# Create contract
curl -X POST "https://api.altsportsleagues.ai/api/v1/business/contracts/generate" \
-H "Authorization: Bearer your-jwt-token" \
-H "Content-Type: application/json" \
-d '{
"league_name": "Canadian Premier League",
"tier": "premium",
"duration_months": 12
}'Error Codes
| Code | HTTP Status | Description |
|---|---|---|
VALIDATION_ERROR | 400 | Invalid request parameters |
AUTHENTICATION_ERROR | 401 | Invalid or missing authentication |
AUTHORIZATION_ERROR | 403 | Insufficient permissions |
NOT_FOUND | 404 | Resource not found |
RATE_LIMIT_EXCEEDED | 429 | Rate limit exceeded |
INTERNAL_ERROR | 500 | Internal server error |
SERVICE_UNAVAILABLE | 503 | Service temporarily unavailable |
Webhooks
The API supports webhooks for real-time notifications:
Webhook Configuration
{
"url": "https://your-app.com/webhook",
"events": ["league.created", "contract.generated", "email.processed"],
"secret": "your-webhook-secret"
}Supported Events
league.created- New league added to systemcontract.generated- Contract generation completedemail.processed- Email processing finishedworkflow.completed- Workflow execution finishedintelligence.updated- AI insights updated
Testing
Sandbox Environment
# Use sandbox for testing
curl -X GET "https://sandbox-api.altsportsleagues.ai/api/v1/core/health"Test Data
The sandbox environment includes test data for all endpoints:
- Sample leagues and partnerships
- Mock betting markets and odds
- Test contracts and agreements
- Sample email processing scenarios
Support
Documentation
- API Explorer: Interactive API documentation at
/api/docs - OpenAPI Spec: Download at
/api/openapi.json - Postman Collection: Available in
/api/postman
Data Schemas
AltSportsLeagues.ai uses comprehensive, validated schemas for all data structures. All schemas are available in multiple formats (TypeScript, Python, JSON Schema) and include full type validation.
League Questionnaire Schema
Used for initial league assessment and onboarding.
TypeScript Interface:
interface LeagueQuestionnaire {
league_name: string; // Official league name
sport_type: string; // Type of sport
contact_name: string; // Primary contact person
contact_email: string; // Contact email address
contact_title?: string; // Job title (optional)
participant_count: number; // Number of teams/participants
fan_base_size: number; // Estimated fan base
geographic_scope: string; // Local, regional, national, international
years_operating: number; // Years in operation
has_api: boolean; // API availability
budget_range: string; // premium, standard, budget
partnership_goals: string[]; // Array of partnership objectives
data_quality_score?: number; // Auto-calculated quality score
}Example Usage:
const questionnaire: LeagueQuestionnaire = {
league_name: "Elite Soccer League",
sport_type: "soccer",
contact_name: "John Smith",
contact_email: "john@esl.com",
contact_title: "VP Business Development",
participant_count: 32,
fan_base_size: 2000000,
geographic_scope: "international",
years_operating: 8,
has_api: true,
budget_range: "premium",
partnership_goals: ["sponsorship", "broadcasting", "merchandise"]
};Tier Classification Schema
Automatically classifies leagues into partnership tiers.
interface TierClassification {
league_id: string;
tier: "platinum" | "gold" | "silver" | "bronze";
score: number; // 0.80-1.00 = Platinum
market_size_score: number; // Geographic coverage (25% weight)
data_quality_score: number; // Data completeness (20% weight)
integration_score: number; // Technical readiness (20% weight)
betting_potential_score: number; // Revenue potential (20% weight)
strategic_fit_score: number; // Partnership alignment (15% weight)
confidence_level: number; // AI confidence in classification
recommended_actions: string[]; // Next steps for the league
classification_date: string; // ISO timestamp
}Contract Terms Schema
Defines partnership contract structures and terms.
interface ContractTerms {
contract_id: string;
league_id: string;
partner_id: string;
contract_type: "sponsorship" | "broadcasting" | "data_licensing" | "merchandise";
tier: "platinum" | "gold" | "silver" | "bronze";
flavor: "conservative" | "balanced" | "aggressive" | "premium";
duration_months: number; // 12, 24, 36, or 48
revenue_share_percentage: number; // 0%, 5%, 10%, or 15%
base_fee: number; // Base contract value
total_value: number; // Calculated total contract value
deliverables: ContractDeliverable[];
payment_terms: PaymentTerms;
termination_clauses: TerminationClause[];
effective_date: string;
expiration_date: string;
}
interface ContractDeliverable {
id: string;
type: string;
description: string;
quantity?: number;
frequency?: string;
quality_standards: string[];
}Negotiation Package Schema
Bundles partnership proposals and negotiation materials.
interface NegotiationPackage {
package_id: string;
league_id: string;
partner_id: string;
status: "draft" | "sent" | "negotiating" | "accepted" | "rejected";
proposal_date: string;
contract_terms: ContractTerms;
market_analysis: MarketAnalysis;
competitive_intelligence: CompetitiveIntelligence;
financial_projections: FinancialProjection[];
risk_assessment: RiskAssessment;
negotiation_history: NegotiationEvent[];
next_steps: string[];
}
interface MarketAnalysis {
market_size: number;
growth_rate: number;
competitive_landscape: string;
target_demographics: DemographicProfile;
revenue_potential: RevenueProjection;
}Output Unified Schema
Consolidated league intelligence and partnership data.
interface UnifiedOutput {
league_id: string;
questionnaire: LeagueQuestionnaire;
tier_classification: TierClassification;
market_intelligence: MarketIntelligence;
partnership_opportunities: PartnershipOpportunity[];
risk_profile: RiskProfile;
financial_projections: FinancialProjection;
technical_readiness: TechnicalReadiness;
last_updated: string;
data_quality_score: number;
intelligence_confidence: number;
}Schema Validation
All API endpoints validate input data against these schemas:
// Automatic validation on API calls
app.post('/api/v1/leagues/questionnaire', async (req, res) => {
try {
const questionnaire = LeagueQuestionnaireSchema.parse(req.body);
// Data is now validated and typed
await processQuestionnaire(questionnaire);
res.json({ success: true });
} catch (error) {
res.status(400).json({
error: 'Validation failed',
details: error.errors
});
}
});Schema Injection
Our documentation supports dynamic schema injection using the {{schema:name}} syntax. This automatically pulls the latest schema definitions and formats them for display.
Schema Injection Syntax
{{schema:schemaName}} # Inject TypeScript interface (default)
{{schema:schemaName(format=python)}} # Inject Python Pydantic model
{{schema:schemaName(format=json)}} # Inject JSON schema
{{schema:schemaName(showExamples=true)}} # Include usage examples
{{schema:schemaName(showValidation=true)}} # Include validation rules
{{schema:schemaName(includeMetadata=true)}} # Include schema metadataExamples
League Questionnaire Schema
Schema documentation available - see data layer schemas for full TypeScript/Python definitions
Contract Terms Schema (Python)
Schema documentation available - see data layer schemas for full TypeScript/Python definitions
Tier Classification Schema (JSON)
Schema documentation available - see data layer schemas for full TypeScript/Python definitions
Odds Adjustment Action Schema
Schema documentation available - see data layer schemas for full TypeScript/Python definitions
β Schema successfully generated and distributed to backend/frontend applications
Schema Downloads
Download schemas in your preferred format:
- TypeScript:
GET /api/v1/schemas/{schemaName}.ts - Python (Pydantic):
GET /api/v1/schemas/{schemaName}.py - JSON Schema:
GET /api/v1/schemas/{schemaName}.json
Available schemas:
league_questionnairetier_classificationcontract_termsnegotiation_packageunified_outputodds_adjustment
Getting Help
- Status Page:
https://status.altsportsleagues.ai - Support Email:
api-support@altsportsleagues.ai - Developer Community:
https://community.altsportsleagues.ai
Quick Start
- Get API Key: Sign up at altsportsleagues.ai (opens in a new tab)
- Test Connection:
GET /api/v1/core/health - Explore Data:
GET /api/v1/leagues - Try Intelligence:
POST /api/v1/intelligence/sports-intelligence
Welcome to the AltSportsLeagues.ai API! π