Response Structure
All API endpoints return JSON responses with appropriate HTTP status codes. Successful responses return200 OK with the requested data, while errors return appropriate error codes with error details.
Success Responses
Standard Success Format
Most endpoints return a JSON object with response-specific fields:- Prediction Response
- Feature Importance
- Driver Comparison
- Race Simulation
- Season Prediction
Error Responses
Error Response Format
Error responses include anerror field with a descriptive message:
HTTP Status Codes
Request succeeded. Response contains requested data.
Server-side error occurred. Common causes:
- ML model not loaded
- Required data files missing
- Race simulation engine error
Common Error Scenarios
Data Types
Primitive Types
Text values, UTF-8 encoded. Examples: driver names, team names, weather conditions.
Whole numbers. Examples: grid positions (1-20), points, wins, laps.
Decimal numbers. Examples: probabilities (0.0-1.0), lap times, time gaps.
True/false values. Examples: DNF status, wet race indicator.
Ordered list of values. Can contain primitives or objects. Examples: driver lists, statistics arrays.
Key-value pairs (JSON object). Examples: driver details, race results.
Enumerated Values
Certain fields accept only specific predefined values:Weather Types
DRY- Sunny/dry conditionsLIGHT_RAIN- Light rainHEAVY_RAIN- Heavy rain/storm conditions
Tire Compounds
SOFT- Soft compound (fastest, high degradation)MEDIUM- Medium compound (balanced)HARD- Hard compound (slowest, low degradation)
Circuit Types
STANDARD- Standard racing circuitSTREET- Street circuit (Monaco-style)FAST- High-speed circuit (Monza-style)DESERT- Desert circuitTECHNICAL- Technical circuit with tight corners
Driver Codes (3-letter)
Red Bull Racing: VER, LAWFerrari: HAM, LEC
McLaren: NOR, PIA
Mercedes: RUS, ANT
Aston Martin: ALO, STR
Alpine: GAS, DOO
Williams: SAI, ALB
Haas: OCO, BEA
Racing Bulls: TSU, HAD
Sauber: HUL, BOR
Complex Response Objects
Driver Result Object
Returned in lap-by-lap race simulations:Final finishing position (1-20)
Driver’s full name
Team/constructor name
Time gap to winner in seconds (0.0 for winner)
Whether driver retired from the race
Lap number where DNF occurred (null if finished)
Tire compounds used during race in order (e.g., [“SOFT”, “MEDIUM”, “HARD”])
Lap numbers where pit stops occurred
Number of laps spent in P1
Position at each lap for position chart visualization
Team color as hex code (e.g., “#1E41FF”)
Notable events for this driver (pit stops, penalties, overtakes)
Championship Standing Object
Returned in season predictions:Driver’s full name
Team name
Total championship points
Number of race victories
Number of top-3 finishes
Number of retirements
Race Result Object
Returned in 2026 season predictions:Race number in championship (1-24)
Grand Prix name
Weather conditions (DRY, LIGHT_RAIN, HEAVY_RAIN)
Race winner’s name
Second place driver
Third place driver
Number of DNFs in this race
Request Headers
No special headers are required for API requests. Standard HTTP headers are sufficient:CORS Policy
The Flask application runs in development mode with default CORS settings. Cross-origin requests may require additional configuration in production environments.Rate Limiting
No rate limiting is currently implemented. The API is designed for local development and testing.For production deployments, consider implementing rate limiting and authentication mechanisms.
Response Times
Endpoint Performance
Fast Endpoints (< 100ms)
/api/predict_v2- Simple model inference/api/feature_importance- Cached feature data/api/simulate_race- Basic randomization
/api/compare- File read + processing/api/season_2026- File read + parsing
/api/lap_race- Full race simulation with 50 laps/api/simulate_championship- Multiple race simulations
Content-Type
All responses haveContent-Type: application/json header.