Stop hand-coding tournament schedules. One API call, fair and conflict-free.
Send your teams, venues, and constraints; get back a fair, conflict-free round-robin schedule -- or, if one isn't possible, exactly which constraint is the problem.
curl -X POST https://leaguesolver-api.fly.dev/v1/schedules/league \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"teams": [
{
"id": "tigers",
"home_venue": "venue_a"
},
{
"id": "lions",
"home_venue": "venue_b"
},
{
"id": "hawks",
"home_venue": "venue_a"
}
],
"venues": [
{
"id": "venue_a",
"available_slots": [
"2026-08-01T10:00",
"2026-08-08T10:00",
"2026-08-15T10:00"
]
},
{
"id": "venue_b",
"available_slots": [
"2026-08-02T10:00",
"2026-08-09T10:00",
"2026-08-16T10:00"
]
}
],
"format": "round_robin",
"rounds": 1,
"constraints": {
"max_games_per_team_per_week": 1,
"min_rest_days": 5,
"balance_home_away": true
},
"objective": "minimize_schedule_length"
}'Why LeagueSolver
Correct, constraint-based scheduling
A CP-SAT model enforces no venue double-booking, no same-team time overlap, and full round-robin coverage, while balancing home/away games and rest days.
Never a bare "no solution"
When a schedule truly isn't possible, LeagueSolver re-solves with relaxed constraints to pinpoint exactly which one is conflicting -- e.g. "venue_b does not have enough available slots" -- instead of leaving you to guess.
One API call
POST your teams, venues, and constraints to /v1/schedules/league and get a complete schedule back in seconds -- no dashboard or setup required.
Get started free
No credit card required. 50 solves/month, up to 8 teams.