Sports scheduling API
Create league and tournament schedules by API
Check capacity, create a private preview, and send the $1.45 Checkout URL to the person paying. No account is required.
01
Start with current capabilities
Read /v1/capabilities before each workflow. The response states which formats, limits, price, and effects are currently available.
02
Use the published contract
The versioned OpenAPI document is at /.well-known/openapi.json. Agent guidance is at /llms.txt.
03
Quote the schedule
A quote validates the request and reports whether the games fit. It does not generate a schedule or charge anyone.
curl https://thesportscheduler.com/v1/quotes \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: <unique UUID>' \
--data '{
"kind": "league",
"sport": "soccer",
"format": "round_robin",
"participants": { "count": 6 },
"dateWindow": {
"start": "2026-09-05",
"end": "2026-10-31"
},
"timeZone": "America/New_York",
"resources": { "count": 2 },
"playableWindows": [{
"weekdays": [6],
"startTime": "09:00",
"endTime": "17:00"
}],
"gameDurationMinutes": 60,
"turnoverMinutes": 0,
"maxGamesPerResourcePerDay": 2,
"rounds": 1,
"restPreference": "maximum",
"outputs": ["json", "csv"],
"locale": "en-US"
}'04
Generate one private preview
POST the quote ID and digest to /v1/schedules with the quote bearer and a new idempotency key. The response includes the schedule resource and its read-ticket URL. The schedule data itself is read directly from ScheduleCore.
05
Let the person complete Checkout
POST the schedule ID to /v1/checkout-sessions with the schedule bearer and a new idempotency key. Present the returned Checkout URL to the person. Poll the purchase or schedule until it reports unlocked.
06
Stop Swiss generation after Round 1
A Swiss request uses an even participant count and omits rounds. Later pairings depend on scores, standings, and previous opponents. Later-round pairing is not yet available.
07
Read directly from ScheduleCore
GET the T.S.S. read-ticket URL. The browser then uses that short-lived capability against the returned ScheduleCore origin to read the immutable summary and paged games. Locked tickets allow the first third of the schedule, rounded up and capped at 20 games, plus a PDF preview. An unlocked ticket allows the full schedule and browser-generated PDF, CSV, or JSON downloads.
08
Delete with the schedule bearer
DELETE the schedule URL with the same bearer capability. Access is revoked immediately, private labels are scrubbed, and the authoritative ScheduleCore root is deleted through durable recovery.