API Reference
Reference

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/leagues

Authentication

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

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

League Management

Business Operations

Betting & Markets

Workflows & Automation

Administrative


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:

  1. PDF Extraction (2.3s avg) - Google Vision API extracts questionnaire data
  2. AI Research (156s avg) - OpenAI GPT-4 enhances league data with market intelligence
  3. Scoring (0.8s avg) - Algorithm calculates partnership value and tier classification
  4. Contract Generation (8.2s avg) - Creates 4 contract flavors with pricing
  5. Google Drive (12.5s avg) - Uploads documents and creates organized folder structure
  6. 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

FlavorLengthRevenue ShareFeatures
Conservative12 months0%Basic API access, email support
Balanced24 months5%Full API, priority support, real-time data
Aggressive36 months10%Advanced features, dedicated support
Premium48 months15%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:

CodeDescriptionResolution
E001PDF extraction failedRetry with different OCR settings
E002Research timeoutUse cached/partial data
E003Jira API errorRetry with exponential backoff
E004Google Drive quota exceededAlert ops, pause processing
E005Invalid PDF formatRequest re-upload
E006Low 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 MethodRate LimitBurst Limit
JWT Bearer Token1000/hour100/minute
API Key5000/hour500/minute
OAuth 2.02000/hour200/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: 60

Pagination

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_12345

Filtering & 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-31

Sorting

# 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_events

Versioning

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-31

SDKs & 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

CodeHTTP StatusDescription
VALIDATION_ERROR400Invalid request parameters
AUTHENTICATION_ERROR401Invalid or missing authentication
AUTHORIZATION_ERROR403Insufficient permissions
NOT_FOUND404Resource not found
RATE_LIMIT_EXCEEDED429Rate limit exceeded
INTERNAL_ERROR500Internal server error
SERVICE_UNAVAILABLE503Service 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 system
  • contract.generated - Contract generation completed
  • email.processed - Email processing finished
  • workflow.completed - Workflow execution finished
  • intelligence.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 metadata

Examples

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_questionnaire
  • tier_classification
  • contract_terms
  • negotiation_package
  • unified_output
  • odds_adjustment

Getting Help

  • Status Page: https://status.altsportsleagues.ai
  • Support Email: api-support@altsportsleagues.ai
  • Developer Community: https://community.altsportsleagues.ai

Quick Start

  1. Get API Key: Sign up at altsportsleagues.ai (opens in a new tab)
  2. Test Connection: GET /api/v1/core/health
  3. Explore Data: GET /api/v1/leagues
  4. Try Intelligence: POST /api/v1/intelligence/sports-intelligence

Welcome to the AltSportsLeagues.ai API! πŸš€

Platform

Documentation

Community

Support

partnership@altsportsdata.comdev@altsportsleagues.ai

2025 Β© AltSportsLeagues.ai. Powered by AI-driven sports business intelligence.

πŸ€– AI-Enhancedβ€’πŸ“Š Data-Drivenβ€’βš‘ Real-Time